| <?xml version="1.0" encoding="UTF-8"?> |
| <pipeline> |
| <info> |
| <name>example e4x - dialog</name> |
| <description/> |
| <extended_description/> |
| <trans_version/> |
| <trans_type>Normal</trans_type> |
| <trans_status>0</trans_status> |
| <directory>/</directory> |
| <parameters> |
| </parameters> |
| <log> |
| <pipeline-log-table> |
| <connection/> |
| <schema/> |
| <table/> |
| <size_limit_lines/> |
| <interval/> |
| <timeout_days/> |
| <field> |
| <id>ID_BATCH</id> |
| <enabled>Y</enabled> |
| <name>ID_BATCH</name> |
| </field> |
| <field> |
| <id>CHANNEL_ID</id> |
| <enabled>N</enabled> |
| <name>CHANNEL_ID</name> |
| </field> |
| <field> |
| <id>TRANSNAME</id> |
| <enabled>Y</enabled> |
| <name>TRANSNAME</name> |
| </field> |
| <field> |
| <id>STATUS</id> |
| <enabled>Y</enabled> |
| <name>STATUS</name> |
| </field> |
| <field> |
| <id>LINES_READ</id> |
| <enabled>Y</enabled> |
| <name>LINES_READ</name> |
| <subject/> |
| </field> |
| <field> |
| <id>LINES_WRITTEN</id> |
| <enabled>Y</enabled> |
| <name>LINES_WRITTEN</name> |
| <subject/> |
| </field> |
| <field> |
| <id>LINES_UPDATED</id> |
| <enabled>Y</enabled> |
| <name>LINES_UPDATED</name> |
| <subject/> |
| </field> |
| <field> |
| <id>LINES_INPUT</id> |
| <enabled>Y</enabled> |
| <name>LINES_INPUT</name> |
| <subject/> |
| </field> |
| <field> |
| <id>LINES_OUTPUT</id> |
| <enabled>Y</enabled> |
| <name>LINES_OUTPUT</name> |
| <subject/> |
| </field> |
| <field> |
| <id>LINES_REJECTED</id> |
| <enabled>N</enabled> |
| <name>LINES_REJECTED</name> |
| <subject/> |
| </field> |
| <field> |
| <id>ERRORS</id> |
| <enabled>Y</enabled> |
| <name>ERRORS</name> |
| </field> |
| <field> |
| <id>STARTDATE</id> |
| <enabled>Y</enabled> |
| <name>STARTDATE</name> |
| </field> |
| <field> |
| <id>ENDDATE</id> |
| <enabled>Y</enabled> |
| <name>ENDDATE</name> |
| </field> |
| <field> |
| <id>LOGDATE</id> |
| <enabled>Y</enabled> |
| <name>LOGDATE</name> |
| </field> |
| <field> |
| <id>DEPDATE</id> |
| <enabled>Y</enabled> |
| <name>DEPDATE</name> |
| </field> |
| <field> |
| <id>REPLAYDATE</id> |
| <enabled>Y</enabled> |
| <name>REPLAYDATE</name> |
| </field> |
| <field> |
| <id>LOG_FIELD</id> |
| <enabled>N</enabled> |
| <name>LOG_FIELD</name> |
| </field> |
| <field> |
| <id>EXECUTING_SERVER</id> |
| <enabled>N</enabled> |
| <name>EXECUTING_SERVER</name> |
| </field> |
| <field> |
| <id>EXECUTING_USER</id> |
| <enabled>N</enabled> |
| <name>EXECUTING_USER</name> |
| </field> |
| <field> |
| <id>CLIENT</id> |
| <enabled>N</enabled> |
| <name>CLIENT</name> |
| </field> |
| </pipeline-log-table> |
| <perf-log-table> |
| <connection/> |
| <schema/> |
| <table/> |
| <interval/> |
| <timeout_days/> |
| <field> |
| <id>ID_BATCH</id> |
| <enabled>Y</enabled> |
| <name>ID_BATCH</name> |
| </field> |
| <field> |
| <id>SEQ_NR</id> |
| <enabled>Y</enabled> |
| <name>SEQ_NR</name> |
| </field> |
| <field> |
| <id>LOGDATE</id> |
| <enabled>Y</enabled> |
| <name>LOGDATE</name> |
| </field> |
| <field> |
| <id>TRANSNAME</id> |
| <enabled>Y</enabled> |
| <name>TRANSNAME</name> |
| </field> |
| <field> |
| <id>STEPNAME</id> |
| <enabled>Y</enabled> |
| <name>STEPNAME</name> |
| </field> |
| <field> |
| <id>STEP_COPY</id> |
| <enabled>Y</enabled> |
| <name>STEP_COPY</name> |
| </field> |
| <field> |
| <id>LINES_READ</id> |
| <enabled>Y</enabled> |
| <name>LINES_READ</name> |
| </field> |
| <field> |
| <id>LINES_WRITTEN</id> |
| <enabled>Y</enabled> |
| <name>LINES_WRITTEN</name> |
| </field> |
| <field> |
| <id>LINES_UPDATED</id> |
| <enabled>Y</enabled> |
| <name>LINES_UPDATED</name> |
| </field> |
| <field> |
| <id>LINES_INPUT</id> |
| <enabled>Y</enabled> |
| <name>LINES_INPUT</name> |
| </field> |
| <field> |
| <id>LINES_OUTPUT</id> |
| <enabled>Y</enabled> |
| <name>LINES_OUTPUT</name> |
| </field> |
| <field> |
| <id>LINES_REJECTED</id> |
| <enabled>Y</enabled> |
| <name>LINES_REJECTED</name> |
| </field> |
| <field> |
| <id>ERRORS</id> |
| <enabled>Y</enabled> |
| <name>ERRORS</name> |
| </field> |
| <field> |
| <id>INPUT_BUFFER_ROWS</id> |
| <enabled>Y</enabled> |
| <name>INPUT_BUFFER_ROWS</name> |
| </field> |
| <field> |
| <id>OUTPUT_BUFFER_ROWS</id> |
| <enabled>Y</enabled> |
| <name>OUTPUT_BUFFER_ROWS</name> |
| </field> |
| </perf-log-table> |
| <channel-log-table> |
| <connection/> |
| <schema/> |
| <table/> |
| <timeout_days/> |
| <field> |
| <id>ID_BATCH</id> |
| <enabled>Y</enabled> |
| <name>ID_BATCH</name> |
| </field> |
| <field> |
| <id>CHANNEL_ID</id> |
| <enabled>Y</enabled> |
| <name>CHANNEL_ID</name> |
| </field> |
| <field> |
| <id>LOG_DATE</id> |
| <enabled>Y</enabled> |
| <name>LOG_DATE</name> |
| </field> |
| <field> |
| <id>LOGGING_OBJECT_TYPE</id> |
| <enabled>Y</enabled> |
| <name>LOGGING_OBJECT_TYPE</name> |
| </field> |
| <field> |
| <id>OBJECT_NAME</id> |
| <enabled>Y</enabled> |
| <name>OBJECT_NAME</name> |
| </field> |
| <field> |
| <id>OBJECT_COPY</id> |
| <enabled>Y</enabled> |
| <name>OBJECT_COPY</name> |
| </field> |
| <field> |
| <id>REPOSITORY_DIRECTORY</id> |
| <enabled>Y</enabled> |
| <name>REPOSITORY_DIRECTORY</name> |
| </field> |
| <field> |
| <id>FILENAME</id> |
| <enabled>Y</enabled> |
| <name>FILENAME</name> |
| </field> |
| <field> |
| <id>OBJECT_ID</id> |
| <enabled>Y</enabled> |
| <name>OBJECT_ID</name> |
| </field> |
| <field> |
| <id>OBJECT_REVISION</id> |
| <enabled>Y</enabled> |
| <name>OBJECT_REVISION</name> |
| </field> |
| <field> |
| <id>PARENT_CHANNEL_ID</id> |
| <enabled>Y</enabled> |
| <name>PARENT_CHANNEL_ID</name> |
| </field> |
| <field> |
| <id>ROOT_CHANNEL_ID</id> |
| <enabled>Y</enabled> |
| <name>ROOT_CHANNEL_ID</name> |
| </field> |
| </channel-log-table> |
| <transform-log-table> |
| <connection/> |
| <schema/> |
| <table/> |
| <timeout_days/> |
| <field> |
| <id>ID_BATCH</id> |
| <enabled>Y</enabled> |
| <name>ID_BATCH</name> |
| </field> |
| <field> |
| <id>CHANNEL_ID</id> |
| <enabled>Y</enabled> |
| <name>CHANNEL_ID</name> |
| </field> |
| <field> |
| <id>LOG_DATE</id> |
| <enabled>Y</enabled> |
| <name>LOG_DATE</name> |
| </field> |
| <field> |
| <id>TRANSNAME</id> |
| <enabled>Y</enabled> |
| <name>TRANSNAME</name> |
| </field> |
| <field> |
| <id>STEPNAME</id> |
| <enabled>Y</enabled> |
| <name>STEPNAME</name> |
| </field> |
| <field> |
| <id>STEP_COPY</id> |
| <enabled>Y</enabled> |
| <name>STEP_COPY</name> |
| </field> |
| <field> |
| <id>LINES_READ</id> |
| <enabled>Y</enabled> |
| <name>LINES_READ</name> |
| </field> |
| <field> |
| <id>LINES_WRITTEN</id> |
| <enabled>Y</enabled> |
| <name>LINES_WRITTEN</name> |
| </field> |
| <field> |
| <id>LINES_UPDATED</id> |
| <enabled>Y</enabled> |
| <name>LINES_UPDATED</name> |
| </field> |
| <field> |
| <id>LINES_INPUT</id> |
| <enabled>Y</enabled> |
| <name>LINES_INPUT</name> |
| </field> |
| <field> |
| <id>LINES_OUTPUT</id> |
| <enabled>Y</enabled> |
| <name>LINES_OUTPUT</name> |
| </field> |
| <field> |
| <id>LINES_REJECTED</id> |
| <enabled>Y</enabled> |
| <name>LINES_REJECTED</name> |
| </field> |
| <field> |
| <id>ERRORS</id> |
| <enabled>Y</enabled> |
| <name>ERRORS</name> |
| </field> |
| <field> |
| <id>LOG_FIELD</id> |
| <enabled>N</enabled> |
| <name>LOG_FIELD</name> |
| </field> |
| </transform-log-table> |
| <metrics-log-table> |
| <connection/> |
| <schema/> |
| <table/> |
| <timeout_days/> |
| <field> |
| <id>ID_BATCH</id> |
| <enabled>Y</enabled> |
| <name>ID_BATCH</name> |
| </field> |
| <field> |
| <id>CHANNEL_ID</id> |
| <enabled>Y</enabled> |
| <name>CHANNEL_ID</name> |
| </field> |
| <field> |
| <id>LOG_DATE</id> |
| <enabled>Y</enabled> |
| <name>LOG_DATE</name> |
| </field> |
| <field> |
| <id>METRICS_DATE</id> |
| <enabled>Y</enabled> |
| <name>METRICS_DATE</name> |
| </field> |
| <field> |
| <id>METRICS_CODE</id> |
| <enabled>Y</enabled> |
| <name>METRICS_CODE</name> |
| </field> |
| <field> |
| <id>METRICS_DESCRIPTION</id> |
| <enabled>Y</enabled> |
| <name>METRICS_DESCRIPTION</name> |
| </field> |
| <field> |
| <id>METRICS_SUBJECT</id> |
| <enabled>Y</enabled> |
| <name>METRICS_SUBJECT</name> |
| </field> |
| <field> |
| <id>METRICS_TYPE</id> |
| <enabled>Y</enabled> |
| <name>METRICS_TYPE</name> |
| </field> |
| <field> |
| <id>METRICS_VALUE</id> |
| <enabled>Y</enabled> |
| <name>METRICS_VALUE</name> |
| </field> |
| </metrics-log-table> |
| </log> |
| <maxdate> |
| <connection/> |
| <table/> |
| <field/> |
| <offset>0.0</offset> |
| <maxdiff>0.0</maxdiff> |
| </maxdate> |
| <size_rowset>10000</size_rowset> |
| <sleep_time_empty>50</sleep_time_empty> |
| <sleep_time_full>50</sleep_time_full> |
| <unique_connections>N</unique_connections> |
| <feedback_shown>Y</feedback_shown> |
| <feedback_size>50000</feedback_size> |
| <using_thread_priorities>Y</using_thread_priorities> |
| <shared_objects_file/> |
| <capture_transform_performance>N</capture_transform_performance> |
| <transform_performance_capturing_delay>1000</transform_performance_capturing_delay> |
| <transform_performance_capturing_size_limit/> |
| <dependencies> |
| </dependencies> |
| <partitionschemas> |
| </partitionschemas> |
| <slaveservers> |
| </slaveservers> |
| <clusterschemas> |
| </clusterschemas> |
| <created_user/> |
| <created_date>2014/02/26 15:52:22.637</created_date> |
| <modified_user>-</modified_user> |
| <modified_date>2008/09/05 14:35:54.727</modified_date> |
| <key_for_session_key>H4sIAAAAAAAAAAMAAAAAAAAAAAA=</key_for_session_key> |
| <is_key_private>N</is_key_private> |
| </info> |
| <notepads> |
| <notepad> |
| <note>This transformation reads an XML file in JavaScript and extracts information from it as well.
Because of limitations inside of E4X, the header of the XML file needs to be stripped out before we can work with the data.

