Steptypes.xml Example

Use an XML definition instead of JSON to define your custom steps. The file must be named steptypes.xml and placed in a custom cartridge in the root folder. The XML file is parsed and reloaded whenever the active code version is changed. Each cartridge supports only one steptypes.json or steptypes.xml file.

my_cartridge/steptypes.xml
<?xml version="1.0" encoding="UTF-8" ?>
<step-types>
  <script-module-step type-id="custom.DownloadFromFTP">
    <description>Downloads files from a FTP server</description>
    <module>jf_example_cartridge/cartridge/scripts/steps/FTPTransfer.ds</module>
    <function>download</function>
    <transactional>false</transactional>
    <parameters>
      <parameter name="DeleteFile" type="boolean" required="false" trim="false">
        <default-value>false</default-value>
      </parameter>
      <parameter name="FileNamePattern" type="string" required="true" trim="false"/>
      <parameter name="HostURL" type="string" required="true" trim="false"/>
      <parameter name="SourceFolder" type="string" required="true" trim="false"/>
      <parameter name="TargetFolder" type="string" required="true" trim="false"/>
      <parameter name="_SimulateExitStatus" type="string" required="false" trim="false">
        <enum-values>
          <value>ERROR</value>
          <value>NO_FILE_FOUND</value>
          <value>OK</value>
        </enum-values>
      </parameter>
    </parameters>
    <status-codes>
      <status code="ERROR">
        <description>Used when an error occurred during FTP download.</description>
      </status>
      <status code="NO_FILE_FOUND">
        <description>Used when no file could be found on the FTP.</description>
      </status>
      <status code="OK">
        <description>Used when FTP download was successful.</description>
      </status>
    </status-codes>
  </script-module-step>
  <script-module-step type-id="custom.UploadToFTP">
    <description>Uploads files to a FTP server</description>
    <module>jf_example_cartridge/cartridge/scripts/steps/FTPTransfer.ds</module>
    <function>upload</function>
    <transactional>false</transactional>
    <parameters>
      <parameter name="DeleteFile" type="boolean" required="false" trim="false">
        <default-value>false</default-value>
      </parameter>
      <parameter name="FileNamePattern" type="string" required="true" trim="false"/>
      <parameter name="HostURL" type="string" required="true" trim="false"/>
      <parameter name="SourceFolder" type="string" required="true" trim="false"/>
      <parameter name="TargetFolder" type="string" required="true" trim="false"/>
      <parameter name="_SimulateExitStatus" type="string" required="false" trim="false">
        <enum-values>
          <value>ERROR</value>
          <value>NO_FILE_FOUND</value>
          <value>OK</value>
        </enum-values>
      </parameter>
    </parameters>
    <status-codes>
      <status code="ERROR">
        <description>Used when an error occurred during FTP upload.</description>
      </status>
      <status code="NO_FILE_FOUND">
        <description>Used when no file could be found for upload to the FTP.</description>
      </status>
      <status code="OK">
        <description>Used when FTP upload was successful.</description>
      </status>
    </status-codes>
  </script-module-step>
  <script-module-step type-id="custom.RebuildIndexes">
    <module>jf_example_cartridge/cartridge/scripts/steps/RebuildIndexes.ds</module>
    <function>execute</function>
    <transactional>false</transactional>
    <parameters>
      <parameter name="RebuildContentIndexes" type="boolean" required="false" trim="false">
        <default-value>false</default-value>
      </parameter>
      <parameter name="RebuildProductIndexes" type="boolean" required="false" trim="false">
        <default-value>false</default-value>
      </parameter>
      <parameter name="_SimulateExitStatus" type="string" required="false" trim="false">
        <enum-values>
          <value>ERROR</value>
          <value>OK</value>
        </enum-values>
      </parameter>
    </parameters>
    <status-codes>
      <status code="ERROR">
        <description>Used when index rebuild failed.</description>
      </status>
      <status code="OK">
        <description>Used when index rebuild was successful.</description>
      </status>
    </status-codes>
  </script-module-step>
  <pipeline-step type-id="custom.Import">
    <pipeline>Import-Start</pipeline>
    <parameters>
      <parameter name="FileNamePattern" type="string" required="true" trim="false"/>
      <parameter name="ImportMode" type="string" required="true" trim="false">
        <enum-values>
          <value>DELETE</value>
          <value>MERGE</value>
          <value>REPLACE</value>
          <value>UPDATE</value>
        </enum-values>
      </parameter>
      <parameter name="ObjectType" type="string" required="true" trim="false">
        <enum-values>
          <value>catalog</value>
          <value>inventory</value>
          <value>pricebook</value>
          <value>promotion</value>
        </enum-values>
      </parameter>
      <parameter name="_SimulateExitStatus" type="string" required="false" trim="false">
        <enum-values>
          <value>ERROR</value>
          <value>NO_FILE_FOUND</value>
          <value>OK</value>
        </enum-values>
      </parameter>
    </parameters>
    <status-codes>
      <status code="ERROR">
        <description>Used when the import failed.</description>
      </status>
      <status code="NO_FILE_FOUND">
        <description>Used when no file to import was found.</description>
      </status>
      <status code="OK">
        <description>Used when the import was successful.</description>
      </status>
    </status-codes>
  </pipeline-step>
  <pipeline-step type-id="custom.ExportOrders">
    <pipeline>ExportOrders-Start</pipeline>
    <parameters>
      <parameter name="FileName" type="string" required="true" trim="false"/>
      <parameter name="OrderStatus" type="string" required="false" trim="false">
        <enum-values>
          <value>All</value>
          <value>ConfirmedAndPaid</value>
        </enum-values>
        <default-value>All</default-value>
      </parameter>
      <parameter name="_SimulateExitStatus" type="string" required="false" trim="false">
        <enum-values>
          <value>ERROR</value>
          <value>NO_ORDERS_FOUND</value>
          <value>OK</value>
        </enum-values>
      </parameter>
    </parameters>
    <status-codes>
      <status code="ERROR">
        <description>Used when the order export failed.</description>
      </status>
      <status code="NO_ORDERS_FOUND">
        <description>Used when no order to export were found.</description>
      </status>
      <status code="OK">
        <description>Used when the order export was successful.</description>
      </status>
    </status-codes>
  </pipeline-step>
  <chunk-script-module-step type-id="custom.MyCustomChunkScriptModuleStep">
    <description>My custom chunk script step type/description>
    <module>my_cartridge/cartridge/scripts/steps/myModule.ds</module>
    <before-step-function>beforeStep</before-step-function>
    <total-count-function>beforeChunk</total-count-function>
      <before-chunk-function>beforeChunk</before-chunk-function>
      <read-function>read</read-function>
      <process-function>process</process-function>
      <write-function>write</write-function>
    <after-chunk-function>afterChunk</after-chunk-function>
      <after-step-function>afterStep</after-step-function>
      <chunk-size>10</chunk-size>
      <transactional>true</transactional>
    <parameters>
      <parameter name="MyParameter" type="boolean" required="false" trim="false">
      </parameter>
    </parameters>
    <status-codes>
      <status code="ERROR">
        <description>Used when an error occurred.</description>
      </status>
      <status code="OK">
        <description>Used when no error occured.</description>
      </status>
    </status-codes>
  </script-module-step>
</step-types>