理解JBPM(java Business Process Management)的基本概念:
jPDL - JBPM Process Definition Language
JBPM简要过程:
1、定义流程(利用JPDL)
2、部署流程(部署到数据库)
3、创建公文并与流程实例绑定
4、可通过JBPM的接口,触发流程向下流动
5、可通过JBPM的接口,获得流动到某个用户那里的文档(即待处理任务列表)
6、可通过JBPM的接口,结束某个用户的任务(这将触发流程继续向下流动)
7、如此,直到结束
----------------------------------------------
测试:
1、安装JBPM
- 引入Hibernate依赖包
- 引入JBPM依赖包
* bsh.jar
* jcr-1.0.jar
* jbpm-identity.jar
* jbpm-jpdl.jar
- 引入数据库驱动
* mysql-connector-java-3.1.13-bin.jar
2、定义相关配置文件
- Hibernate配置文件
* 提供hibernate配置文件(可以从config/目录下拷贝,并修改其中的数据库连接设置即可)
3、假设现在有一个公文,需要经过:张三、李四、王五的审批之后才能结束
4、我们定义一个Document对象,及其hibernate映射,并将修改hibernate配置文件,将映射添加到其配置中(以便创建相应的数据库表)
5、现在让我们来测试一下:
- 创建数据库表: JbpmConfiguration.getInstance().createSchema();
- 定义流程: 参考process.xml
- 部署流程:
* JbpmConfiguration.getInstance() - 创建jbpmConfiguration对象
* ProcessDefinition.parseXmlResource(String); - 读取流程定义文件,创建processdefinition对象
* jbpmConfiguration.createJbpmContext(); - 创建jbpmContext对象
* context.deployProcessDefinition(definition); - 部署流程到数据库
* context.close(); - 关闭context对象
- 创建公文
- 将公文与流程绑定(即需要创建流程实例)
* JbpmConfiguration.getInstance() - 创建jbpmConfiguration对象
* jbpmConfiguration.createJbpmContext(); - 创建jbpmContext对象
* context.setSessionFactory(sessionFactory),将JBPM与程序中的session绑定
* context.getGraphSession().findLatestProcessDefinition("流程名称");
* new ProcessInstance(definition); - 创建流程实例
* context.save(processInstance); - 存储流程实例
* 在Document中添加Long processInstanceId 属性
* context.getSession().load 操作,加载Document对象
* document.setProcessInstanceId - 绑定流程实例到公文
* processInstance.getContextInstance.createVariable("document",document.getId()) - 绑定公文到流程实例
- 公文创建者提交公文
* (Document)context.getSession().load(Document.class, 1); - 加载公文信息
* context.getProcessInstance(从公文中获取的流程实例ID); - 即根据流程实例ID加载流程实例
* processInstance.getRootToken().signal(); - 触发流程往下走(即到达第一个节点)
- 这时候,我们可以测试一下,看看流程当前所处的节点
* processInstance.getRootToken().getNode().getName()
- 第一个节点对应的用户登录,应该能够查询到其当前的任务(有公文等待其审批)
* List tasks = context.getTaskMgmtSession().findTaskInstances("张三"); - 查找张三的任务列表
* 列表元素是TaskInstance实例
* 通过:taskInstance.getProcessInstance().getContextInstance().getVariable("document"); 可以找到其绑定的公文ID
- 查找到当前的任务对应的公文之后,即可对其审批,并继续往下走
* taskInstance.end();
- 如此,直到结束
* processInstance.hasEnded() - 如果流程已经到达终点,本调用将返回true
分享到:
相关推荐
本文件从JBPM的原理、实现方法、实例等方面详细讲解了JBPM的原理,包括以下内容: 1、JBPM特色: 3 2、流程图的组成: 3 2.1流转 (TRANSITION) 3 2.2活动 (ACTIVITY) 3 3、所用到的表: 4 3.1资源库与运行时表结构:...
通过jbpm源码分析jbpm引擎内核工作原理
详细讲解了JBPM工作流的概念以及使用,可以让大家更加轻松把jbpm工作流应用到自己的项目中。
Jbpm 工作流在普通的应用中,基本上对数据库进行一次操作代表着一个业务的发生,等操作完成后,也就标示着业务的完成。例如用户注册这个业务。只要向数据库中添加一条记录,就标示着业务的完成。 但是对于一个报销...
jBPM工作流详解,jBPM工作流详解 jBPM工作流详解,jBPM工作流详解 jBPM工作流详解,jBPM工作流详解
JBPM4轻量级,简单初步的基础的开发步骤
工作流程 JBPM工作流管理工作流程 JBPM工作流管理工作流程 JBPM工作流管理工作流程 JBPM工作流管理
JBPM JBPM开发 jbpm开发步骤 jbpm原理
jbpm工作流引擎基于J2EE的轻量级,纯java,开源的工作流管理系统。
jbpm工作流程jbpm工作流程jbpm工作流程jbpm工作流程jbpm工作流程
jbpm工作流详解
jbpm开发指南 jbpm开发指南 jbpm 工作流 自定义
JBPM工作流,工程即jbpm_5_leave_web,附Mysql版的数据库sql,其实jbpm都自带了各种数据库版本的,也可以自己生成。附带了几张成功运行的截图。工程是完整的直接运行,带jar包。
jbpm工作流基础视频,讲解工作流流程定义的整个过程,适合于jbpm的初学者学习
一个JBPM工作流例子,JBPM实现销售批复
JBPM工作流全套学习资料!比较全面的介绍了jbpm,可以作为学习工作流的参考资料.
jbpm工作流引擎介绍以及出差报销实例,详细的图解和流程
利用jbpm工作流实现的一个工作流开发例子。对初学者有很好的参考价值。
jbpm工作流教程,4.1版本的Java工作流
基于JBPM工作流的OA办公系统开发框架,完全支持二尺开发