The interesting E4X part is this :

contentXML.levelTwo.level3.(@id == "2").@value;
for each (var value in level3ID2Values) 
{
 /* Generate rows */
}

</note> |
| <xloc>28</xloc> |
| <yloc>312</yloc> |
| <width>752</width> |
| <heigth>202</heigth> |
| <fontname/> |
| <fontsize>-1</fontsize> |
| <fontbold>N</fontbold> |
| <fontitalic>N</fontitalic> |
| <fontcolorred>0</fontcolorred> |
| <fontcolorgreen>0</fontcolorgreen> |
| <fontcolorblue>0</fontcolorblue> |
| <backgroundcolorred>255</backgroundcolorred> |
| <backgroundcolorgreen>205</backgroundcolorgreen> |
| <backgroundcolorblue>112</backgroundcolorblue> |
| <bordercolorred>100</bordercolorred> |
| <bordercolorgreen>100</bordercolorgreen> |
| <bordercolorblue>100</bordercolorblue> |
| <drawshadow>N</drawshadow> |
| </notepad> |
| </notepads> |
| <order> |
| <hop> |
| <from>Get File Names</from> |
| <to>Select values</to> |
| <enabled>Y</enabled> |
| </hop> |
| <hop> |
| <from>Select values</from> |
| <to>E4X</to> |
| <enabled>Y</enabled> |
| </hop> |
| </order> |
| <transform> |
| <name>E4X</name> |
| <type>ScriptValueMod</type> |
| <description/> |
| <distribute>Y</distribute> |
| <custom_distribution/> |
| <copies>1</copies> |
| <partitioning> |
| <method>none</method> |
| <schema_name/> |
| </partitioning> |
| <compatible>N</compatible> |
| <optimizationLevel>9</optimizationLevel> |
| <jsScripts> <jsScript> <jsScript_type>0</jsScript_type> |
| <jsScript_name>Script 1</jsScript_name> |
| <jsScript_script>if ("Rhino 1.7 release 1 2008 03 06" != Packages.org.mozilla.javascript.Context.getCurrentContext().getImplementationVersion())
{
 //Alert("Rhino js.jar must be version Rhino 1.7R1. Your version is:\n"+Packages.org.mozilla.javascript.Context.getCurrentContext().getImplementationVersion());
}

