`
stonecold1108
  • 浏览: 23588 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

BPMN2.0 工作流 实例

阅读更多

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 &gt; 3}</conditionExpression>
		</sequenceFlow>

		<sequenceFlow id="to_end1" name="To End1"
			sourceRef="decideBasedOnAmountGateway" targetRef="theEnd">
			<conditionExpression xsi:type="tFormalExpression">${days &lt;= 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();
 

具体看代码。我上传了

 

 

 

4
1
分享到:
评论
2 楼 java太保 2011-08-23  
直接写xml是麻烦,用这个不错Joinwork Process Studio
1 楼 snowfox2008 2010-08-15  
哥们,你的图和XML都不一致,图中少了exclusiveGateway 节点

相关推荐

    bpmn-server:用于Node.js的BPMN 2.0服务器,为工作流提供建模,执行,持久性和监视。 以及示例用户界面。 旨在成为BPMN 2.0的开发人员工作台

    bpmn-server提供BPMN 2.0建模,执行和持久性,作为Node.js的开源工作流服务器 该软件包是专门为Node.js设计的,并且完全使用TypeScript开发 WebApp通过建模和开发工作流提供UI 目录 文献资料 流程建模者 基于包括一...

    疯狂工作流讲义 给予Activities 6.x的应用开发.pdf(后半部分)

     第3部分:详细讲述了BPMN 2.0规范的内容,包括目前Activiti对该规范的实现情况,在讲解BPMN 2.0规范时,将规范与Activiti的实现进行结合,在通俗易懂的案例下,帮助读者对Activiti的实现以及BPMN 2.0规范有更深入...

    疯狂工作流讲义 给予Activities 6.x的应用开发.pdf(前半部)

     第3部分:详细讲述了BPMN 2.0规范的内容,包括目前Activiti对该规范的实现情况,在讲解BPMN 2.0规范时,将规范与Activiti的实现进行结合,在通俗易懂的案例下,帮助读者对Activiti的实现以及BPMN 2.0规范有更深入...

    bpmn.js的WEB案例(官方V8.2版本)

    bpmn.js的WEB支持案例,可以绘制和保存绘制完成的bpmn文件,实现点击事件效果。...完全遵守bpmn2.0规范,代码使用bpmn-js最新版本V8.2,本地index.html地址直接打开查看允许效果。PS:这么好的资源这么才最高5积分

    《疯狂Workflow讲义:基于Activiti的工作流应用开发》

    第3部分:详细讲述了BPMN 2.0规范的内容,包括目前Activiti对该规范的实现情况,在讲解BPMN 2.0规范时,将规范与Activiti的实现进行结合,在通俗易懂的案例下,帮助读者对Activiti的实现以及BPMN 2.0规范有更深入的...

    vue工作流bpmn-js-----demo

    启动 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...

    Flowable从入门到精通

    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 实战案例二

    Activiti基础视频教程下载

    Activiti5企业开发实例讲解,Activiti5是一款基于java的轻量级工作流引擎。支持BPMN2.0,其依赖的jar非常少,只依赖mybatis。上手迅速,功能丰富,对于一般的工作流应用都可以满足,什么是流程、工作流作用、Activiti背景...

    Flowable BPMN 用户手册-中文版 (v 6.3.1).pdf

    Flowable流程引擎可用于部署BPMN 2.0流程定义(用于定义流程的行业XML标准), 创建这些流程定义的流程实例,进行查询,访问运行中或历史的流程实例与相关数据,等等。这个章节将用一个可以在你自己的开发环境中使用...

    Activiti工作流实战-含书签目录

    基础篇(3~4章)首先讲解了Activiti Modeler、Activiti Designer两种流程设计工具的详细使用,然后详细讲解了BPMN2.0规范;实战篇(5~14章)系统讲解了Activiti的用法、技巧和最佳实践,包含流程定义、流程实例、...

    积分管理系统java源码-activiti-service:工作流实例教程

    BPMN2.0 流程引擎,强调流程服务的可嵌入性和可扩展性,同时更加强调面向业务人员。 Activiti 流程引擎重点关注在系统开发的易用性和轻量性上。每一项 BPM 业务功能 Activiti 流程引擎都以服务的形式提供给开发人员...

    activiti实战(闫洪磊 高清完整中文PDF版(含书签))

    基础篇(3~4章)首先讲解了Activiti Modeler、Activiti Designer两种流程设计工具的详细使用,然后详细讲解了BPMN2.0规范;实战篇(5~14章)系统讲解了Activiti的用法、技巧和最佳实践,包含流程定义、流程实例、...

    beauty of architecture

    业务流程建模语言比较:BPMN2.0 与EPC(三) 业务流程建模语言比较:BPMN 2.0与EPC(四) 2.2 业务组件建模 组件化业务模型(CBM)介绍(一) 组件化业务模型(CBM)介绍(二) 组件化业务模型(CBM)介绍(三...

    ACTIVITI 实战

    基础篇(3~4章)首先讲解了Activiti Modeler、Activiti Designer两种流程设计工具的详细使用,然后详细讲解了BPMN2.0规范;实战篇(5~14章)系统讲解了Activiti的用法、技巧和最佳实践,包含流程定义、流程实例、...

    flowable数据库命名规则以及其数据表结构

    Flowable是BPMN2.0协议的一种Java版本的实现。相比于Activiti,Flowable的核心思想更像是在做一个多彩的工具,它在工作流的基础功能上,提供了很多其他的扩展,使用者可以随心所欲地把Flowable打造成自己想要的样子...

    Activiti6.0教程例子下载

    由于本人之前没有工作流及JBPM的相关基础,刚开始学习Activiti的时候可以说是无比痛苦的,根本不知道从何下手,这里也建议大家先进行工作流及BPMN2.0规范的学习,有了一定的基础后,再着手学习Activiti。 1.3.2. ...

    flowable-5.22.0

    Flowable是一个使用Java编写的轻量级业务流程...Flowable流程引擎让你可以部署BPMN 2.0流程定义(用于定义流程的行业XML标准)、创建这些流程定义的流程实例、进行查询、访问运行中或历史的流程实例与相关数据,等等。

    activiti实战

    基础篇(3~4章)首先讲解了Activiti Modeler、Activiti Designer两种流程设计工具的详细使用,然后详细讲解了BPMN2.0规范;实战篇(5~14章)系统讲解了Activiti的用法、技巧和最佳实践,包含流程定义、流程实例、...

    Activiti实战

    基础篇(3~4章)首先讲解了Activiti Modeler、Activiti Designer两种流程设计工具的详细使用,然后详细讲解了BPMN2.0规范;实战篇(5~14章)系统讲解了Activiti的用法、技巧和最佳实践,包含流程定义、流程实例、...

Global site tag (gtag.js) - Google Analytics