<?xml version="1.0"?>
<!-- file: formatter.xsl - v1.3.1. docs at the end -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<style type="text/css">
body {
margin: 2% 3% 2% 10%;
}
.clsVerticalSpace2Cols { width: 100%; margin-top: 5% ;}
/* tables */
table {
font-family:arial;
background-color: #CDCDCD;
margin:10px 0pt 15px;
font-size: 11pt;
width: 100%;
text-align: left;
border: 1px solid
}
table thead tr th, table tfoot tr th {
background-color: #e6EEEE;
border: 1px solid #111111;
font-size: 12pt;
padding: 3px;
}
table thead tr .header {
background-repeat: no-repeat;
background-position: center right;
cursor: pointer;
}
table tbody td {
color: #3D3D3D;
padding: 4px;
background-color: #FFF;
vertical-align: top;
}
table tbody tr.odd td {
background-color: #ffffff;
}
table tbody tr.even td {
background-color: #f4f9fe;
}
</style>
</head>
<body>
<!-- START CHECK-LIST TABLE -->
<table id="sorter">
<thead>
<tr>
<th>CheckItemId</th> <th>CheckOrder</th> <th>Importance</th> <th>Level</th> <th>Tab</th> <th>Name</th> <th>Description </th> <th>IsMandatory</th> <th>IsNZSpecific</th> <th></th>
</tr>
</thead>
<tr class="odd"><td>1</td> <td>1</td> <td>1</td> <td>Workflow</td> <td>General</td> <td><a href="#Check-workflow-name">Check workflow name</a></td> <td>What is the workflow name</td> <td>1</td> <td>0</td> <td></td> </tr>
<tr class="even"><td>2</td> <td>2</td> <td>1</td> <td>Workflow</td> <td>General</td> <td><a href="#Suspend-on-error">Suspend on error</a></td> <td>Onko Suspend on Error asetus wf on tasolla</td> <td>1</td> <td>0</td> <td></td> </tr>
<tr class="odd"><td>3</td> <td>2</td> <td>1</td> <td>Workflow</td> <td>General</td> <td>Suspend on error not possible</td> <td>If Susspend on error is not set the lins between the sessions or the worklets should be ALL ok </td> <td>1</td> <td>0</td> <td></td> </tr>
<tr class="even"><td>4</td> <td>1</td> <td>1</td> <td>Workflow</td> <td>General</td> <td>In the Worklet check the <a href="#Fail-Parent-If-task-fails">"Fail parent if this task fails"</a></td> <td>In the Worklet check the "Fail parent if this task fails"</td> <td>1</td> <td>0</td> <td></td> </tr>
<tr class="odd"><td>5</td> <td>1</td> <td>1</td> <td>Session</td> <td>General</td> <td>Check that <a href="#Fail-Parent-If-task-fails">"Fail Parent If task fails"</a> is checked</td> <td>Check that "Fail Parent If task fails" is checked</td> <td>1</td> <td>0</td> <td></td> </tr>
<tr class="even"><td>6</td> <td>1</td> <td>1</td> <td>Session</td> <td>Properties</td> <td><a href="#Session-log-file-directory">Session log file directory</a></td> <td>Session log file directory should be unique</td> <td>1</td> <td>0</td> <td></td> </tr>
<tr class="odd"><td>7</td> <td>1</td> <td>1</td> <td>Session</td> <td>Properties</td> <td><a href="#Session-log-file-directory">Session log file </a>should be unique</td> <td>Session log file should be uniqeu</td> <td>1</td> <td>0</td> <td></td> </tr>
<tr class="even"><td>8</td> <td>1</td> <td>1</td> <td>Session</td> <td>Properties</td> <td><a href="#Session-log-file-directory">Session log file directory </a> must not be the default one </td> <td>Do not use the PMSessionLogs environmentvariable - the default setting</td> <td>1</td> <td>0</td> <td></td> </tr>
<tr class="odd"><td>9</td> <td>1</td> <td>1</td> <td>Session</td> <td>Properties</td> <td>Commit Interval </td> <td>If the target is Netezza the setting for "Commit interfal" must be > 1 000 000 </td> <td>0</td> <td>1</td> <td></td> </tr>
<tr class="even"><td>10</td> <td>1</td> <td>1</td> <td>Session</td> <td>Properties</td> <td><a href="#Sessions-Recovery-Strategy">Recovery strategy should be set to "Restart task"</a> </td> <td>Recovery strategy should be set to "Restart task". This is not applicable to all tasks </td> <td>1</td> <td>0</td> <td></td> </tr>
<tr class="odd"><td>11</td> <td>1</td> <td>1</td> <td>Session</td> <td>Properties</td> <td>Restart task</td> <td>Recovery strategy should be set to "Restart task". This is not applicable to all tasks </td> <td>1</td> <td>1</td> <td></td> </tr>
<tr class="even"><td>12</td> <td>1</td> <td>1</td> <td>Session</td> <td>Properties</td> <td>Enable high precision</td> <td>Enable high precision</td> <td>1</td> <td>1</td> <td></td> </tr>
<tr class="odd"><td>13</td> <td>1</td> <td>1</td> <td>Session</td> <td>Config object</td> <td>Enable high precision</td> <td>Enable high precision</td> <td>1</td> <td>1</td> <td></td> </tr>
<tr class="even"><td>14</td> <td>1</td> <td>1</td> <td>FOLDER</td> <td>default_session_config</td> <td>Save session log by</td> <td>Save session log by timestamp</td> <td>1</td> <td>0</td> <td></td> </tr>
<tr class="odd"><td>15</td> <td>1</td> <td>1</td> <td>FOLDER</td> <td>default_session_config</td> <td>Stop on errors to 1</td> <td>Stop on errors to 1</td> <td>1</td> <td>0</td> <td></td> </tr>
<tr class="even"><td>16</td> <td>1</td> <td>1</td> <td>Session</td> <td>Mapping</td> <td>Target options</td> <td>Target options should NOT be left to the default settings. Only the allowed actions should be checked.</td> <td>1</td> <td>0</td> <td></td> </tr>
<tr class="odd"><td>17</td> <td>1</td> <td>1</td> <td>Session</td> <td>Mapping</td> <td>Target options</td> <td>If the Netezza bulk writer is used use the 007 delimiter. The 007 is ASCII Control G . The Bell mark</td> <td>1</td> <td>1</td> <td></td> </tr>
<tr class="even"><td>18</td> <td>1</td> <td>1</td> <td>Session</td> <td>Mapping</td> <td>Target options</td> <td>If the Netezza bulk writer is used use "Escape character" must be \</td> <td>1</td> <td>1</td> <td></td> </tr>
<tr class="odd"><td>19</td> <td>1</td> <td>1</td> <td>Session</td> <td>Mapping</td> <td>Target options</td> <td>If the Netezza bulk writer is used Error log directory should be set to /Terra_NZ/logs</td> <td>1</td> <td>1</td> <td></td> </tr>
<tr class="even"><td>20</td> <td>1</td> <td>1</td> <td>Session</td> <td>General</td> <td>Pre-Post SQL usage note in <a href="#list-of-sessions">session description</a></td> <td>If PRE or POST-SQL do add in the Session description ** PRE-SQL used ** </td> <td>1</td> <td>1</td> <td></td> </tr>
<tr class="odd"><td>21</td> <td>1</td> <td>1</td> <td>Session</td> <td>General</td> <td>Session description</td> <td>Whenever possible do provide what is the main purpose of this session </td> <td>0</td> <td>1</td> <td></td> </tr>
<tr class="even"><td>22</td> <td>1</td> <td>1</td> <td>Session</td> <td>Mapping</td> <td>File , directories and Commands</td> <td>Do not leave to the default settings. Set the log and cache directories</td> <td>1</td> <td>1</td> <td></td> </tr>
<tr class="odd"><td>23</td> <td>1</td> <td>1</td> <td>Session</td> <td>Properties </td> <td>If the Pushdown optimizations</td> <td>If the pushdown optimizations is used check the following options allow temporary view for pushdown , allow temporary Swquence for Pushdowns , Allow Pushdown for User Incorpatible Connetion </td> <td>0</td> <td>0</td> <td></td> </tr>
<tr class="even"><td>24</td> <td>1</td> <td>1</td> <td>Workflow</td> <td>Properties </td> <td>Check the Integration Service</td> <td>Check the Integration Service - unicode </td> <td>0</td> <td>0</td> <td></td> </tr>
<tr class="odd"><td>25</td> <td>1</td> <td>1</td> <td>Workflow</td> <td>Overall logic </td> <td>Workflow recovery </td> <td>If possible check the previous run of the run has succeeded. Aim that the workflow should be always possible to be re-started. Uses ControlSession nin the beginning of the workflow if neededf. </td> <td>0</td> <td>0</td> <td></td> </tr>
<tr class="even"><td>26</td> <td>1</td> <td>1</td> <td>Workflow</td> <td>Truncate and not delete</td> <td></td> <td>Todo: clarify if PDO is used and the table must be deleted. The truncate should be run as PRE-SQL and the table must be truncated first - this has dramatic effect on the performance</td> <td>1</td> <td>1</td> <td></td> </tr>
</table>
<!-- STOP CHECK-LIST TABLE -->
<!-- START WORKFLOW -->
<h3 id="Check-workflow-name"> WORKFLOWS </h3>
<h5> xpath: /POWERMART/REPOSITORY/FOLDER/WORKFLOW </h5>
<table>
<tr>
<th> WORKFLOW NAME at @NAME</th>
<th> DESCRIPTION VALUE at @VALUE</th>
</tr>
<xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/WORKFLOW">
<xsl:sort select="../@NAME"/>
<xsl:variable name="css-class">
<xsl:choose>
<xsl:when test="position() mod 2 = 0">even</xsl:when>
<xsl:otherwise>odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class="{$css-class}">
<td>
<xsl:value-of select="@NAME"/>
</td>
<td>
<xsl:value-of select="@DESCRIPTION"/>
</td>
</tr>
</xsl:for-each>
</table>
<!-- STOP SESSION ATTRIBUTES -->
<div class="clsVerticalSpace2Cols"></div>
<!-- START WORKLFOW ATTRIBUTES -->
<h3 id="Suspend-on-error"> WORKFLOW ATTRIBUTES </h3>
<h5> xpath: /POWERMART/REPOSITORY/FOLDER/WORKFLOW </h5>
<table>
<thead>
<tr>
<th> WORKFLOW NAME</th>
<th> ISENABLED</th>
<th> SUSPEND_ON_ERROR</th>
<th> ISVALID</th>
</tr>
</thead>
<xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/WORKFLOW">
<xsl:sort select="../@NAME"/>
<xsl:variable name="css-class">
<xsl:choose>
<xsl:when test="position() mod 2 = 0">even</xsl:when>
<xsl:otherwise>odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class="{$css-class}">
<td>
<xsl:value-of select="@NAME"/>
</td>
<td>
<xsl:value-of select="@SUSPEND_ON_ERROR"/>
</td>
<td>
<xsl:value-of select="@ISENABLED"/>
</td>
<td>
<xsl:value-of select="@ISVALID"/>
</td>
</tr>
</xsl:for-each>
</table>
<!-- STOP WORKFLOW ATTRIBUTES -->
<div class="clsVerticalSpace2Cols"></div>
<h3 id="Sessions-Recovery-Strategy"> SESSIONS Recovery strategy </h3>
<h5> xpath: /POWERMART/REPOSITORY/FOLDER/SESSION/ATTRIBUTE[@NAME ='Recovery Strategy'] </h5>
<table>
<tr>
<th> WORKFLOW NAME at @NAME</th>
<th> SESSION NAME at @NAME</th>
<th> ATTRIBUTE NAME at @NAME</th>
<th> ATTRIBUTE VALUE at @VALUE</th>
</tr>
<xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/SESSION/ATTRIBUTE[@NAME ='Recovery Strategy']">
<xsl:sort select="../@NAME"/>
<xsl:variable name="css-class">
<xsl:choose>
<xsl:when test="position() mod 2 = 0">even</xsl:when>
<xsl:otherwise>odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class="{$css-class}">
<td>
<xsl:value-of select="../../@NAME"/>
</td>
<td>
<xsl:value-of select="../@NAME"/>
</td>
<td>
<xsl:value-of select="@NAME"/>
</td>
<td>
<xsl:value-of select="@VALUE"/>
</td>
</tr>
</xsl:for-each>
</table>
<!-- STOP SESSION ATTRIBUTES -->
<div class="clsVerticalSpace2Cols"></div>
<!-- START TASKINSTANCE ATTRIBUTES -->
<h3 id="Fail-Parent-If-task-fails"> TASKINSTANCE ATTRIBUTES </h3>
<h5> xpath: /POWERMART/REPOSITORY/FOLDER/WORKFLOW/TASKINSTANCE" </h5>
<table>
<thead>
<tr>
<th> WORKFLOW NAME at /../@NAME</th>
<th> TASK NAME at ../@NAME</th>
<th> FAIL_PARENT_IF_INSTANCE_FAILS </th>
<th> FAIL_PARENT_IF_INSTANCE_DID_NOT_RUN </th>
</tr>
</thead>
<xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/WORKFLOW/TASKINSTANCE">
<xsl:sort select="../@NAME"/>
<xsl:variable name="css-class">
<xsl:choose>
<xsl:when test="position() mod 2 = 0">even</xsl:when>
<xsl:otherwise>odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class="{$css-class}">
<td>
<xsl:value-of select="../@NAME"/>
</td> <td>
<xsl:value-of select="@NAME"/>
</td>
<td>
<xsl:value-of select="@FAIL_PARENT_IF_INSTANCE_FAILS"/>
</td>
<td>
<xsl:value-of select="@FAIL_PARENT_IF_INSTANCE_DID_NOT_RUN"/>
</td>
</tr>
</xsl:for-each>
</table>
<div class="clsVerticalSpace2Cols"></div>
<!-- STOP TASKINSTANCE ATTRIBUTES -->
<!-- START SESSION LOG FILES ATTRIBUTES -->
<h3 id="Session-log-file-directory"> SESSION ATTRIBUTES ( Log files ) </h3>
<h5> xpath: /POWERMART/REPOSITORY/FOLDER/WORKFLOW/SESSION/ATTRIBUTE[@NAME='Session Log File directory' or @NAME='Session Log File Name']" </h5>
<table>
<thead>
<tr>
<th> WORKFLOW NAME </th>
<th> SESSION NAME </th>
<th> LOG FILE DIR </th>
<th> LOG FILE NAME </th>
</tr>
</thead>
<xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/WORKFLOW/SESSION">
<xsl:sort select="@NAME"/>
<xsl:variable name="css-class">
<xsl:choose>
<xsl:when test="position() mod 2 = 0">even</xsl:when>
<xsl:otherwise>odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class="{$css-class}">
<td>
<xsl:value-of select="../@NAME"/>
</td> <td>
<xsl:value-of select="@NAME"/>
</td>
<td>
<xsl:value-of select=".//ATTRIBUTE[@NAME='Session Log File directory']/@VALUE"/>
</td>
<td>
<xsl:value-of select=".//ATTRIBUTE[@NAME='Session Log File Name']/@VALUE"/>
</td>
</tr>
</xsl:for-each>
</table>
<div class="clsVerticalSpace2Cols"></div>
<!-- STOP SESSION LOG FILES ATTRIBUTES -->
<!-- START SESSION -->
<h3> SESSIONS WITH THEIR MAPPINGS </h3>
<table>
<thead>
<tr bgcolor="#F8F8F8">
<th>WORKFLOW NAME</th>
<th>SESSION NAME</th>
<th>MAPPING NAME </th>
<th>SESSION DESCRIPTION</th>
</tr>
</thead>
<xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/WORKFLOW/SESSION">
<xsl:sort select="@NAME"/>
<xsl:variable name="css-class">
<xsl:choose>
<xsl:when test="position() mod 2 = 0">even</xsl:when>
<xsl:otherwise>odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class="{$css-class}">
<td>
<xsl:value-of select="../@NAME"/>
</td>
<td>
<xsl:value-of select="@NAME"/>
</td>
<td>
<xsl:value-of select="@MAPPINGNAME"/>
</td>
<td>
<xsl:value-of select="@DESCRIPION"/>
</td>
</tr>
</xsl:for-each>
</table>
<!-- STOP SESSION -->
<div class="clsVerticalSpace2Cols"></div>
<!-- START LIST OF SESSIONS -->
<h3 id="list-of-sessions"> LIST OF SESSIONS </h3>
<table>
<tr bgcolor="#F8F8F8">
<th>WORKFLOW NAME</th>
<th>SESSION NAME</th>
<th>DESCRIPTION</th>
</tr>
<xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/WORKFLOW/SESSION">
<xsl:sort select="@NAME"/>
<xsl:variable name="css-class">
<xsl:choose>
<xsl:when test="position() mod 2 = 0">even</xsl:when>
<xsl:otherwise>odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class="{$css-class}">
<td>
<xsl:value-of select="../@NAME"/>
</td>
<td>
<xsl:value-of select="@NAME"/>
</td>
<td>
<xsl:value-of select="@DESCRIPTION"/>
</td>
</tr>
</xsl:for-each>
</table>
<div class="clsVerticalSpace2Cols"></div>
<!-- STOP MAPPINGS -->
<!-- START TASKS -->
<h3> LIST OF TASKS </h3>
<table>
<tr bgcolor="#F8F8F8">
<th>WORKFLOW NAME</th>
<th>TASK NAME</th>
<th>DESCRIPTION</th>
</tr>
<xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/WORKFLOW/TASK">
<xsl:sort select="../@NAME"/>
<xsl:variable name="css-class">
<xsl:choose>
<xsl:when test="position() mod 2 = 0">even</xsl:when>
<xsl:otherwise>odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class="{$css-class}">
<td>
<xsl:value-of select="../@NAME"/>
</td>
<td>
<xsl:value-of select="@NAME"/>
</td>
<td>
<xsl:value-of select="@DESCRIPTION"/>
</td>
</tr>
</xsl:for-each>
</table>
<!-- STOP TASKS -->
<div class="clsVerticalSpace2Cols"></div>
<!-- START MAPPINGS -->
<h3> LIST OF MAPPINGS </h3>
<table>
<tr bgcolor="#F8F8F8">
<th>WORKFLOW NAME</th>
<th>MAPPING NAME</th>
<th>DESCRIPTION</th>
</tr>
<xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/MAPPING">
<xsl:sort select="@NAME"/>
<xsl:variable name="css-class">
<xsl:choose>
<xsl:when test="position() mod 2 = 0">even</xsl:when>
<xsl:otherwise>odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class="{$css-class}">
<td>
<xsl:value-of select="../WORKFLOW/@NAME"/>
</td>
<td>
<xsl:value-of select="@NAME"/>
</td>
<td>
<xsl:value-of select="@DESCRIPTION"/>
</td>
</tr>
</xsl:for-each>
</table>
<div class="clsVerticalSpace2Cols"></div>
<!-- STOP MAPPINGS -->
<h3> LIST OF SOURCES </h3>
<table>
<tr bgcolor="#F8F8F8">
<th>WORKFLOW NAME</th>
<th>SOURCE NAME</th>
<th>DESCRIPTION</th>
</tr>
<xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/SOURCE">
<xsl:sort select="@NAME"/>
<xsl:variable name="css-class">
<xsl:choose>
<xsl:when test="position() mod 2 = 0">even</xsl:when>
<xsl:otherwise>odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class="{$css-class}">
<td>
<xsl:value-of select="../WORKFLOW/@NAME"/>
</td>
<td>
<xsl:value-of select="@NAME"/>
</td>
<td>
<xsl:value-of select="@DESCRIPION"/>
</td>
</tr>
</xsl:for-each>
</table>
<!-- EOF SOURCES -->
<!-- START TARGETS -->
<h3> LIST OF TARGETS </h3>
<table>
<tr bgcolor="#F8F8F8">
<th>WORKFLOW NAME</th>
<th>NAME</th>
<th>DESCRIPTION</th>
</tr>
<xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/TARGET">
<xsl:sort select="@NAME"/>
<xsl:variable name="css-class">
<xsl:choose>
<xsl:when test="position() mod 2 = 0">even</xsl:when>
<xsl:otherwise>odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class="{$css-class}">
<td>
<xsl:value-of select="../WORKFLOW/@NAME"/>
</td>
<td>
<xsl:value-of select="@NAME"/>
</td>
<td>
<xsl:value-of select="@DESCRIPION"/>
</td>
</tr>
</xsl:for-each>
</table>
<!-- STOP TARGETS -->
<div class="clsVerticalSpace2Cols"></div>
<!-- START CONNECTIONREFERENCES -->
<h3> LIST OF CONNECTIONREFERENCES </h3>
<h5> xpath - /POWERMART/REPOSITORY/FOLDER/WORKFLOW/SESSION/SESSIONEXTENSION/CONNECTIONREFERENCE </h5>
<table>
<tr bgcolor="#F8F8F8">
<th>WORKFLOW NAME</th>
<th>CONNECTION REFERENCE NAME</th>
<th>DESCRIPTION</th>
<th>SESSION INSTANCE NAME </th>
</tr>
<xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/WORKFLOW/SESSION/SESSIONEXTENSION/CONNECTIONREFERENCE">
<xsl:sort select="@CONNECTIONNAME"/>
<xsl:variable name="css-class">
<xsl:choose>
<xsl:when test="position() mod 2 = 0">even</xsl:when>
<xsl:otherwise>odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class="{$css-class}">
<td>
<xsl:value-of select="../../../@NAME"/>
</td>
<td>
<xsl:value-of select="@CONNECTIONNAME"/>
</td>
<td>
<xsl:value-of select="@CONNECTIONTYPE"/>
</td>
<td>
<xsl:value-of select="../@SINSTANCENAME"/>
</td>
</tr>
</xsl:for-each>
</table>
<!-- STOP CONNECTIONREFERENCES -->
<div class="clsVerticalSpace2Cols"></div>
<!-- START USER DEFINED WORKFLOW VARIABLES -->
<h3> USER DEFINED WORKFLOW VARIABLES </h3>
<h5> xpath: /POWERMART/REPOSITORY/FOLDER/WORKFLOW/WORKFLOWVARIABLE[@USERDEFINED='YES'] </h5>
<table>
<tr bgcolor="#F8F8F8">
<th>WORFLOW NAME</th>
<th>WORFLOW VARIABLE NAME</th>
<th>DATA TYPE </th>
<th>DEFAULTVALUE</th>
<th>DESCRIPION</th>
</tr>
<xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/WORKFLOW/WORKFLOWVARIABLE[@USERDEFINED='YES']">
<xsl:sort select="@NAME"/>
<xsl:variable name="css-class">
<xsl:choose>
<xsl:when test="position() mod 2 = 0">even</xsl:when>
<xsl:otherwise>odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class="{$css-class}">
<td>
<xsl:value-of select="../@NAME"/>
</td>
<td>
<xsl:value-of select="@NAME"/>
</td>
<td>
<xsl:value-of select="@DATATYPE"/>
</td>
<td>
<xsl:value-of select="@DEFAULTVALUE"/>
</td>
<td>
<xsl:value-of select="@DESCRIPION"/>
</td>
</tr>
</xsl:for-each>
</table>
<!-- STOP USER DEFINED WORKFLOW VARIABLES -->
<div class="clsVerticalSpace2Cols"></div>
<!-- START USER DEFINED WORKFLOW VARIABLES -->
<h3> USER DEFINED MAPPING VARIABLES </h3>
<h5> xpath: /POWERMART/REPOSITORY/FOLDER/MAPPING/MAPPINGVARIABLE[@USERDEFINED='YES'] </h5>
<table>
<tr bgcolor="#F8F8F8">
<th> WORKFLOW VARIABLE NAME</th>
<th> MAPPING VARIABLE NAME</th>
<th>DATA TYPE </th>
<th>DEFAULTVALUE</th>
<th>DESCRIPION</th>
</tr>
<xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/MAPPING/MAPPINGVARIABLE[@USERDEFINED='YES']">
<xsl:sort select="@NAME"/>
<xsl:variable name="css-class">
<xsl:choose>
<xsl:when test="position() mod 2 = 0">even</xsl:when>
<xsl:otherwise>odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class="{$css-class}">
<td>
<xsl:value-of select="../@NAME"/>
</td>
<td>
<xsl:value-of select="@NAME"/>
</td>
<td>
<xsl:value-of select="@DATATYPE"/>
</td>
<td>
<xsl:value-of select="@DEFAULTVALUE"/>
</td>
<td>
<xsl:value-of select="@DESCRIPION"/>
</td>
</tr>
</xsl:for-each>
</table>
<!-- STOP USER DEFINED WORKFLOW VARIABLES -->
<div class="clsVerticalSpace2Cols"></div>
<!-- START Session tranformation Instances -->
<h3> Session tranformation Instances </h3>
<h5> xpath: /POWERMART/REPOSITORY/FOLDER/WORKFLOW/SESSION/SESSTRANSFORMATIONINST/ATTRIBUTE[@NAME ='Connection Information'] </h5>
<table>
<tr bgcolor="#F8F8F8">
<th> WORKFLOW NAME at ../../@NAME</th>
<th> SESSION NAME at ../../@NAME</th>
<th> NAME at @NAME</th>
<th> VALUE at @VALUE </th>
</tr>
<xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/WORKFLOW/SESSION/SESSTRANSFORMATIONINST/ATTRIBUTE[@NAME ='Connection Information']">
<xsl:sort select="@NAME"/>
<xsl:variable name="css-class">
<xsl:choose>
<xsl:when test="position() mod 2 = 0">even</xsl:when>
<xsl:otherwise>odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class="{$css-class}">
<td>
<xsl:value-of select="../../../@NAME"/>
</td>
<td>
<xsl:value-of select="../../@NAME"/>
</td>
<td>
<xsl:value-of select="@NAME"/>
</td>
<td>
<xsl:value-of select="@VALUE"/>
</td>
</tr>
</xsl:for-each>
</table>
<!-- STOP Session tranformation Instances-->
<div class="clsVerticalSpace2Cols"></div>
<!-- START SOURCE FIELDS -->
<h3> Source fields </h3>
<table>
<tr bgcolor="#F8F8F8">
<th> SOURCE NAME </th>
<th> SOURCE FIELD NAME </th>
<th> DATA TYPE </th>
<th> MAX LENGTH </th>
<th> IS NULLABLE </th>
<th> DESCRIPTION </th>
</tr>
<xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/SOURCE/SOURCEFIELD">
<xsl:sort select="../@NAME"/>
<xsl:variable name="css-class">
<xsl:choose>
<xsl:when test="position() mod 2 = 0">even</xsl:when>
<xsl:otherwise>odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class="{$css-class}">
<td>
<xsl:value-of select="../@NAME"/>
</td>
<td>
<xsl:value-of select="@NAME"/>
</td>
<td>
<xsl:value-of select="@DATATYPE"/>
</td>
<td>
<xsl:value-of select="@PRECISION"/>
</td>
<td>
<xsl:value-of select="@NULLABLE"/>
</td>
<td>
<xsl:value-of select="@DESCRIPTION"/>
</td>
</tr>
</xsl:for-each>
</table>
<!-- STOP SOURCE FIELDS -->
<div class="clsVerticalSpace2Cols"></div>
<!-- START TARGET FIELDS -->
<h3> Target fields </h3>
<table>
<tr bgcolor="#F8F8F8">
<th>TARGET NAME </th>
<th>FIELD_NAME</th>
<th>DATA TYPE </th>
<th>PRECISION</th>
<th>IS NULLABLE</th>
<th>DESCRIPTION </th>
</tr>
<xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/TARGET/TARGETFIELD">
<xsl:sort select="../@NAME"/>
<xsl:variable name="css-class">
<xsl:choose>
<xsl:when test="position() mod 2 = 0">even</xsl:when>
<xsl:otherwise>odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class="{$css-class}">
<td>
<xsl:value-of select="../@NAME"/>
</td>
<td>
<xsl:value-of select="@NAME"/>
</td>
<td>
<xsl:value-of select="@DATATYPE"/>
</td>
<td>
<xsl:value-of select="@PRECISION"/>
</td>
<td>
<xsl:value-of select="@NULLABLE"/>
</td>
<td>
<xsl:value-of select="@DESCRIPTION"/>
</td>
</tr>
</xsl:for-each>
</table>
<!-- STOP TARGET FIELDS -->
<!-- START SOURCE FILTERS -->
<h3> Sourcer filters </h3>
<table>
<tr bgcolor="#F8F8F8">
<th> Source Filter Name </th>
<th> Source Filter Value </th>
<th> Session Instance Name </th>
</tr>
<xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/WORKFLOW/SESSION/SESSTRANSFORMATIONINST/ATTRIBUTE[@NAME='Source Filter']">
<xsl:sort select="@NAME"/>
<xsl:variable name="css-class">
<xsl:choose>
<xsl:when test="position() mod 2 = 0">even</xsl:when>
<xsl:otherwise>odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class="{$css-class}">
<td>
<xsl:value-of select="@NAME"/>
</td>
<td>
<xsl:value-of select="@VALUE"/>
</td>
<td>
<xsl:value-of select="../../@NAME"/>
</td>
</tr>
</xsl:for-each>
</table>
<!-- STOP SOURCE FILTERS -->
<div class="clsVerticalSpace2Cols"></div>
<!-- START SOURCE FILTERS -->
<h3> Sessions config reference attributes </h3>
<h5> xpath: /POWERMART/REPOSITORY/FOLDER/WORKFLOW/SESSION/CONFIGREFERENCE/ATTRIBUTE</h5>
<table>
<tr bgcolor="#F8F8F8">
<th> WORKFLOW NAME</th>
<th> SESSION NAME </th>
<th> ATTRIBUTE NAME </th>
<th> SOURCE FILTER VALUE </th>
</tr>
<xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/WORKFLOW/SESSION/CONFIGREFERENCE/ATTRIBUTE">
<xsl:sort select="../../@NAME"/>
<xsl:variable name="css-class">
<xsl:choose>
<xsl:when test="position() mod 2 = 0">even</xsl:when>
<xsl:otherwise>odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class="{$css-class}">
<td>
<xsl:value-of select="../../../@NAME"/>
</td>
<td>
<xsl:value-of select="../../@NAME"/>
</td>
<td>
<xsl:value-of select="@NAME"/>
</td>
<td>
<xsl:value-of select="@VALUE"/>
</td>
</tr>
</xsl:for-each>
</table>
<!-- STOP SOURCE FILTERS -->
<div class="clsVerticalSpace2Cols"></div>
<!-- START SOURCE FILTERS -->
<h3> SESSIONEXTENSION config reference attributes </h3>
<h5> xpath:/POWERMART/REPOSITORY/FOLDER/WORKFLOW/SESSION/SESSIONEXTENSION/ATTRIBUTE </h5>
<table>
<tr bgcolor="#F8F8F8">
<th> WORKFLOW NAME </th>
<th> SESSION NAME </th>
<th> SESSION EXTENSION NAME </th>
<th> SINSTANCENAME </th>
<th> ATTRIBUTE NAME </th>
<th> ATTRIBUTE VALUE </th>
</tr>
<xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/WORKFLOW/SESSION/SESSIONEXTENSION/ATTRIBUTE">
<xsl:sort select="../../@NAME"/>
<xsl:sort select="@NAME"/>
<xsl:variable name="css-class">
<xsl:choose>
<xsl:when test="position() mod 2 = 0">even</xsl:when>
<xsl:otherwise>odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class="{$css-class}">
<td>
<xsl:value-of select="../../../@NAME"/>
</td>
<td>
<xsl:value-of select="../@NAME"/>
</td>
<td>
<xsl:value-of select="../@SINSTANCENAME"/>
</td>
<td>
<xsl:value-of select="../../@NAME"/>
</td>
<td>
<xsl:value-of select="@NAME"/>
</td>
<td>
<xsl:value-of select="@VALUE"/>
</td>
</tr>
</xsl:for-each>
</table>
<!-- STOP SOURCE FILTERS -->
<div class="clsVerticalSpace2Cols"></div>
<!-- START PRE-SQL -->
<h3> PRE-SQL ON SESSION LEVEL </h3>
<h5> xpath: /POWERMART/REPOSITORY/FOLDER/WORKFLOW/SESSION/SESSTRANSFORMATIONINST/ATTRIBUTE[@NAME='Pre SQL' or @NAME='Session Log File Name']" </h5>
<table>
<tr>
<th> WORKFLOW NAME</th>
<th> SESSION NAME</th>
<th> TRANSFORMFIELD NAME</th>
<th> Expression Value ( SQL to run ) </th>
</tr>
<xsl:for-each select="/POWERMART/REPOSITORY/FOLDER/WORKFLOW/SESSION/SESSTRANSFORMATIONINST/ATTRIBUTE[@NAME='Pre SQL']">
pre class= span class= <xsl:sort select="../@NAME"/>
<xsl:variable name="css-class">
<xsl:choose>
<xsl:when test="position() mod 2 = 0">even</xsl:when>
<xsl:otherwise>odd</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<tr class="{$css-class}">
<td>
<xsl:value-of select="../../../@NAME"/>
</td>
<td>
<xsl:value-of select="../../@NAME"/>
</td>
<td>
<xsl:value-of select="@NAME"/>
</td>
<td>
<xsl:value-of select="@VALUE"/>
</td>
</tr>
</xsl:for-each>
</table>
<!-- STOP Get PRE-SQL on session level -->
<div class="clsVerticalSpace2Cols"></div>
<!-- START DOCUMENTATION -->
<div>
<h2> Documentation </h2>
<div> Purpose: </div>
<div>to provide a human readable output for an copied exported worfklow file from Informatica repository </div>
<div></div>
<div>Usage: </div>
<div>Please in the same folder where the workflow export xml file is </div>
<div>Add the following line on the second line of the exported wf xml file : </div>
<div><?xml-stylesheet type="text/xsl" href="formatter.xsl"?><!DOCTYPE POWERMART SYSTEM "powrmart.dtd"></div>
<div></div>
<div>VersionHistory : </div>
<div>1.3.3 --- 2012-11-08 20:50:06 --- ysg --- Improved style , re-factor log files and dirs </div>
<div>1.3.2 --- 2012-11-06 16:53:30 --- Visa Lattunen , Marko Tuomela --- Added check-list </div>
<div>1.3.1 --- 2012-11-01 17:36:43 --- ysg --- Added target fields description </div>
<div>1.3.0 --- 2012-11-01 11:41:09 --- ysg --- Added pre-sql on session level </div>
<div>1.2.9 --- 2012-10-30 14:50:43 --- ysg --- Improved source fields table </div>
<div>1.2.8 --- 2012-10-30 14:50:43 --- ysg --- Added multiple workflow into one report file support </div>
<div>1.2.7 --- 2012-10-29 15:59:35 --- ysg --- Add mapping variables </div>
<div>1.1.0 --- 2012-10-26 16:09:56 --- ysg --- Assume multiple workflows into one file </div>
<div>1.2.5 --- 2012-10-17 16:45:49 --- ysg --- Added workflow name and description </div>
<div>1.2.4 --- 2012-10-17 13:53:06 --- ysg --- Added xpath to titles </div>
<div>1.2.3 --- 2012-10-16 21:57:28 --- ysg --- Added Sessions config reference attributes </div>
<div>1.2.2 --- 2012-10-16 12:04:39 --- ysg --- Filtered only session log dir and session log file name </div>
<div>1.2.1 --- 2012-10-16 12:04:39 --- ysg --- Added source filters </div>
<div>1.2.0 --- 2012-10-15 16:51:53 --- ysg --- Added alternating rows with css </div>
<div>1.1.1 --- 2012-10-15 16:22:48 --- ysg --- Added source target fields </div>
<div>1.1.0 --- 2012-10-15 14:46:09 --- ysg --- Added session - mapping combination , session attributes </div>
<div>1.0.0 --- 2012-10-12 14:50:43 --- ysg --- Initial Creation </div>
<div></div>
<div></div>
<div></div>
<div>eof:file formatter.xsl </div>
</div>
<!-- STOP DOCUMENTATION -->
</body>
</html>
</xsl:template>
</xsl:stylesheet>