Mule + JBPM by Maven - HelloWorld

1. 导入Maven工程.
2. 运行Maven install, 自动下载jar依赖.
Maven会发布war包到jboss7中."D:/iSystem/runtime/jboss-as-7.0.2.Final/jboss-as-7.0.2.Final/standalone/deployments". 如果路径不一样, 可以查找pom.xml中修改之。
3. 运行jboss 7的standalone.bat
4. 运行MuleClientTest测试方法。运行成功会在服务器端打印:hello SG visitor you say SG.

---------------------
<jms:transaction action="ALWAYS_BEGIN" /> 可以在inbound-endpoint元素中使用也可以在outbound-endpoint元素中使用
Action属性的值可以是:
NONE :表示从来不使用事务
ALWAYS_BEGIN:表示总是开启一个事务
BEGIN_OR_JOIN:表示当没有可以事务时就开启事务,当有事务时就加入事务
ALWAYS_JOIN:表示总是加入一个事务,当没有可用事务时将抛出异常
JOIN_IF_POSSIBLE:表示有可用事务就加入,没有就不使用事务
当发送或接收消息时抛了异常,那么可以在异常中配置事务的处理方式
---------------------

在mule-config.xml中引入<bpm:jbpm name="jbpm" />
然后定义<flow>
<flow name="ToBPMS2">
<composite-source>
<inbound-endpoint ref="CustomerRequest">
<jms:transaction action="ALWAYS_BEGIN" />
</inbound-endpoint>
</composite-source>
<bpm:process processName="process_test" processDefinition="process_test.jpdl.xml">
</bpm:process>
</flow>
其中inbound-endpoint定义如下:
<http:endpoint name="CustomerRequest" address="http://0.0.0.0:65070/jbpmtest"
exchange-pattern="request-response">
<!-- Translate inputStream into DomainDto class -->
<byte-array-to-object-transformer
name="ByteArrayToDomailDto1" returnClass="com.wa.jbpm.dto.DomainDto" />
<!-- Create java objects for the LoanBroker requests -->
<script:transformer>
<script:script engine="groovy">
import com.wa.jbpm.dto.*
println "********************** Domain Name : "+payload.getName()
result = new ClientRequest(payload)
</script:script>
</script:transformer>
</http:endpoint>
再定义个jms:endpoint
<jms:endpoint name="CustomerReturn" queue="jbpm.CustomerReturn"
exchange-pattern="request-response" />

在流程定义文件中process_test.jpdl.xml
可以接收来自mule的信息。
<mule-receive endpoint="CustomerRequest" name="customerRequest" type="com.wa.jbpm.dto.ClientRequest" var="clientRequest">
        <transition to="say"/>
    </mule-receive>
然后定义一个最简单的流程
    <decision g="181,50,250,150" name="say">
       <transition to="saySG">
            <condition expr="#{clientRequest.domainDto.name eq 'SG'}"/>
        </transition>
        <transition to="sayEnglish">
            <condition expr="#{clientRequest.domainDto.name eq 'USA'}"/>
        </transition>  
    </decision>
   
    <java class="com.wa.jbpm.bpm.SayLanguage" g="267,147,150,40" method="saySG" name="saySG" var="managerDto">
        <arg><object expr="#{clientRequest.domainDto}"/></arg>
        <transition to="returnPeople"/>
    </java>
    <java class="com.wa.jbpm.bpm.SayLanguage" g="32,154,130,40" method="sayEnglish" name="sayEnglish" var="managerDto">
        <arg><object expr="#{clientRequest.domainDto}"/></arg>
        <transition to="returnPeople"/>
    </java>
最后发送消息回mule
<mule-send endpoint="CustomerReturn" exchange-pattern="one-way" expr="#{managerDto}" name="returnPeople">
          <transition to="endJbpm"/>
    </mule-send>
    <end g="197,204,80,40" name="endJbpm"/>

你可能感兴趣的:(Mule JBPM)