The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
        <WorkflowProcess Id="unstructured-inclusive-tasks" Name="unstructured-inclusive-tasks">
            <ProcessHeader>
                <Created>2010-09-07 04:04:58</Created>
            </ProcessHeader>
            <FormalParameters>
                <FormalParameter Id="splitA" Mode="IN" Required="1">
                    <DataType>
                        <BasicType Type="STRING"/>
                    </DataType>
                </FormalParameter>
                <FormalParameter Id="splitB" Mode="IN">
                    <DataType>
                        <BasicType Type="STRING"/>
                    </DataType>
                </FormalParameter>
                <FormalParameter Id="splitB2" Mode="INOUT">
                    <DataType>
                        <BasicType Type="STRING"/>
                    </DataType>
                    <InitialValue>'C'</InitialValue>
                </FormalParameter>
                <FormalParameter Id="pathtaken" Mode="OUT">
                    <DataType>
                        <BasicType Type="STRING"/>
                    </DataType>
                </FormalParameter>
            </FormalParameters>
            <Activities>
                <Activity Id="A" Name="A">
                    <Description>You have option to change the value of variable splitA. If you don't set it, both B and B1 transitions will be taken. Set it to B to follow activity B, if you set it to B1 it will proceed to activity B1.</Description>
                    <Implementation><Task><TaskManual/></Task></Implementation>
                    <TransitionRestrictions>
                        <TransitionRestriction>
                            <Split Type="OR">
                                <TransitionRefs>
                                    <TransitionRef Id="A-B1"/>
                                    <TransitionRef Id="A-B"/>
                                </TransitionRefs>
                            </Split>
                        </TransitionRestriction>
                    </TransitionRestrictions>
                </Activity>
                <Activity Id="B" Name="B">
                    <Description>You have option to change the value of variable splitB. If you don't set it, transitions to both B1 and C will be taken. Set it to B1 to follow only activity B, if you set it to B1 it will proceed to only activity C.</Description>
                    <Implementation><Task><TaskManual/></Task></Implementation>
                    <TransitionRestrictions>
                        <TransitionRestriction>
                            <Split Type="OR">
                                <TransitionRefs>
                                    <TransitionRef Id="B-B1"/>
                                    <TransitionRef Id="B-C"/>
                                </TransitionRefs>
                            </Split>
                        </TransitionRestriction>
                    </TransitionRestrictions>
                </Activity>
                <Activity Id="B1" Name="B1">
                    <Implementation><Task><TaskManual/></Task></Implementation>
                    <TransitionRestrictions>
                        <TransitionRestriction>
                            <Join Type="OR"/>
                        </TransitionRestriction>
                    </TransitionRestrictions>
                </Activity>
                <Activity Id="B2" Name="B2">
                    <Description>You have option to change the value of variable splitB2. If you don't set it, transitions to both C and D will be taken. Set it to C to follow only activity C, if you set it to D it will proceed to only activity D.</Description>
                    <Implementation><Task><TaskManual/></Task></Implementation>
                    <TransitionRestrictions>
                        <TransitionRestriction>
                            <Split Type="OR">
                                <TransitionRefs>
                                    <TransitionRef Id="B2-C"/>
                                    <TransitionRef Id="B2-D"/>
                                </TransitionRefs>
                            </Split>
                        </TransitionRestriction>
                    </TransitionRestrictions>
                </Activity>
                <Activity Id="C" Name="C">
                    <Implementation><Task><TaskManual/></Task></Implementation>
                    <TransitionRestrictions>
                        <TransitionRestriction>
                            <Join Type="OR"/>
                        </TransitionRestriction>
                    </TransitionRestrictions>
                </Activity>
                <Activity Id="D" Name="D">
                    <Implementation><Task><TaskManual/></Task></Implementation>
                    <TransitionRestrictions>
                        <TransitionRestriction>
                            <Join Type="OR"/>
                        </TransitionRestriction>
                    </TransitionRestrictions>
                </Activity>
            </Activities>
            <Transitions>
                <Transition Id="A-B1" From="A" To="B1">
                    <Condition Type="CONDITION">!attribute('splitA') || attribute('splitA') == 'B1'</Condition>
                </Transition>
                <Transition Id="A-B" From="A" To="B">
                    <Condition Type="CONDITION">!attribute('splitA') || attribute('splitA') == 'B'</Condition>
                </Transition>
                <Transition Id="B-B1" From="B" To="B1">
                    <Condition Type="CONDITION"><Expression>!attribute('splitB') OR attribute('splitB').search('B1')</Expression></Condition>
                </Transition>
                <Transition Id="B-C" From="B" To="C">
                    <Condition Type="CONDITION"><Expression>!attribute('splitB') OR attribute('splitB').search('C')</Expression></Condition>
                </Transition>
                <Transition Id="B1-B2" From="B1" To="B2"/>
                <Transition Id="B2-C" From="B2" To="C">
                    <Condition Type="CONDITION">1</Condition>
                </Transition>
                <Transition Id="B2-D" From="B2" To="D"/>
                <Transition Id="C-D" From="C" To="D"/>
            </Transitions>
        </WorkflowProcess>