流程实例流到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分支。

- 大小: 8.5 KB

- 大小: 11.7 KB
分享到:
相关推荐
- 描述了jBPM4的核心组件——进程引擎的作用和功能。 - 进程引擎负责解析流程定义,并驱动流程实例的执行。 - **5.3 部署流程** - 介绍了如何将定义好的流程部署到jBPM环境中。 - 包括上传文件、配置参数等步骤...
84 6.2.1 start(开始活动) 85 6.2.2 state(状态活动) 86 6.2.3 decision(判断活动) 89 6.2.4 fork – join(分支/聚合活动) 97 6.2.5 end(结束活动) 102 6.2.6 task(人工任务活动) 107 6.2.7 sub-process...
### jBPM小白的学习日记——深入理解流程定义与部署 #### 一、jBPM简介 jBPM(Java Business Process Model)是一个开源的工作流引擎,由JBoss维护,广泛应用于业务流程管理(BPM)场景。它提供了一种简单而强大的...
本文将深入探讨JBPM的核心组成部分之一——数据库表结构。 #### 二、核心表介绍 JBPM的核心表结构覆盖了从流程定义到执行过程中的各个关键环节,具体包括但不限于以下几类: 1. **流程定义相关的表** - **JBPM_...
- **活动节点:** 解释了不同的活动节点,如start、State状态节点等。 - **决策节点:** 如何定义决策节点(decision node)及其条件。 - **并发节点:** 如何实现并发控制。 - **结束节点:** 如何定义结束节点(end ...