传出的字段没有显示在pentaho插件中

问题描述 投票:0回答:1

我为pentaho创建了一个步骤插件,它提供了一些输出字段。它从前面的步骤中获取2个输入字段,添加一些元数据和输出字段。虽然输出被发送到下一步但是当我右键单击并单击输出字段时,它只显示前面步骤中的字段和值,而不是我创建的步骤插件。下面是Meta类的Java代码。

import org.eclipse.swt.widgets.Shell;
import org.pentaho.di.core.annotations.Step;
import org.pentaho.di.core.exception.KettleStepException;
import org.pentaho.di.core.row.RowMeta;
import org.pentaho.di.core.row.RowMetaInterface;
import org.pentaho.di.core.row.ValueMeta;
import org.pentaho.di.core.row.ValueMetaInterface;
import org.pentaho.di.core.variables.VariableSpace;
import org.pentaho.di.repository.Repository;
import org.pentaho.di.trans.Trans;
import org.pentaho.di.trans.TransMeta;
import org.pentaho.di.trans.step.*;
import org.pentaho.metastore.api.IMetaStore;


@Step(
        id = "FlatJson",
        image = "com/cxps/flatjson/steps/resources/demo.svg",
        i18nPackageName = "com.cxps.flatjson",
        name = "FlatJson.name",
        description = "FlatJson.description",
        categoryDescription = "i18n:org.pentaho.di.trans.step:BaseStep.Category.Transform"
)
public class FlatJsonMeta extends BaseStepMeta implements StepMetaInterface {
    public FlatJsonMeta() {
        super();
    }

    @Override
    public void setDefault() {

    }

    @Override
    public StepInterface getStep(StepMeta stepMeta, StepDataInterface sdi, int i, TransMeta transMeta, Trans trans) {
        return new FlatJson(stepMeta, sdi, i, transMeta, trans);
    }

    @Override
    public StepDataInterface getStepData() {
        return new FlatJsonData();
    }

    public StepDialogInterface getDialog(Shell shell, StepMetaInterface smi, TransMeta transMeta, String name) {
        return new FlatJsonDialog(shell, smi, transMeta, name);
    }

    @Override
    public void getFields(RowMetaInterface r, String origin, RowMetaInterface[] info, StepMeta nextStep, VariableSpace space, Repository repository, IMetaStore metaStore) throws KettleStepException {
        //RowMetaInterface fields = new RowMeta();
        //fields.addRowMeta(r);


        super.getFields(r, origin, info, nextStep, space, repository, metaStore);
    }

    @Override
    public Object clone() {
        FlatJsonMeta retVal = (FlatJsonMeta) super.clone();
        return retVal;
    }
}

这是我的插件的Spoon视图,它不显示输出字段。

enter image description here

java kettle pentaho-spoon pentaho-data-integration spoon
1个回答
1
投票

方法getFields()负责显示步骤(或插件)的输出字段。在你的代码中,这个方法只是调用super();这就是为什么它不显示那些是你的逻辑结果的字段。

您需要实现此方法以显示字段。您可以从示例TableInput步骤中获取现有步骤的参考。

您可以在pentaho位置的pentaho git存储库中找到源代码。

水壶/发动机/ src目录/主/ JAVA /组织/ Pentaho的/ DI /反/措施/ tableinput / TableInputMeta.java

© www.soinside.com 2019 - 2024. All rights reserved.