Как Talend обрабатывает изменения работы во время выполнения?

1

Как я знаю, когда мы создаем проект в talend, он создает три файла: project_name.item, project_name.properties и project_name.java. Когда мы добавляем компонент в проект, параметры для этого компонента берутся из файла component_java.xml. Когда мы укажем значения параметров для этого компонента и сохраним задание, он будет автоматически добавлен в файл элемента. Например, типичный файл _java.xml для компонента tMap выглядит следующим образом.

<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, кроме метаданных, nodedata (следовательно, inputTables, outputTables и т.д.), Которые генерируются во время выполнения. Все, что мне нужно знать, это то, как talend генерирует эту часть и заполняет то же самое в файле.item во время выполнения? На самом деле мне нужно знать, как метаданные генерируются в.item файле для любого компонента. Мое требование - я хочу сгенерировать файл.item из файла _java.xml компонента. Я не могу генерировать часть метаданных в.item файле, просто просматривая файл _java.xml компонента.

  • 0
    Вы должны проверить текст задания, с помощью которого вы можете генерировать задания календаря через пакет.
  • 0
    Можете ли вы быть более ясным о том, что вы имеете в виду под термином jobScript?
Показать ещё 1 комментарий
Теги:
talend

1 ответ

4

Проекты TOS (репозиторий, метаданные, элементы...) используются только для проектирования заданий (например, графических gui и wizards), а не для их выполнения.

Когда задание выполняется или экспортируется, выполняется откат параметризованных файлов javajet. Код Javajet выводит регулярные.java файлы, где параметры компонента уже разрешены. Этот код.java, в свою очередь, скомпилирован и упакован в файл.jar, который в свою очередь выполняется.

Другими словами, все, сидящие на стороне javajet, не могут быть установлены во время выполнения, но только во время компиляции.

Кроме того, вы не можете использовать параметр * _java.xml для низкоуровневых параметров проекта, так как это схема метаданных для когенератора для подачи параметров в javajet. Это файл свойств для компонента, а не сама работа.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню