`
yuanlg
  • 浏览: 77953 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

JBPM4.4简介(六)-流程的执行(转)

 
阅读更多

流程执行

流程定义完成之后,就可以创建流程实例(ProcessInstance来按照这些流程定义进行流转。流程实例的概念很容易理解。

比如,公司的请假制度是:先给张三审批,然后还得给李四审批,最后还得王五去审批,这三个人审批都结束之后,请假单才能生效。这些描述就是流程定义(ProcessDefintion)。

现在假设员工“小赵”生病了要请假,在现实中,他需要拿到请假条,并且按照请假条上固定的格式填写好请假的内容(比如:谁请假,请假的时间,请假单的天数等等)之后,按照公司的规定,把请假条首先拿给张三去审批。张三审批完成之后,再拿给李四去审批……

“小赵”拿到请假条,填写内容这样的事情,我们可以称之为“创建流程实例(ProcessInstance”。小赵将请假条交给张三去审批这样的事情,我们可以称之为“提交”;张三审批完成之后再拿给李四去审批这样的事情,也可以称之为“提交”。

       所以,流程定义(ProcessDefinition)我们可以理解为流转规则的定义;而流程实例(ProcessInstance)则可以理解为按照特 定规则对某些数据执行流转。比如上述例子中,“小赵的请假条”,我们就可以理解为一个流程实例(ProcessInstance)对象。每个流程实例都会 包含有各种数据,比如“小赵的请假条”这个流程实例,可能就包含了:请假者是小赵,请假时间是某年某月某日,请假天数是3天,请假事项是“有病要去医院” 等等这些数据。这些数据可以称为“流程实例变量”。

       在JBPM4中,创建流程实例并把流程实例提交到第一个环节(比如张三审批这个环节是第一个环节)称为“启动流程实例(startProcessInstance”。

publicclassJbpm_02_StartProcessInstance extendsTestCase{

   

    //根据流程定义,启动一个新的流程实例

    publicvoidtestStartProcessInstance(){

      

       //流程引擎

       ProcessEngine engine = newConfiguration()

           .setResource("jbpm.cfg.xml").buildProcessEngine();

      

       Map instanceVariables = newHashMap();

       instanceVariables.put("leaver", "小赵"); //请假者

       instanceVariables.put("leaveDate", newDate()); //请假时间

       instanceVariables.put("leaveDays", 5); //请假天数

       instanceVariables.put("reason", "有病要去医院"); //请假事项/原因

      

       //启动流程实例

       ProcessInstance processInstance =

              engine.getExecutionService()

                  .startProcessInstanceByKey("LEAVE",instanceVariables);

      

       System.out.println("流程实例【"+processInstance.getId()+"】已经被创建了!");

    }

}

在上面的例子中,我们调用startProcessInstanceByKey方法来启动流程实例,传了两个参数:

第一个参数是流程定义的KEY

第二个参数是流程实例变量

 

我们调用这个方法,JBPM将自动查询对应流程定义KEY的最新版本的流程定义对象来创建流程实例对象,并把流程实例对象提交到第一个环节。

 

当然,实际上更加常见的用法是:像请假单的这些数据,可以存放在我们自己的业务表中,然后在启动流程实例的时候,直接用业务表中的主键值作为流程实例的KEY即可(即无需把所有的业务数据都传递给JBPM),如下所示:

    publicvoidtestStartProcessInstance02(){

      

       //流程引擎

       ProcessEngine engine = newConfiguration()

           .setResource("jbpm.cfg.xml").buildProcessEngine();

      

       //启动流程实例

       ProcessInstance processInstance =

              engine.getExecutionService()

                  .startProcessInstanceByKey("LEAVE","101");

      

       System.out.println("流程实例【"+processInstance.getId()+"】已经被创建了!");

    }

在这个例子中,我们用的是另外的一个方法来启动流程实例,第一个参数的意义与前面例子的一样,第二个参数则是流程实例的KEY。

 

流程实例也是有KEY这种概念的,流程实例的KEY,刚才说了,一般是将业务对象的键值作为流程实例的KEY。比如,上面我们给了一个“101”,这是我 们假设某个请假单的ID是101,现在,我们要给这个请假单创建一个流程实例对象(以便于这个请假单能在JBPM中进行流转)。

 

当然,还有更多的方法,也可以用于启动流程实例,具体请参考JBPM4的API,我们在课堂上对此将做详细的介绍。

 

在启动流程实例之后,数据库中JBPM4_EXECUTION表将被添加相应的记录:

JBPM4.4简介(六)-流程的执行 - 冬虫夏草 - 瞇孒璐  钚崾哭

分享到:
评论

相关推荐

    JBPM5工作流引擎 S2SH+JBPM4.4开发工作流的一个完整的请假流程例子

    JBPM5工作流引擎 S2SH+JBPM4.4开发工作流的一个完整的请假流程例子。带有文档教程和所有源码+JAR包。在网上找了半天jbpm6\jbpm7的资料,都很少。所以 环境:Myeclipse2015 JDK1.7 mysql 5.0 Struts2+Spring3.1 1...

    jbpm4.4 resource-1

    JBPM,全称是Java Business Process Management(业务流程管理),它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。jBPM是公开源代码项目,它使用要遵循 ASL...

    jbpm4.4学习笔记

    3 Jbpm4.4介绍 7 3.1工作流引擎 8 3.2jpdl 8 3.3数据库 8 3.3.1资源库和运行时表结构 8 3.3.2历史数据库表 9 3.3.3身份认证表 9 3.4jbpm.cfg.xml 9 3.5 jbpm.hibernate.cfg.xml 10 3.6logging.properties 10 4 准备...

    JBPM4.4中文教程

    JBPM,全称是Java Business Process Management(业务流程管理),它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。 此文档为JBPM4.4的中文教程。

    JBPM4.4用户手册.doc

    JBPM4.4工作流用户手册(适合于初始学JBPM4的人),本用户下还有JBPM4.4开发指南(适合于有点经验的人),2011-03-28参考自http://www.family168.com/tutorial/jbpm4.0/html/index.html,可直接浏览网站, ...

    jbpm4.4实例

    jbpm4.4实例,虽然有点糙,但是整个流程可以顺利执行下来,可以查看当前用户的任务和组任务,执行任务,查看任务详情

    JBPM4.4学习相关代码

    JBPM工作流的使用: 业务流程定义管理 启动流程时,默认启动最新版本流程 业务流程执行管理 流程定义语言 (预定义活动节点)

    jBPM 4.4用户手册

    持久执行模式是指流程定义、 流程执行以及流程历史都保存在关系数据库中, 这是jBPM实际通常使用的方式。 这个用户指南介绍了jBPM中支持的使用方式。 开发指南介绍了更多的、高级的、定制的、 没有被支持的选项。

    jpbm4.4学习文档及数据库表结构

    jbpm4.4入门学习的好文档 1.工作流基础 2.开发环境 3.核心概念与相关api 4.processenginee serviceapi 5.管理流程定义 6.执行流程实例 7.流程定义语言 8.应用 与其他框架的集成

    jbpm-4.4 api帮助文档

    JBPM,全称是Java Business Process Management(业务流程管理),它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。jBPM是公开源代码项目,它使用要遵循 Apache ...

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

    把流程部署到服务器上去 54 4.1 部署流程定义和资源文件 54 4.2 部署流程Java类的3个方法 57 4.3 例程:部署业务流程定义 58 4.4 小结 61 第5章 使用jBPM4 Service API控制流程 62 5.1 流程定义、流程实例和执行的...

    揭秘jbpm流程引擎内核设计思想及构架

     4引擎内核所关注的四个主要问题 4.1模型与定义对象 4.2调度机制与算法 4.3执行机制与状态 4.4实例对象与执行环境 5jbpm,“精简”的开源流程引擎 6jBpm流程模型与定义对象 6.1首先解决如何形式化描述一个...

    JBOSS ESB程序员指南

    8. 第六章 流程引擎支持 51 8.1. jBPM 51 9. 第七章 Webservices支持 52 9.1. JBossWS 52 10. 第八章 Web Services编排 53 10.1. WS-BPEL 53 11. 第九章 服务日程安排 54 11.1. 介绍 54 11.2. 简单日程表 54 11.3. ...

    Spring攻略(第二版 中文高清版).part2

    第1章 Spring简介 1 1.1 实例化Spring IoC容器 1 1.1.1 问题 1 1.1.2 解决方案 1 1.1.3 工作原理 3 1.2 配置Spring IoC容器中的Bean 4 1.2.1 问题 4 1.2.2 解决方案 4 1.2.3 工作原理 4 1.3 调用...

    Spring攻略(第二版 中文高清版).part1

    第1章 Spring简介 1 1.1 实例化Spring IoC容器 1 1.1.1 问题 1 1.1.2 解决方案 1 1.1.3 工作原理 3 1.2 配置Spring IoC容器中的Bean 4 1.2.1 问题 4 1.2.2 解决方案 4 1.2.3 工作原理 4 1.3 调用...

    JBoss Seam 工作原理、seam和hibernate的范例、RESTFul的seam、seam-gen起步、seam组件、配置组件、jsf,jboss、标签、PDF、注解等等

    JBoss Seam 简介......................................................................................................................................................................... 11 Chapter 1. ...

Global site tag (gtag.js) - Google Analytics