Steptypes.xml Example

You can 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. You can only have one steptypes.json or steptypes.xml file per cartridge.

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>