理解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
分享到:
相关推荐
5. **jbpm-workitems-5.4.0.Final.jar**:定义了工作项(Work Items),即流程中的特定操作或服务调用,可以自定义工作项以适应不同业务需求。 6. **jbpm-human-task-mina-5.4.0.Final.jar** 和 **jbpm-human-task-...
2. **jbpm-flow**: 提供了流程定义的模型化工具,如BPMN 2.0规范的支持。开发者可以使用这个库来定义复杂的业务流程图,并将它们转换为可执行的流程模型。 3. **jbpm-persistence**: 与数据库交互,支持流程实例和...
工作流(Work Flow)是一种用于自动化业务流程的计算模型,其核心在于通过计算机来表达和执行流程中的逻辑和规则。工作流的目标是使多个参与者能在预定规则下,利用计算机自动传递文档、信息或任务,以实现特定的...
5. **jbpm-workitems-5.1.0.Final.jar**:包含预定义的工作项处理程序,这些处理程序用于执行特定的任务,比如发送电子邮件或调用外部服务。工作项可以被自定义,以适应各种不同的业务需求。 6. **jbpm-persistence...
JBPM(Java Business Process Management)是一款开源的工作流管理系统,用于设计、执行和管理业务流程。它基于模型驱动的架构,提供了一套完整的工具集来处理复杂的业务流程。本文将深入解析JBPM中的核心数据库表...
工作流(Work Flow)是针对工作中具有固定程序的常规活动而提出的一个概念。通过将工作活动分解成定义良好的任务、角色、规则和过程来进行执行和监控,达到提高生产组织水平和工作效率的目的。依托工作流管理系统WFMS...
工作流(Work Flow)是一种将业务流程的逻辑和规则在计算机中建模的方法,它解决了多个参与者之间利用计算机按预设规则自动传递文档、信息或任务的问题。工作流管理系统(WfMS)则是实现工作流的核心工具,提供定义...
第一章:介绍 第二章 开始 第三章. 讲座 第四章....第五章 发布 第六章 永久化 第七章....第八章 上下文 ...第12章....第13章. jBPM 流程定义语言 (JPDL) 第14章 安全 第15章. TDD适合工作流 第16章 可插入架构
工作流(Work Flow)是计算机领域中用于自动化处理业务流程的一种技术,它的主要目标是通过在多个参与者之间按预设规则自动传递文档、信息或任务,以提高工作效率,实现业务流程的标准化和优化。工作流属于计算机...
* Spring enterprise: Spring Java EE integration, Spring Integration, Spring Batch, jBPM with Spring, Spring Remoting, messaging, transactions, scaling using Terracotta and GridGrain, and more. ...
Shark是一款基于WfMC(Work Flow Management Coalition)标准的开源工作流管理系统,支持XPDL(XML Process Definition Language)格式的工作流定义。Shark的特点在于其高度灵活性和可扩展性,能够满足不同规模企业...