fileInputStream = new java.io.FileInputStream(filename);
contentBytes = Packages.org.pentaho.di.core.Const.createByteArray(fileInputStream.available());
fileInputStream.read(contentBytes);
fileInputStream.close();

var contentString = new java.lang.String(contentBytes);
contentString = contentString.replaceFirst("<\\?xml[^>]*\\?>\\s*", "");

var contentXML = new XML(contentString);

level3ID2Values = contentXML.levelTwo.level3.(@id == "2").@value;

var level3ID2Value = "";
for each (var value in level3ID2Values)
{
 level3ID2Value = value;
 newRow = createRowCopy(getOutputRowMeta().size());
 newRow[getInputRowMeta().size()] = java.lang.Double.valueOf(level3ID2Value);
 putRow(newRow);
}

// Don't output the input row.
trans_Status = SKIP_TRANSFORMATION;</jsScript_script> |
| </jsScript> </jsScripts> <fields> <field> <name>level3ID2Value</name> |
| <rename>level3ID2Value</rename> |
| <type>Number</type> |
| <length>-1</length> |
| <precision>-1</precision> |
| <replace>N</replace> |
| </field> </fields> <cluster_schema/> |
| |
| <input> |
| </input> |
| <output> |
| </output> |
| |
| <GUI> |
| <xloc>201</xloc> |
| <yloc>248</yloc> |
| <draw>Y</draw> |
| </GUI> |
| </transform> |
| |
| <transform> |
| <name>Get File Names</name> |
| <type>GetFileNames</type> |
| <description/> |
| <distribute>Y</distribute> |
| <custom_distribution/> |
| <copies>1</copies> |
| <partitioning> |
| <method>none</method> |
| <schema_name/> |
| </partitioning> |
| <filter> |
| <filterfiletype>all_files</filterfiletype> |
| </filter> |
| <doNotFailIfNoFile>N</doNotFailIfNoFile> |
| <rownum>N</rownum> |
| <isaddresult>Y</isaddresult> |
| <filefield>N</filefield> |
| <rownum_field/> |
| <filename_Field/> |
| <wildcard_Field/> |
| <exclude_wildcard_Field/> |
| <dynamic_include_subfolders>N</dynamic_include_subfolders> |
| <limit>0</limit> |
| <file> |
| <name>${Internal.Transformation.Filename.Directory}/files/</name> |
| <filemask>example.xml</filemask> |
| <exclude_filemask/> |
| <file_required/> |
| <include_subfolders/> |
| </file> |
| <cluster_schema/> |
| |
| <input> |
| </input> |
| <output> |
| </output> |
| |
| <GUI> |
| <xloc>200</xloc> |
| <yloc>51</yloc> |
| <draw>Y</draw> |
| </GUI> |
| </transform> |
| |
| <transform> |
| <name>Select values</name> |
| <type>SelectValues</type> |
| <description/> |
| <distribute>Y</distribute> |
| <custom_distribution/> |
| <copies>1</copies> |
| <partitioning> |
| <method>none</method> |
| <schema_name/> |
| </partitioning> |
| <fields> <field> <name>filename</name> |
| </field> <select_unspecified>N</select_unspecified> |
| </fields> <cluster_schema/> |
| |
| <input> |
| </input> |
| <output> |
| </output> |
| |
| <GUI> |
| <xloc>200</xloc> |
| <yloc>150</yloc> |
| <draw>Y</draw> |
| </GUI> |
| </transform> |
| |
| <transform_error_handling> |
| </transform_error_handling> |
| <slave-transform-copy-partition-distribution> |
| </slave-transform-copy-partition-distribution> |
| <slave_transformation>N</slave_transformation> |
| </pipeline> |