Я написал собственный плагин шага для PDI и хочу использовать переменные / параметры задания (к которым можно получить доступ, например, через ${divisor}
) для целочисленного входного параметра шага. Когда я пытаюсь сделать это как со встроенными плагинами, я получаю сообщение об ошибке «Невозможно открыть диалоговое окно для этого шага: для входной строки« $ {divisor} »».
Я адаптировал свой пошаговый плагин из официального демо-пошагового плагина и подтвердил, что шаг обычно работает, если все входные параметры шага имеют жесткие значения.
Рассматриваемый целочисленный параметр определен как int в Meta-классе и имеет соответствующие методы получения / установки и, например, инициализируется через его представление XML.
В классе Dialog параметр представлен в виде текстового поля, значение которого анализируется как целое число, когда диалог подтверждается, и значения записываются в экземпляр класса Meta.
Выдержка из TimeMappingMeta.java
public class TimeMappingMeta extends BaseStepMeta implements StepMetaInterface {
private int divisor;
public void loadXML(Node stepnode, List<DatabaseMeta> databases, IMetaStore metaStore) throws KettleXMLException {
setDivisor(Integer.parseInt(XMLHandler.getNodeValue(XMLHandler.getSubNode(stepnode, "divisor"))));
}
}
Выдержка из TimeMappingDialog.java
public class TimeMappingDialog extends BaseStepDialog implements StepDialogInterface {
private Text wDivisor;
private void populateDialog() {
wDivisor.setText("" + meta.getDivisor());
}
private void ok() {
meta.setDivisor(Integer.parseInt(wDivisor.getText()));
}
}
Проблема теперь в том, что строка параметра / переменной задания ${divisor}
может быть введена в поле для параметра шага TimeMappingMeta.divisor
, но при подтверждении диалоговое окно не будет выполнено, поскольку строка не может быть проанализирована в целое число. Значение заменяется только фактическим значением параметра во время выполнения задания, и мы не можем сохранить строку параметра задания в параметре шага.
Я что-то упустил? Можно ли даже использовать переменные / параметры задания для нестроковых параметров шага? Возможно, я могу переключить все параметры шага в строку и анализировать целочисленное значение только во время выполнения, когда строки начинают проходить. Но тогда почему чайник даже поддерживает нестандартные параметры шага?