2.9任务管理
2.9.1 分配任务
流程定义时,分配任务有多种方法:
1. 直接分配给成员:assignee="user1" 可以同时分配多人:candidate-users("user1","user2","user3")
2. 分配给组:candidate-groups="it_dept" 分配给多个组:用逗号隔开部门id组列表。
3. 利用任务泳道进行分配:
1.任务泳道分配的特点:一个单子可以有多个人填写,一旦A填写了,别人就不能 填写。而且当A提交的单子被退回的时候还应该有A来继续。
2.泳道定义:<swimlane candidate-groups="it_dept" name="test"/>,也可以为 candidate-users.
3.使用泳道:在task定义时 swimlane="test" 使用泳道,任务分配给it_dept部 门
4.使用任务分配器assignment-handler标签 使用方法:<assignment-handler class = "">
<field name="test"><string value="ttttttt"/></field>
</assignment-handler>
在class里面动态分配assignable.setAssignee(test);
通过传参数,设置 test的值。实现动态分配
2.9.2 成员任务列表
List<Task> taskList = taskService.findPersonalTasks(username);
2.9.3 组成员任务列表
List<Task> taskList = taskService.findGroupTasks(username);
由于任务有转交,加签等功能,所以一个人想要得到自己的任务就包括 组成员任务和 成员任务两部分组成。
2.9.4 执行任务
得到任务列表后,如果任务有对应的表单,就先跳到表单,填写,然后执行。表单的绑定:在task标签中使用 form = "xxxx.jsp",执行语句:
taskService.completeTask(taskId,"toFork1",map);
taskId 是任务id
toFork1 是outcome,即任务的出口
Map 是 传递的任务参数,通过任务就可以得到这些参数:
得到指定的参数值:taskService.getVariable(taskId, "user")
得到所有的参数:taskService.getvariableNames(java.lang.String.taskId);
2.9.5 转交任务
taskService.assignTask(taskId,"用户Id");
2.9.6 任务加签
taskService.addTaskParticipatingUser(taskId,"用户Id",Participation.CANDIDATE);
2.9.7 fork join 异步分支
<fork g="276,239,48,48" name="fork1">
<transition g="-54,-18" name="to 计划部" to="计划部"/>
<transition g="-54,-18" name="to 法务部" to="法务部"/>
<transition g="-64,-18" name="to IT规划部" to="IT规划部"/>
</fork>
Fork join 处理并发的情况,分配给的三个部门当执行完后,都流入到join标签。
Join标签属性: multiplicity="3" multiplicity 的意思是当有几个执行到了join时,流程继续。
2.9.8 decision 决定条件
decision中会运行并判断每一个transition 里的判断条件。 当遇到一个嵌套条件是true 或者没有
设置判断条件的转移,那么转移就会被运行。
例子:当天数大于3天,总经理审批 否则 结束
<decision expr="#{day > 3 ? 'to 总经理' : 'to 结束}" g="361,280,48,48" name="exclusive1">
<transition g="-42,-18" name="to end1" to="end1"/>
<transition g="-44,-18" name="to task2" to="总经理审核"/>
</decision>
Decision属性: expr 表达式 必填
2.9.9 Events 事件
当一个流程通过这一点时,事件监听器就会被提醒。
用法:在流程的任何地方都可以加入监听
<on event="start">
<event-listener class="org.jbpm.examples.eventlistener.LogListener">
// 参数
<field name="msg"><string value="start on process definition"/></field>
</event-listener>
2.9.10 JPDL简 介
1. Start state
开始节点 流程开始,每个流程定义文件 只能有一个开始节点。
2. Task node
任务节点 人工参与,调用processEngine.getTaskService().complete()完 成任务
3.State node
状态节点
需要使用execution.signalExcution()触发流程流转
4. Descision Node
流程流向判断节点
指定condition条件或者DesisionHandler
5. Fork node
分支节点,任务并行处理
6.Join node
任务聚合节点
7. End State
任务结束节点 可以有多个结束节点
8. Transition
控制任务流向
9. Event
事件触发 可以在任何节点加事件触发处理
具体参看${JPBM.HOME}/doc/userguide文档 关于JPDL的描述
3数据库表说明
(1)JBPM4_DEPLOYMENT、
(2)JBPM4_DEPLOYPROP
(3)JBPM4_LOB:
存储 上传一个包含png和jpdl.xml的zip包 的相关数据
jbpm4_deployment表多了一条记录
jbpm4_deployprop表多了四条记录,对应langid,pdid,pdkey,pdversion
jbpm4_lob 表多了二条记录,保存流程图png图片和jpdl.xml
(4)JBPM4_HIST_PROCINST与(5)JBPM4_HIST_ACTINST
分别存放的是Process Instance、Activity Instance的历史记录。
(6)JBPM4_EXECUTION
主要是存放JBPM4的执行信息,Execution机制代替了JBPM3的Token机制
(7)JBPM4_TASK
存放需要人来完成的Activities,需要人来参与完成的Activity被称为Task。
(8)JBPM4_PARTICIPATION
存放Participation的信息,Participation的种类有Candidate、 Client、Owner、Replaced Assignee和Viewer。而具体的Participation既可以是单一用户,也可以是用户组。
(9)JBPM4_SWIMLANE
Swim Lane是一种Runtime Process Role。通过Swim Lane,多个Task可以一次分配到 同一Actor身上。
(10)JBPM4_VARIABLE
存的是进行时的临时变量。
(11)JBPM4_HIST_DETAIL
保存Variable的变更记录。
(12)JBPM4_HIST_VAR
保存历史的变量。
(13)JBPM4_HIST_TASK
Task的历史信息。
(14)JBPM4_ID_GROUP(15)JBPM_ID_MEMBERSHIP(16)JBPM4_ID_USER
这三张表很常见了,基本的权限控制,关于用户认证方面建议还是自己开发一套,JBPM4 的功能太简单了,使用中有很多需要难以满足。
(17)JBPM4_JOB
存放的是Timer的定义。
(18)JBPM4_PROPERTY
http://blog.sina.com.cn/s/blog_5677c3830100il44.html
分享到:
相关推荐
【jBPM4学习总结】 jBPM,全称为Java Business Process Management,是一个开源的、灵活且可扩展的业务流程管理框架,涵盖了业务流程管理、工作流和服务协作等多个领域。自2004年10月加入JBoss组织后,jBPM逐渐成为...
### 四、JBPM4监控与管理 1. **监控工具(Console)**:JBPM4提供了一个Web管理界面,可以查看流程实例状态、跟踪流程路径、管理任务等。 2. **日志记录(Logging)**:详细记录流程执行过程,便于问题排查。 3. ...
JBPM4学习经验总结 JBPM4是Java Business Process Management(业务流程管理)的缩写,它是一个开源的、灵活的、易扩展的可执行流程语言框架。JBPM4学习经验总结包括了JBPM4的概念、配置JBPM4开发环境、JBPM默认的...
总结,JBPM4提供了一套完整的工作流管理系统,包括流程设计、执行、监控和优化等功能,通过JPdl语言和Hibernate整合,实现了流程的可视化和灵活管理。对于开发人员来说,理解这些核心概念和数据库表结构,能更好地...
总结来说,jbpm4web是一个实用的学习工具,它使开发者能够深入了解JBPM4的运作机制,并快速上手实践。通过这个Demo,你可以掌握流程设计、执行、管理和监控的关键技术,为实际项目开发打下坚实的基础。
总结,jBPM 4是一个功能强大且灵活的业务流程管理工具,它结合了流程建模、执行、持久化、任务管理等多个关键组件,旨在帮助企业构建高效、可维护的业务流程。通过深入学习和实践,开发者可以充分利用jBPM 4解决复杂...
### JBPM4 每张表对应的含义 JBPM(JBoss Business Process Management)是一款开源的工作流管理系统,广泛应用于各种业务流程管理场景中。JBPM4版本是该系列中的一个重要版本,其数据库设计反映了该系统的核心功能...
总结来说,JBPM4的学习涵盖了Java Web开发、数据库连接、流程定义、配置管理以及日志记录等多个方面。理解并掌握这些知识点对于从事企业级工作流应用开发至关重要。在实践中,不仅需要了解每个配置文件的作用,还要...
jbpm4.doc文件可能包含了关于jBPM 4的详细文档,包括如何安装和配置jBPM环境,使用jBPM Designer创建和编辑流程,以及如何集成jBPM到Java应用程序中的步骤。文档可能还涵盖了jBPM 4的新特性、最佳实践和常见问题解答...
总结来说,JBPM4提供了一套强大的工具,用于管理和执行业务流程。在"Jbpm4Web"项目中,我们可以看到如何将这些功能集成到web环境中,以便于用户直观地操作和管理业务流程。源码分析对于理解JBPM4的集成方式、API使用...
总结来说,JBPM3是一个强大的业务流程管理工具,通过XML描述流程,利用Hibernate进行数据管理,提供了轻量级的依赖和灵活的部署选项。其核心概念如流程定义、流程实例、令牌和事件,共同构建了一个完整的业务流程...
**标题:“jBPM4与Spring整合的2种方式”** **内容概述:** jBPM4是一款开源的工作流管理系统,它提供了业务流程管理(BPM)和工作流服务。而Spring是一个广泛应用的Java企业级应用框架,它简化了开发、配置和管理...
JBPM4报错标签表明这个压缩包可能包含了处理JBPM4过程中遇到问题的指南。在开发和部署BPM流程时,错误和异常是常见的,如任务未找到、流程实例无法启动、数据库连接问题等。这些报错指南可能是开发者根据经验总结出...
JBPM4是一款强大的业务流程管理(BPM)框架,它允许开发者定义、执行和管理复杂的业务流程。在使用JBPM4的过程中,可能会遇到各种运行时错误和异常,这些异常通常是由于配置问题、依赖冲突或者代码错误导致的。下面...
总结来说,jbPM4入门例子展示了如何在Tomcat6.0环境下部署和运行jbPM4,包括配置数据源、创建数据库表以及利用jbPM4的工作台进行流程建模和任务管理。这个例子对于初学者来说是一个很好的起点,帮助他们快速理解和...
jBPM4 安装和配置指南 jBPM4 是一个基于 Java 的工作流引擎,它提供了一个灵活的流程管理系统,允许开发者构建、部署和管理复杂的企业流程应用。在本文中,我们将介绍如何安装和配置 jBPM4,包括安装先决条件、下载...
2. **学习笔记**:学习笔记通常是对理论知识的实践总结,可能会包含作者在学习过程中遇到的问题及解决方法,对理解jbpm4的实际操作有极大帮助。这些笔记可能涉及流程实例的创建、参与者管理、流程变量的使用等。 3....