XML Extension Definition for a Custom Workflow

The extension's XML definition file specifies the custom workflow within Workbench, including task groups (systems) designed for a particular simulation objective. All analyses performed within Workbench begin by referencing a task group. The XML file describes the task groups and declares the contained tasks.

At the extension level, the XML file must specify, at minimum:

  • Extension name

  • Interface context (must be Project)

  • Folder for storing images for task group or task icons

  • Workflow definition

At the workflow level, the XML file can specify:

  • Workflow context (required and must be Project)

  • Tasks (container for individual task definitions)

  • Task group (container for the task group definition)

  • Global callbacks

At the global callback level, the XML file can specify pre- and post-operation callbacks for Project Schematic and Workbench operations. For more information, see Defining a Global Callback and Global Callbacks .

At the task level, the XML file can specify:

  • Task name (required)

  • Task version (required)

  • Display text

  • Image name

  • Context menus

  • Callbacks

  • Property groups and properties

  • Inputs and outputs

  • Parameters

  • Remote job execution specifications

For more information, see Defining a Task.

At the task group level, the XML file can specify:

  • Task group name (required)

  • Task group version (required)

  • Header text

  • Toolbox category

  • Parametric support

  • Image name

  • Abbreviation

For more information, see Defining a Task Group.

Basic Structure of the XML Definition File

The following example of an XML file shows the basic structure:

<extension version="1" name="">
    <guid shortid="">69d0095b-e138-4841-a13a-de12238c83f3</guid>
    <script src="" />
    <interface context="Project">
        <images>images</images>
    </interface>
    <workflow name="" context="Project" version="1">    
	<callbacks>
			<onbeforetaskreset></onbeforetaskreset>
			<onaftertaskreset></onaftertaskreset>
			<onbeforetaskrefresh></onbeforetaskrefresh>
			<onaftertaskrefresh></onaftertaskrefresh>
			<onbeforetaskupdate></onbeforetaskupdate>
			<onaftertaskupdate></onaftertaskupdate>
			<onbeforetaskduplicate></onbeforetaskduplicate>
			<onaftertaskduplicate></onaftertaskduplicate>
			<onbeforetasksourceschanged></onbeforetasksourceschanged>
			<onaftertasksourceschanged></onaftertasksourceschanged>
			<onbeforetaskcreation></onbeforetaskcreation>
			<onaftertaskcreation></onaftertaskcreation>
			<onbeforetaskdeletion></onbeforetaskdeletion>
			<onaftertaskdeletion></onaftertaskdeletion>                           
			<onbeforetaskcanusetransfer></onbeforetaskcanusetransfer>
			<onaftertaskcanusetransfer></onaftertaskcanusetransfer>
			<onbeforetaskcanduplicate></onbeforetaskcanduplicate>
			<onaftertaskcanduplicate></onaftertaskcanduplicate>
			<onbeforetaskstatus></onbeforetaskstatus>
			<onaftertaskstatus></onaftertaskstatus>            
			<onbeforetaskpropertyretrieval></onbeforetaskpropertyretrieval>            
			<onaftertaskpropertyretrieval></onaftertaskpropertyretrieval>
			<onbeforedesignpointchanged></onbeforedesignpointchanged>
			<onafterdesignpointchanged></onafterdesignpointchanged>
	</callbacks>
	<tasks>        
            <task name="" caption="" icon="" version="1">
                <callbacks>
                    <onupdate></onupdate>
                    <onrefresh></onrefresh>
                    <oninitialize></oninitialize>
                    <onedit></onedit>
                    <onreset></onreset>
                    <onstatus></onstatus>
                    <onreport></onreport>
                </callbacks>
                <contextmenus>
                    <entry name="" caption="" icon="" priority="" type="">
                        <callbacks>
                            <onclick></onclick>
                        </callbacks>
                    </entry>
                </contextmenus>
                <propertygroup name="" caption="">
                    <property name="" caption="" control="" default="" readonly="" needupdate="" visible="" persistent="" isparameter="" keytype="" valuetype="" elementtype=""/>
                </propertygroup>
                <property name="" caption="" control="" default="" readonly="" needupdate="" visible="" persistent="" isparameter="" keytype="" valuetype="" elementtype=""/>
                <parameters>
                    <parameter name="" caption="" usage="" control="" version="1"/>
                </parameters>
                <inputs>
                    <input/>
                    <input type="" format=""/>
                </inputs>
                <outputs>
                    <output type="" format=""/>
                </outputs>
                <rsmjob name="" deletefiles="" version="1">
                    <inputfile id="1" name=""/>
                    <outputfile id="1" name=""/>
                    <program>
                        <platform name="" path=""/>
                        <argument name="" value="" separator=""/>
                    </program>
                    <callbacks>            
                        <oncreatejobinput></oncreatejobinput>        
                        <onjobstatus></onjobstatus>
                        <onjobcancellation></onjobcancellation>
                        <onjobreconnect></onjobreconnect>
                    </callbacks>
                </rsmjob>
            </task>
        </tasks>
        <taskgroups>
            <taskgroup name="" caption="" icon="" category="" abbreviation="" version="1" isparametricgroup="False">
                <includetask name="" external=""/>
                <includeGroup name=""/>
            </taskgroup>
        </taskgroups>
    </workflow>
</extension>