JBPM4学习总结之3——State(状态活动)

流程实例流到State状态活动时,就陷入了一个中断、等待状态,必须得收到外部的干预操作后才能继续运行,

最简单的State流程图如下

 

流程XML代码如下:

<?xml version="1.0" encoding="UTF-8"?>

 

<process name="helloworld" xmlns="http://jbpm.org/4.4/jpdl">

    <start g="123,78,48,48" name="start1">

       <transition name="to state1" to="state1" g="-56,-22" />

    </start>

    <end g="130,313,68,48" name="end1" />

    <state g="92,181,122,52" name="state1">

       <transition g="-50,-22" name="to end1" to="end1" />

    </state>

</process>

测试代码如下:

/**

 * 发起流程实例

 */

public void test01StartInstence() {//

   

    HashMap<String,Object> parm = new HashMap<String,Object>();

    parm.put("MyId", "13000000000");

    parm.put("MyName", "liuyan");

    parm.put("MyDate", new Date());

   

    ProcessInstance processInstance = executionService

           .startProcessInstanceById("helloworld-1",parm);

 

    System.out.println(processInstance);

}

 

/**

 * 继续往下执行流程实例

 */

public void test02NextInstence() {

 

    ProcessInstance pi = executionService

           .signalExecutionById("helloworld.10001");

 

    System.out.println(pi.isEnded());

}

可以看到,通过

ProcessInstance pi = executionService.signalExecutionById("helloworld.10001");方法将流程继续执行下去,这里就是外部干预了,之后流程归入END节点。

 

下面可以看一下可以选择不同的State的流程,流程图如下:

 

代码如下:

<?xml version="1.0" encoding="UTF-8"?>

 

<process name="StateChoice" xmlns="http://jbpm.org/4.4/jpdl">

    <start name="start1" g="35,96,96,48">

       <transition name="to wait" to="wait" g="-44,-22" />

    </start>

    <state name="wait" g="131,97,154,52">

       <transition name="ok" to="OK" g="-29,-18" />

       <transition name="canle" to="Canle" g="-6,-21" />

    </state>

    <state name="OK" g="59,223,92,52" />

    <state name="Canle" g="251,223,92,52" />

</process>

测试代码如下:

// 开始process流程

ProcessInstance processInstance = executionService

                   .startProcessInstanceByKey("StateChoice");

 

// 流程实例的ID

String eid = processInstance.getProcessInstance().getId();

 

String pid = processInstance.getId();

 

processInstance= executionService.createProcessInstanceQuery().processInstanceId(pid).uniqueResult();

 

processInstance = executionService.signalExecutionById(eid, "ok");

 

boolean isAction = processInstance.isActive("OK");

 

System.out.println(isAction);

可以看出通过 executionService.signalExecutionById(eid, "ok"); 将流程引到了 ok 分支。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值