Skip navigation

OSWorkflow Support

OpenSymphony's OSWorkflow is a simple FOSS workflow engine, similar in philosophy to JBoss jBPM. It has a nice clean API which makes it straightforward to integrate with Mule via the [BPM Connector].

Mule Config
<mule-configuration id="bpmTestConfig" version="1.0">

    <connector name="bpmConnector" className="org.mule.providers.bpm.ProcessConnector">
        <properties>
            <property name="bpmsClass" value="org.mule.providers.bpm.osworkflow.OsWorkflow"/>
            <property name="allowGlobalDispatcher" value="true"/>
        </properties>
    </connector>

    <model name="processModel">
        <mule-descriptor name="fromMessageProcess" implementation="org.mule.components.simple.LogComponent">
            <inbound-router>
                <endpoint address="bpm://message" />
            </inbound-router>
            <outbound-router>
                <router className="org.mule.routing.outbound.OutboundPassThroughRouter">
                        <endpoint address="vm://echo" />
                </router>
            </outbound-router>
        </mule-descriptor>

        <mule-descriptor name="echoService" implementation="org.mule.components.simple.EchoComponent">
            <inbound-router>
                <endpoint address="vm://echo" />
            </inbound-router>
        </mule-descriptor>
    </model>

</mule-configuration>
Workflow
<workflow>
  <initial-actions>
    <action id="1" name="start">
      <results>
        <unconditional-result old-status="Starting" status="Processing" step="1"/>
      </results>
    </action>
  </initial-actions>

  <steps>
    <step id="1" name="sendMessage">
      <actions>
        <action id="2" name="sendMessage">
          <pre-functions>
            <function type="class">
              <arg name="class.name">org.mule.providers.bpm.osworkflow.functions.SendMuleEvent</arg>
              <arg name="endpoint">vm://echo</arg>
              <arg name="payload">Message in a bottle.</arg>
              <arg name="synchronous">true</arg>
            </function>
          </pre-functions>
          <results>
            <unconditional-result old-status="Processing" status="Processing" step="2"/>
          </results>
        </action>
      </actions>
    </step>

    <step id="2" name="receiveMessage">
      <actions>
        <action id="3" name="receiveMessage">
          <results>
            <result old-status="Processing" status="Finished" step="3">
                    <conditions>
                      <condition type="class">
                        <arg name="class.name">org.mule.providers.bpm.osworkflow.conditions.ValidateMessage</arg>
                        <arg name="expectedValue">Message in a bottle.</arg>
                      </condition>
                    </conditions>
              <arg name="endpoint">vm://echo</arg>
              <arg name="payload">Message in a bottle.</arg>
              <arg name="synchronous">true</arg>
            </function>
          </pre-functions>
          <results>
            <unconditional-result old-status="Processing" status="Processing" step="2"/>
          </results>
        </action>
      </actions>
    </step>

    <step id="2" name="receiveMessage">
      <actions>
        <action id="3" name="receiveMessage">
          <results>
            <result old-status="Processing" status="Finished" step="3">
                    <conditions>
                      <condition type="class">
                        <arg name="class.name">org.mule.providers.bpm.osworkflow.conditions.ValidateMessage</arg>
                        <arg name="expectedValue">Message in a bottle.</arg>
                      </condition>
                    </conditions>
            </result>
            <unconditional-result old-status="Processing" status="Error" step="4"/>
          </results>
        </action>
      </actions>
    </step>

    <step id="3" name="end" />

    <step id="4" name="error">
          <actions>
            <action id="5" name="startOver">
              <results>
                <unconditional-result old-status="Error" status="Starting" step="1"/>
              </results>
            </action>
          </actions>
    </step>
  </steps>
</workflow>
Adaptavist Theme Builder Powered by Atlassian Confluence