【发布时间】:2014-12-02 11:31:52
【问题描述】:
据我所知,当我们在 talend 中创建项目时,它会创建三个文件,即 project_name.item、project_name.properties 和 project_name.java。当我们向项目中添加一个组件时,该组件的参数取自 component_java.xml 文件。当我们为该组件指定参数值并保存作业时,它将自动添加到项目文件中。例如,tMap 组件的典型 _java.xml 文件如下所示。
<COMPONENT>
<HEADER PLATEFORM="ALL"
SERIAL=""
VERSION="2.1"
STATUS="ALPHA"
COMPATIBILITY="WIN32"
AUTHOR="Talend"
RELEASE_DATE="20070703A"
STARTABLE="false"
EXTENSION="org.talend.designer.mapper"
SCHEMA_AUTO_PROPAGATE="false"
DATA_AUTO_PROPAGATE="false"
HAS_CONDITIONAL_OUTPUTS="true"
PARTITIONING="AUTO"
>
<SIGNATURE></SIGNATURE>
</HEADER>
<FAMILIES>
<FAMILY>Processing</FAMILY>
</FAMILIES>
<DOCUMENTATION>
<URL/>
</DOCUMENTATION>
<CONNECTORS>
<CONNECTOR BUILTIN="true" CTYPE="FLOW" MIN_INPUT="1" MIN_OUTPUT="1"/>
<CONNECTOR CTYPE="LOOKUP" COMPONENT="tAdvancedHash"/>
<CONNECTOR CTYPE="ITERATE" MAX_OUTPUT="0" MAX_INPUT="0"/>
<CONNECTOR CTYPE="SUBJOB_OK" MAX_INPUT="0"/>
<CONNECTOR CTYPE="SUBJOB_ERROR" MAX_INPUT="0"/>
<CONNECTOR CTYPE="COMPONENT_OK" MAX_OUTPUT="0"/>
<CONNECTOR CTYPE="COMPONENT_ERROR" MAX_OUTPUT="0"/>
<CONNECTOR CTYPE="RUN_IF" MAX_OUTPUT="0"/>
</CONNECTORS>
<PARAMETERS>
<PARAMETER NAME="MAP" FIELD="EXTERNAL" NUM_ROW="1">
<DEFAULT/>
</PARAMETER>
<PARAMETER
NAME="LINK_STYLE"
FIELD="CLOSED_LIST"
NUM_ROW="1"
>
<ITEMS DEFAULT="">
<ITEM NAME="AUTO" VALUE="AUTO" />
<ITEM NAME="BEZIER_CURVE" VALUE="BEZIER_CURVE" />
<ITEM NAME="LINE" VALUE="LINE" />
</ITEMS>
</PARAMETER>
<PARAMETER NAME="TEMPORARY_DATA_DIRECTORY" FIELD="DIRECTORY"
NUM_ROW="2" GROUP="STORE_ON_DISK"
>
<!--<DEFAULT>"__COMP_DEFAULT_FILE_DIR__/temp"</DEFAULT>
--></PARAMETER>
<PARAMETER NAME="PREVIEW" FIELD="IMAGE" SHOW="true" NUM_ROW="4">
<DEFAULT/>
</PARAMETER>
<PARAMETER
NAME="DIE_ON_ERROR"
FIELD="CHECK"
NUM_ROW="100"
SHOW="false"
>
<DEFAULT>true</DEFAULT>
</PARAMETER>
<PARAMETER
NAME="LKUP_PARALLELIZE"
FIELD="CHECK"
NUM_ROW="100"
SHOW="false"
>
<DEFAULT>false</DEFAULT>
</PARAMETER>
</PARAMETERS>
<ADVANCED_PARAMETERS>
<PARAMETER NAME="ROWS_BUFFER_SIZE" FIELD="TEXT"
REQUIRED="true" NUM_ROW="1" SHOW="true" GROUP="STORE_ON_DISK"
>
<DEFAULT>2000000</DEFAULT>
</PARAMETER>
<PARAMETER
NAME="CHANGE_HASH_AND_EQUALS_FOR_BIGDECIMAL"
FIELD="CHECK"
NUM_ROW="10"
>
<DEFAULT>false</DEFAULT>
</PARAMETER>
</ADVANCED_PARAMETERS>
<CODEGENERATION>
<TEMPLATES INPUT="TMAP_OUT" OUTPUT="TMAP_IN">
<TEMPLATE NAME="TMAP_OUT" COMPONENT="tMapOut">
<LINK_TO NAME="TMAP_IN" CTYPE="ROWS_END"/>
</TEMPLATE>
<TEMPLATE NAME="TMAP_IN" COMPONENT="tMapIn"/>
</TEMPLATES>
</CODEGENERATION>
<RETURNS/>
<PLUGINDEPENDENCIES>
<PLUGINDEPENDENCY ID="org.talend.designer.abstractmap" />
</PLUGINDEPENDENCIES>
</COMPONENT>
project_name.item 文件看起来像这样(我只展示了组件部分)
<node componentName="tMap" componentVersion="2.1" offsetLabelX="0" offsetLabelY="0" posX="352" posY="64">
<elementParameter field="TEXT" name="UNIQUE_NAME" value="tMap_1"/>
<elementParameter field="EXTERNAL" name="MAP" value=""/>
<elementParameter field="CLOSED_LIST" name="LINK_STYLE" value="AUTO"/>
<elementParameter field="DIRECTORY" name="TEMPORARY_DATA_DIRECTORY" value=""/>
<elementParameter field="IMAGE" name="PREVIEW" value="_xpwnoHOoEeSkDJ1bbi1FTg-tMap_1-PREVIEW.bmp"/>
<elementParameter field="CHECK" name="DIE_ON_ERROR" value="true"/>
<elementParameter field="CHECK" name="LKUP_PARALLELIZE" value="false"/>
<elementParameter field="TEXT" name="ROWS_BUFFER_SIZE" value="2000000"/>
<elementParameter field="CHECK" name="CHANGE_HASH_AND_EQUALS_FOR_BIGDECIMAL" value="false"/>
<elementParameter field="TEXT" name="CONNECTION_FORMAT" value="row"/>
<elementParameter field="CHECK" name="INFORMATION" value="false"/>
<elementParameter field="MEMO" name="COMMENT" value=""/>
<elementParameter field="CHECK" name="VALIDATION_RULES" value="false"/>
<metadata connector="FLOW" label="out1" name="out1">
<column comment="" key="false" name="newColumn_1" nullable="true" originalDbColumnName="newColumn" pattern="" sourceType="" type="id_String" usefulColumn="true"/>
<column comment="" key="false" name="newColumn" nullable="true" pattern="" sourceType="" type="id_String" usefulColumn="true"/>
</metadata>
<nodeData xsi:type="MapperData">
<uiProperties shellMaximized="true"/>
<varTables sizeState="INTERMEDIATE" name="Var"/>
<outputTables sizeState="INTERMEDIATE" name="out1">
<mapperTableEntries name="newColumn_1" expression="row1.newColumn " type="id_String" nullable="true"/>
<mapperTableEntries name="newColumn" expression="row1.newColumn1 " type="id_String" nullable="true"/>
</outputTables>
<inputTables sizeState="INTERMEDIATE" name="row1" matchingMode="UNIQUE_MATCH" lookupMode="LOAD_ONCE">
<mapperTableEntries name="newColumn" type="id_String" nullable="true"/>
<mapperTableEntries name="newColumn1" type="id_String" nullable="true"/>
</inputTables>
</nodeData>
</node>
如果我们清楚地看到 .item 文件中的所有参数均取自 tMap_java.xml 文件,但元数据、节点数据(因此输入表、输出表等)除外,它们是在运行时生成的。我只需要知道 talend 如何生成这部分并在运行时将其填充到 .item 文件中?事实上,我需要知道如何在 .item 文件中为任何组件生成元数据。我的要求是我想使用组件的 _java.xml 文件生成一个 .item 文件。仅通过查看组件的 _java.xml 文件,我无法在 .item 文件中生成元数据部分。
【问题讨论】:
-
你应该检查jobscript,你可以通过批处理生成talend作业。
-
你能更清楚你所说的jobscript是什么意思吗?
-
它是 talend Enterprise 的一项功能,让您无需使用 GUI 即可创建工作。我知道的就这些,我没用过。