`
suhuanzheng7784877
  • 浏览: 709405 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Ff8d036b-05a9-33b5-828a-2633bb68b7e6
读金庸故事,品程序人生
浏览量:47957
社区版块
存档分类
最新评论

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

    博客分类:
  • jbpm
阅读更多

流程实例流到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 user guide

    - 描述了jBPM4的核心组件——进程引擎的作用和功能。 - 进程引擎负责解析流程定义,并驱动流程实例的执行。 - **5.3 部署流程** - 介绍了如何将定义好的流程部署到jBPM环境中。 - 包括上传文件、配置参数等步骤...

    JBPM4工作流应用开始指南.rar

    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简介 jBPM(Java Business Process Model)是一个开源的工作流引擎,由JBoss维护,广泛应用于业务流程管理(BPM)场景。它提供了一种简单而强大的...

    jbpm数据库表结构

    本文将深入探讨JBPM的核心组成部分之一——数据库表结构。 #### 二、核心表介绍 JBPM的核心表结构覆盖了从流程定义到执行过程中的各个关键环节,具体包括但不限于以下几类: 1. **流程定义相关的表** - **JBPM_...

    jBPM4_3用户指南.pdf

    - **活动节点:** 解释了不同的活动节点,如start、State状态节点等。 - **决策节点:** 如何定义决策节点(decision node)及其条件。 - **并发节点:** 如何实现并发控制。 - **结束节点:** 如何定义结束节点(end ...

Global site tag (gtag.js) - Google Analytics