Jbpm是一种工作流引擎,常用来做OA系统等。
工作流系统研究切入点(如何去学习工作流的一个思路,这是一个业务流程的思路)
1.编写流程定义
2.部署流程
3.加载流程
4.启动流程
5.执行任务
6.完成任务
流程的定义:预定义的业务流转逻辑
流程实例:业务的一次实际流转过程
参与者:任务的执行者
活动(任务):组成流程定义的节点
活动实例:组成流程实例的元素
流转:从一个节点到另一个节点这一行为
工作列表:当前需要办理的任务集合
工作流的核心组件,对流程实例进行管理
Token是和指针(运行期的概念)代表着一条执行路径,指向当前流程中正在执行的节点在实例运行期间,tokens可能是一个树形结构,同一时刻可能存在多个token但是只有一个root token
-------------------------------------------------------------
针对Jbpm如何去按上面的思路去做呢?
1.流程的定义:可以用图形化的工具也可以自己手工写。
2.部署流程:通过加载xml文件,把xml信息转换成java信息。发布流程
JbpmContext jbpmContext=JbpmConfiguration.getInstance().createJbpmContext();
GraphSession graphSession=jbpmContext.getGraphSession();
ProcessDefinition processDefinition=ProcessDefinition.parseXmlResource("org/test/a.xml");
//部署流程定义,如果已经存在同名的定义,则版本号会自动累加
graphSession.deployProcessDefinition(processDefinition);
jbpmContext.close();
3.加载流程和启动流程:
JbpmContext jbpmContext=JbpmConfiguration.getInstance().createJbpmContext();
GraphSession graphSession=jbpmContext.getGraphSession();
//加载流程的定义
ProcessDefinition processDefinition=graphSession.loadProcessDefinition(processDefinitionID);//这个Id是流程的Id
//创建流程实例,启动流程
ProcessInstance processInstance=new ProcessInstance(processDefinition);
//此时,rootToken指向流程定义的第一个节点
jbpmContext.save(processInstance);
jbpmContext.close();
4.获取工作列表
JbpmContext jbpmContext=JbpmConfiguration.getInstance().createJbpmContext();
TaskMgmtSession mgmtSession=jbpmContext.getTaskMgmtSession();
//只能获取尚未完成的任务列表(代办任务)
List list=taskMgmtSession.findTaskInstance(userId);//userid为参与者的id
//如果需要灵活的列表获取接口,需要直接使用hibernate session对象对数据进行查询
TaskInstance instance=mgmtSession.getTaskInstance(Long.parseLong(taskId));
//这两种获取列表的方式不太一样,第一个返回List,第二个返回TaskInstance对象
5.执行任务
JbpmContext jbpmContext=JbpmConfiguration.getInstance().createJbpmContext();
TaskMgmtSession mgmtSession=jbpmCotext.getTaskMgmtSession();
TaskInstance taskInstance=mgmtSession.getTaskInstance(Long.parseLong(taskId));
taskInstance.start(); //start方法的调用标识着一个任务执行的开始,任务的开始时间会被填充
jbpmContext.save(taskInstance);
jbpmContext.close();
6.结束任务
JbpmContext jbpmContext=JbpmConfiguration.getInstance().createJbpmContext();
TaskMgmtSession mgmtSession=jbpmContext.getTaskMgmtSession();
TaskInstance taskInstance=mgmtSession.getTaskInstance(Long.parseLong(taskId));
taskInstance.end();
jbpmContext.save(taskInstance);
jbpmContext.close();
//end方法的调用1.当前的任务实例结束,任务结束时间会被填充。2.下一个节点的初始化3.当前任务的结束和下一
//个流程的开始是在一个事物内完成,从而保证了数据的完成性
-------------------------
如何给任务设置参与者
1.用变量传递参与者Id
值一般的web层确定
2.定义配置
<task-node name="collection">
<task>
<assignment class="com.modern.Test">
<assignment actor-id='#{userid}'>
</task>
</task-node>
3.Handler实现
public class F implements AssignmentHandler{
public void assign(Assignable arg0,ExecutionContext arg1)throws Exception{
String actorId=(String)arg1.getVariable("userId");
arg0.setActorId(actorId);
}
}
---------------------
Context标识着事物
它的的底层序列化是用hibernate实现的,createContext是开启hibernatesession的过程,close 是关闭hibernatesession的过程
JbpmContext jbpmContext=JbpmConfiguration.getInstance().createJbpmContext();
try{
TaskInstance taskInstance=
.............do your process operations.............
}catch(Exception e){
}finally{
jbpmContext.close();
}
---------------------------------------
两种session的用法:
GraphSession的典型用法
职责;GraphSession处理相关的数据持久化操作,主要是ProcessDefinition 和ProcessInstance
TaskMgmtSession 的典型用法:
职责:1.TaskInstance相关的数据的查询操作
2.TaskInstance数据通过ProcessInstance进行保存它没有save方法,save是通过对processInstance的操作实现的
**********************************
jbpm是工作流的一种
jbpm_processdefinition 是工作流的流程定义
jbpm_processInstance是工作流的实例
jbpm_id_user是一个参与者
jbpm_token是这Token的一个表,其中node记录正在执行的节点
jbpm_bytearray存所上传的3个文件,生成图片是为了流程跟踪
jbpm_byteblock存的是上传文件里的内容
分享到:
相关推荐
### jBPM 白皮书:介绍 jBPM 入门 #### 一、引言与背景 在当今数字化转型的时代背景下,业务流程管理(Business Process Management,简称 BPM)成为了企业提升效率、优化流程的关键技术之一。BPM 提供了一种程序...
【JBPM入门】 JBPM,全称是Java Business Process Management,是一个开源的工作流管理系统,用于实现业务流程自动化。它提供了一套完整的工具集,包括设计、建模、执行和监控业务流程,支持BPMN2.0标准,使得业务...
斯坦福特jbpm入门资料,内容不错,由浅入深,系统讲解了jbpm,是不错的入门资料噢
【jbpm的入门1--简单实例】 jbpm(Java Business Process Management)是一个开源的工作流管理系统,它提供了完整的业务流程管理解决方案,包括流程设计、执行、监控和优化。本实例将带你初探jbpm的世界,通过一个...
首先,"jBPM 开发入门指南"提供了一个系统性的引导,涵盖了jBPM的基本概念、安装配置、工作流设计、任务管理和事件处理等内容。它通常会讲解如何创建第一个流程定义,以及如何使用jBPM提供的工具进行流程建模。通过...
**JBPM4.4入门开发实例** JBPM(Java Business Process Management)是一个开源的工作流程管理系统,专注于业务流程的建模、执行和监控。版本4.4是JBPM的一个早期版本,尽管现在已经有更新的版本,但这个入门实例...
jbpm入门例子收藏 jBPM(Java Business Process Management)是一个开源的工作流管理系统,由JBoss组织开发。它主要用于管理业务流程,支持流程定义、执行、监控和优化。jBPM提供了一整套工具,包括Eclipse插件,...
**jbpm4.4入门编程小例子** Jbpm(Java Business Process Management)是一个开源的工作流管理系统,主要用于处理业务流程的建模、部署、执行和监控。jbpm4.4是该系统的较早版本,但它仍然是许多开发人员学习工作流...
JPBM4.4入门小例子,适合刚开始准备学工作流的筒子们。。
**jbpm入门实践** jbpm 是一款开源的工作流管理系统,主要用于设计、执行和管理业务流程。本文主要针对jbpm 5.2版本进行入门实践,适合初级用户学习。首先,我们要进行必要的安装与配置。 **一、jbpm的准备工作** ...
jbpm5入门学习资料
三、jbpm入门示例 在这个"myjbpm"压缩包中,你可能找到了一个简单的jbpm流程示例,通常包括以下组成部分: 1. 流程定义文件(.bpmn20.xml):用BPMN 2.0标准定义的流程图,描述了流程的任务和流转规则。 2. 图形文件...
在jbpm入门过程中,首先需要理解的是它的核心概念: 1. **流程定义**:jbpm使用BPMN 2.0(Business Process Model and Notation)标准来定义流程。BPMN是一种图形化的语言,用于描述业务流程的逻辑,包括开始事件、...
**jBPM4用户指南入门教程** jBPM4是一个基于Java的企业级工作流管理系统,它为业务流程管理(BPM)提供了全面的解决方案。本教程将引导您逐步了解如何安装配置、使用流程设计器、部署业务归档以及利用服务和jpdl...
**JBPM4.4工作流入门例子 - HelloWorld** ...总之,JBPM4.4提供了一个强大且灵活的工作流平台,通过"HelloWorld"这样的入门实例,你可以逐步掌握如何构建和管理业务流程,从而实现企业流程的自动化和优化。
《jbpm开发入门指南》和《jbpm开发指南》是两本针对jbpm框架的重要参考资料,对于初学者和有经验的开发者来说都是宝贵的资源。它们通常会涵盖以下核心知识点: 1. **jbpm概述**:介绍jbpm的基本概念,包括它的工作...
jBPM,全称Java Business Process Management,是一个由JBoss组织开发的开源工作流管理系统,主要负责业务流程的建模、执行和管理。它提供了一套完整的工具链,包括Eclipse插件,使得开发者能够方便地设计、部署和...
jbpm(Java Business Process Management)是一款开源的工作流程管理系统,它为业务流程的建模、部署、执行和监控提供了全面的解决方案。jbpm以其强大的功能、灵活性和社区支持,深受开发者和企业的欢迎,尤其适合在...