ProcessDefinition :
这个最好理解,就是流程的定义,也就相当于规范。
ProcessDefinition也有id,这个id是 {key}-{version}
在部署过程中,会把一个id分配给流程定义。 这个id的格式为{key}-{version}, key和version之间使用连字符连接。
如果没有提供key, 会在名字的基础自动生成。 生成的key会把所有不是字母和数字的字符替换成下划线。
ProcessInstance :
这个也比较好理解,就是流程的一个实例。
在系统中,也有一个ProcessInstance的Id
key可以用来创建流程实例的id, 格式为{process-key}.{execution-id}。
如果没有提供用户定义的key,数据库就会把主键作为key。
用Java来讲: ProcessDefinition就是代码中的一个类,而ProcessInstance就是把这个类new了出来,创建了一个实例;
Execution :目前这个还比较难以理解。
在jBPM官方上是这么说的:
http://jboss.org/jbpm 写道
Each execution of a process definition is called a process instance.
每一个流程定义的实施,被成为process instance。这个只讲了ProcessDefinition与ProcessInstance之间的关系。
在ExecutionService中,start的是ProcessInstance。
在ProcessInstance的JavaDoc中把ProcessInstance和Execution区别讲了出来:
ProcessInstance的Javadoc 写道
a process instance is one execution of a process definition. One process instance can have many concurrent executions. Executions are structured in a tree of which the ProcessInstance is the root.
一个Process Instance(流程实例)是一个ProcessDefinition(流程定义)的执行;
一个Process Instance(流程实例)可以有许多同时执行的步骤(concurrent executions)
执行步骤组成了以ProcessIntance(流程实例)为根节点(root)的结构化树
在文档中,关于ExecutionId和ProcessId,在介绍的时候有这么一句:
http://www.family168.com/tutorial/jbpm4.0/html/services.html 写道
有时execution id和流程实例id是不同的 ,当一个节点中使用了定时器,execution id中就会使用额外的后缀, 这就会导致当我们通过execution id查询时,这个节点不会出现在结果列表中。
实际操作下来也是如此:
刚开始的时候,ExectionId与ProcessId是相同的;
如果流程执行中,每时刻只有一个步骤(是否可以说任务)在处理,则ExectionId和ProcessId是相同的,
但是当同一时刻有多个任务要处理,譬如上述的定时器、或者进入fork/join流程,这个时候ExectionId和ProcessId就不同。
可以理解为Execution为执行路径,当同时有几个路径在执行,ExecutionId就和ProcessId不同了
而且:Execution是ProcessInstance的基类
具体的表现就是
Java代码
// get execution service
ExecutionService executionService = processEngine.getExecutionService();
// get current execution through processId
Execution execution = executionService.findExecutionById(processId);
// get a task query
TaskQuery tq = taskService.createTaskQuery();
// get current task
List<Task> taskList1 = tq.executionId(execution.getId()).list();
List<Task> taskList2 = tq.processInstanceId(processId).list();
// get execution service ExecutionService executionService = processEngine.getExecutionService(); // get current execution through processId Execution execution = executionService.findExecutionById(processId); // get a task query TaskQuery tq = taskService.createTaskQuery(); // get current task List<Task> taskList1 = tq.executionId(execution.getId()).list(); List<Task> taskList2 = tq.processInstanceId(processId).list();
上述的程序,如果在一般时候,taskList1,和taskList2是一样的。
但是当进入fork/join流程,这个时候executionId已经更改,
taskList1取不到任何任务,taskList2能取回任务
Task :
Task简单,就是当前要做的工作。
JavaDoc中 写道
a runtime task. In contrast to HistoryTask, a Task only represents the runtime state of a task and hence it will be deleted after it is completed.
分享到:
相关推荐
BPM4中ProcessDefinition、ProcessInstance、Execution、Task关系和区别
介绍jbpm4里的processDefinition、processInstance和Task的使用方法。 代码里的注释的编码方式为utf-8
jBPM 4.4用户手册 翻译官方文档 JBoss jBPM Teams 4.4 译者: Lingo 首页: http://www.family168.com/ 论坛: http://old.family168.com/bbs EMAIL: lingosurf168@gmail.com 2009年11月1日 1. 导言 1.1. 许可...
eclipse 下安装jbpm-4.4 的安装步骤
jbpm4.4 jar 包下载jbpm4.4 jar 包下载jbpm4.4 jar 包下载jbpm4.4 jar 包下载
jbpm4.4 schema.xsd jbpm4.4 schema.xsd jbpm4.4 schema.xsd jbpm4.4 schema.xsd jbpm4.4 schema.xsd
首先感谢原创,相关信息请查询原创。... 看到好多朋友找不到相应的jar包,致使jbpm4.4的学习遇到困难,现提供除jbpm4.4自身jar包外的所有包,以便大家更快的学习jbpm4.4,希望能帮朋友们少走弯路!
JBPM4.4与SSH2之整合(附完整源码) 这些天,想着把jbpm4.4与ssh2整合一下,由于之前从来没用过jbpm,也不知道各版本之间会有什么差异(经过网上的收集对比,还真有些差异),整合起来,还真是有些步履艰难。收集了...
jBPM 4.4 开发指南.pdf jBPM 4.4 用户指南.pdf 翻译官方文档 JBoss jBPM Teams 4.4 译者: Lingo 首页: http://www.family168.com/ 论坛: http://old.family168.com/bbs EMAIL: lingosurf168@gmail.com
jbpm4.4下载地址
jBPM4.4开发指南 开发手册 JBPM4.4 开发
资源名称:JBPM4.4视频教程(22集附源码)资源目录:【】(01)jbpm4.4简介【】(02)JBPM4.4开发环境搭建【】(03)jbpm4.4环境搭建续【】(04)jbpm4.4配置文件和开发前准备【】(05)jbpm4.4部署流程发起流程实例【】(06)...
jbpm4.4开发指南,jbpm4.4用户指南
jBPM4.4入门开发实例
jBPM4.4课程文档
JBPM4.4之HelloWorld示例
jBPM4.4数据库表简单介绍
JBPM4.4学习文档.ppt
程序运行于myEclipse10,先可安运行cn.itcast.oa.install的main函数,通过调用初始化操作... 因上传文件大小有限,帮将lib中的jar包放入了百度云中,其地址为: ...程序已完成审批流转,和系统管理及网上交流的论坛功能;
jbpm4.4 工作流框架 笔记 工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现...