1.BPMN 业务流程建模标注 详细介绍请看
http://www.uml.org.cn/RequirementProject/200904141.asp
2.BPMN是OMG推出的一种工作流建模的标准。还有JBoss自己搞的Jbpm,但jbpm不是标准。
3.BPMN的资料不多,设计器设计出来的BPMN很多不是标准的BPMN2.0.如果eclipse stp bpmn,oracle bpm..
4.Jbpm4.3推出来之后,开始支持BPMN2.0.所以这次我用jbpm4.3的跑我设计的BPMN工作流。
5.准备工作(我的平台)
Eclipse 3.5.2
JDK1.6
Tomcat 6
JBPM4.3(安装请看http://blog.csdn.net/inkfish/archive/2010/01/10/5169700.aspx)
6.请假系统工作流
7.实现上面工作流的BPMN代码---leave.bpmn.xml
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://schema.omg.org/spec/BPMN/2.0 ../../../../../../../../../../bpmn/src/main/resources/BPMN20.xsd"
xmlns="http://schema.omg.org/spec/BPMN/2.0" typeLanguage="http://www.w3.org/2001/XMLSchema"
expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://jbpm.org/example/bpmn2/none_start_end_event"
xmlns:jbpm="http://jbpm.org/bpmn2">
<process id="leave" name="BPMN2 Example process">
<startEvent id="start" />
<sequenceFlow id="flow1" name="To Apply Leave" sourceRef="start"
targetRef="applyLeave" />
<userTask id="applyLeave" name="Apply Leave" implementation="other">
<potentialOwner resourceRef="user" jbpm:type="group">
<resourceAssignmentExpression>
<formalExpression>user</formalExpression>
</resourceAssignmentExpression>
</potentialOwner>
</userTask>
<sequenceFlow id="to_teacher" name="To Teacher Check"
sourceRef="applyLeave" targetRef="techerCheck" />
<userTask id="techerCheck" name="Teacher Check"
implementation="other">
<potentialOwner resourceRef="user" jbpm:type="group">
<resourceAssignmentExpression>
<formalExpression>teachers</formalExpression>
</resourceAssignmentExpression>
</potentialOwner>
</userTask>
<sequenceFlow id="teacherRefuse" name="Teacher Refuse"
sourceRef="techerCheck" targetRef="applyLeave">
<conditionExpression xsi:type="tFormalExpression">${approveResult == 'NotOK'}</conditionExpression>
</sequenceFlow>
<sequenceFlow id="to_decide" name="To Decide" sourceRef="techerCheck"
targetRef="decideBasedOnAmountGateway" >
<conditionExpression xsi:type="tFormalExpression">${approveResult == 'OK'}</conditionExpression>
</sequenceFlow>
<exclusiveGateway id="decideBasedOnAmountGateway"
name="decideBasedOnAmount" />
<sequenceFlow id="to_master" name="To Master"
sourceRef="decideBasedOnAmountGateway" targetRef="masterCheck">
<conditionExpression xsi:type="tFormalExpression">${days > 3}</conditionExpression>
</sequenceFlow>
<sequenceFlow id="to_end1" name="To End1"
sourceRef="decideBasedOnAmountGateway" targetRef="theEnd">
<conditionExpression xsi:type="tFormalExpression">${days <= 3}</conditionExpression>
</sequenceFlow>
<userTask id="masterCheck" name="Master Check"
implementation="other">
<potentialOwner resourceRef="user" jbpm:type="group">
<resourceAssignmentExpression>
<formalExpression>masters</formalExpression>
</resourceAssignmentExpression>
</potentialOwner>
</userTask>
<sequenceFlow id="masterRefuse" name="Master Refuse"
sourceRef="masterCheck" targetRef="applyLeave">
<conditionExpression xsi:type="tFormalExpression">${approveResult == 'NotOK'}</conditionExpression>
</sequenceFlow>
<sequenceFlow id="to_end2" name="To End2" sourceRef="masterCheck"
targetRef="theEnd">
<conditionExpression xsi:type="tFormalExpression">${approveResult == 'OK'}</conditionExpression>
</sequenceFlow>
<endEvent id="theEnd" name="End" />
</process>
</definitions>
没有设计器,都是我自己看BPMN2.0的介绍和JBPM的内容,自己写出来的 leave.bpmn.xml
8.剩下的使用JBPM4.3的API让我的leave.bpmn.xml,跑起来
思想是:
学生都放在user用户组。user组都可以申请请假
老师放在teachers用户组。该用户组都可以审批学生请假(登录是用teacher)
主任放在masters用户组。该用户组审批请假超过3天的学生请假。(登录是用master)
部分代码:
String username = session.getAttribute("username").toString();
ProcessEngine processEngine = Configuration.getProcessEngine();//获得工作流引擎
RepositoryService repositoryService = processEngine//获得启动的工作流
.getRepositoryService();
ExecutionService executionService = processEngine//获得 工作流实例
.getExecutionService();
TaskService taskService = processEngine.getTaskService();//获得 任务
List<ProcessDefinition> pdList = repositoryService
.createProcessDefinitionQuery().processDefinitionKey(
"leave").list();
List<ProcessInstance> piList = executionService
.createProcessInstanceQuery().list();
List<Task> taskList = taskService.createTaskQuery().candidate(
username).list();
具体看代码。我上传了
分享到:
相关推荐
bpmn-server提供BPMN 2.0建模,执行和持久性,作为Node.js的开源工作流服务器 该软件包是专门为Node.js设计的,并且完全使用TypeScript开发 WebApp通过建模和开发工作流提供UI 目录 文献资料 流程建模者 基于包括一...
第3部分:详细讲述了BPMN 2.0规范的内容,包括目前Activiti对该规范的实现情况,在讲解BPMN 2.0规范时,将规范与Activiti的实现进行结合,在通俗易懂的案例下,帮助读者对Activiti的实现以及BPMN 2.0规范有更深入...
第3部分:详细讲述了BPMN 2.0规范的内容,包括目前Activiti对该规范的实现情况,在讲解BPMN 2.0规范时,将规范与Activiti的实现进行结合,在通俗易懂的案例下,帮助读者对Activiti的实现以及BPMN 2.0规范有更深入...
bpmn.js的WEB支持案例,可以绘制和保存绘制完成的bpmn文件,实现点击事件效果。...完全遵守bpmn2.0规范,代码使用bpmn-js最新版本V8.2,本地index.html地址直接打开查看允许效果。PS:这么好的资源这么才最高5积分
第3部分:详细讲述了BPMN 2.0规范的内容,包括目前Activiti对该规范的实现情况,在讲解BPMN 2.0规范时,将规范与Activiti的实现进行结合,在通俗易懂的案例下,帮助读者对Activiti的实现以及BPMN 2.0规范有更深入的...
启动 activiti 工作流引擎,最后生成流程实例。 官网地址:[https://bpmn.io/toolkit/bpmn-js/](https://bpmn.io/toolkit/bpmn-js/) Github地址:[https://github.com/bpmn-io](https://github.com/bpmn-io) # Hello...
5 工作流实战案例 5.1 实战案例一 5.1.1 部署流程定义 5.1.2 启动流程实例 5.1.3 查询待办任务 5.1.4 提交任务 5.1.5 查询候选任务 5.1.6 获取候选任务 5.1.7 通过流程实例ID查询任务流转图 5.2 实战案例二
Activiti5企业开发实例讲解,Activiti5是一款基于java的轻量级工作流引擎。支持BPMN2.0,其依赖的jar非常少,只依赖mybatis。上手迅速,功能丰富,对于一般的工作流应用都可以满足,什么是流程、工作流作用、Activiti背景...
Flowable流程引擎可用于部署BPMN 2.0流程定义(用于定义流程的行业XML标准), 创建这些流程定义的流程实例,进行查询,访问运行中或历史的流程实例与相关数据,等等。这个章节将用一个可以在你自己的开发环境中使用...
基础篇(3~4章)首先讲解了Activiti Modeler、Activiti Designer两种流程设计工具的详细使用,然后详细讲解了BPMN2.0规范;实战篇(5~14章)系统讲解了Activiti的用法、技巧和最佳实践,包含流程定义、流程实例、...
BPMN2.0 流程引擎,强调流程服务的可嵌入性和可扩展性,同时更加强调面向业务人员。 Activiti 流程引擎重点关注在系统开发的易用性和轻量性上。每一项 BPM 业务功能 Activiti 流程引擎都以服务的形式提供给开发人员...
基础篇(3~4章)首先讲解了Activiti Modeler、Activiti Designer两种流程设计工具的详细使用,然后详细讲解了BPMN2.0规范;实战篇(5~14章)系统讲解了Activiti的用法、技巧和最佳实践,包含流程定义、流程实例、...
业务流程建模语言比较:BPMN2.0 与EPC(三) 业务流程建模语言比较:BPMN 2.0与EPC(四) 2.2 业务组件建模 组件化业务模型(CBM)介绍(一) 组件化业务模型(CBM)介绍(二) 组件化业务模型(CBM)介绍(三...
基础篇(3~4章)首先讲解了Activiti Modeler、Activiti Designer两种流程设计工具的详细使用,然后详细讲解了BPMN2.0规范;实战篇(5~14章)系统讲解了Activiti的用法、技巧和最佳实践,包含流程定义、流程实例、...
Flowable是BPMN2.0协议的一种Java版本的实现。相比于Activiti,Flowable的核心思想更像是在做一个多彩的工具,它在工作流的基础功能上,提供了很多其他的扩展,使用者可以随心所欲地把Flowable打造成自己想要的样子...
由于本人之前没有工作流及JBPM的相关基础,刚开始学习Activiti的时候可以说是无比痛苦的,根本不知道从何下手,这里也建议大家先进行工作流及BPMN2.0规范的学习,有了一定的基础后,再着手学习Activiti。 1.3.2. ...
Flowable是一个使用Java编写的轻量级业务流程...Flowable流程引擎让你可以部署BPMN 2.0流程定义(用于定义流程的行业XML标准)、创建这些流程定义的流程实例、进行查询、访问运行中或历史的流程实例与相关数据,等等。
基础篇(3~4章)首先讲解了Activiti Modeler、Activiti Designer两种流程设计工具的详细使用,然后详细讲解了BPMN2.0规范;实战篇(5~14章)系统讲解了Activiti的用法、技巧和最佳实践,包含流程定义、流程实例、...
基础篇(3~4章)首先讲解了Activiti Modeler、Activiti Designer两种流程设计工具的详细使用,然后详细讲解了BPMN2.0规范;实战篇(5~14章)系统讲解了Activiti的用法、技巧和最佳实践,包含流程定义、流程实例、...