<?xml version="1.0" encoding="UTF-8"?>
<process name="hetman.proc" prefix="hetman" manager="hetman.SampleManager" stateView="hetman.view" errorView="hetman.error" breakView="hetman.break">
<connectors>
<connector name="connector1"/>
<connector name="connector2"/>
<connector .....
</connectors>
<states>
<!-- full definition of state -->
<state
id="STATE_A"
view="hetman.proc.STATE_A.view
>
<params>
<param name="name1" value="1111" type="Long"/>
<param name="name2" value="1980-08-28" type="Date" format="yyyy-MM-dd"/>
<param name="name3" value="value3"/>
</params>
<transitions>
<!-- full definition of transition -->
<transition
destination="STATE_B"
label="State B"
breakAfterTransition="true"
redirectAfterTransitionURL="http://..."
action="hetman.proc.STATE_B.action"
condition="hetman.proc.STATE_B.condition"
form="hetman.proc.STATE_B.form"
>
<params>
<param name="name1" value="value1"/>
<param name="name2" value="value2"/>
<param .....
</params>
<privs>
<priv id="8" />
<priv name="ADMIN"/>
<priv .....
</privs>
</transition>
<group name="GROUP_1" form="hetman.proc.groups.GROUP_1.form">
<transition destination="STATE_C" label="State C"/>
<transition destination="STATE_D" label="State D"/>
</group>
</transitions>
</state>
<state id="STATE_B">
<transitions>
<transition destination="STATE_E"/>
</transitions>
</state>
<state id="STATE_C"/>
<state id="STATE_D"/>
<!-- subprocess definition -->
<subprocess name="SUBPROCESS_1">
<state id="STATE_E" first="true">
<transitions>
<transition destination="STATE_F" />
<transitions/>
</state>
<state id="STATE_F">
<transitions>
<transition destination="STATE_G" />
<transition destination="STATE_H" />
<transitions/>
</state>
<state id="STATE_G" last="true" success="true"/>
<state id="STATE_H" last="true" success="false"/>
</subprocess>
</states>
</process>
redirectAfterTransitionURL="$page.url("hetman.proc.page", $_RowID, $+("&HSubprocess=MAIN¶m1=", $param1))"/>
Aby dla danego procesu włączyć obsługę podprocesów należy zdefiniować przynajmniej jeden podproces. Stany podprocesu należy objąć tagiem subprocess. Jeżeli dany proces ma uruchomioną obsługę podprocesów, stany nie wchodzące w skład żadnego podprocesu automatycznie tworzą podproces główny o nazwie MAIN.
Przykładowa definicja podprocesu:
<states>
...
...
<!-- subprocess definition -->
<subprocess name="SUBPROCESS_1">
<state id="STATE_E" first="true">
<transitions>
<transition destination="STATE_F" />
<transitions/>
</state>
<state id="STATE_F">
<transitions>
<transition destination="STATE_G" />
<transition destination="STATE_H" />
<transitions/>
</state>
<state id="STATE_G" last="true" success="true"/>
<state id="STATE_H" last="true" success="false"/>
</subprocess>
</states>