Как я могу использовать переменные / параметры задания PDI для целочисленных параметров шага? - PullRequest
0 голосов
/ 23 января 2019

Я написал собственный плагин шага для 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, но при подтверждении диалоговое окно не будет выполнено, поскольку строка не может быть проанализирована в целое число. Значение заменяется только фактическим значением параметра во время выполнения задания, и мы не можем сохранить строку параметра задания в параметре шага.

Я что-то упустил? Можно ли даже использовать переменные / параметры задания для нестроковых параметров шага? Возможно, я могу переключить все параметры шага в строку и анализировать целочисленное значение только во время выполнения, когда строки начинают проходить. Но тогда почему чайник даже поддерживает нестандартные параметры шага?

...