为什么需要工作流管理系统
使用jbpm带来的好处
1、把某些容易变化的部分,能够抽象出来,通过某种方式改变它
2、jbpm主要是用来从一个用户手上转递给另外一个用户的
3、jbpm工作引擎:定义流程,执行流程
工作流管理系统的构成
1、工作流引擎(核心):定义流程,执行流程
2、工作流设计器:目的是定义流程(例:绘流程图)。另外可以使用flex设计开发设计器
3、流程操作:流程引擎提供的API然后去调用,包括启动流程、结束流程、挂起流程、查询流程
4、工作流客户端程序:把工作流引擎集成到OA当中,OA系统则相当于工作流客户端程序。
5、流程监控:对系统里面运行有哪些流程,以及流程流转到哪些地方,对流程做一些其它操作等
6、表单设计器:在系统部署完成后,可灵活的创建新的流程
7、与表单的集成:
8、与应用程序的集成:比如到达某一环节时需要有额外的工作,这种情况下需要与应用程序集成。jbpm中会提供相关方法
不使用jbpm
1、如果没有应用工作流引擎技术,逻辑写死在业务代码中了
2、提交请假单时的方法需要(请假单位ID,提交者ID)
{
if请假单是新建的then设置审批者为张三
if提交者是张三 and 请假单已审批通过 then 设置审批者为李四
if提交者是李四 and 请假单已审批通过 then 请假流程结束
}
3、如果用户有变化(定义一个规则)可通过配置文件来获取用户(类似JDBC的连接)然后业务代码需要的对象可从配置文件获取
4、或者在流程当中的环节有变化(根据条件有可能经过有可能不经过(大于一天、小于一天)),则需要定义一个规则,定义规则之后还需要对规则进行解释
5、如果没有配置规则,则代码量非常大,而且维护起来也比较麻烦
例如:一个请假单流程
1、流程的本质是由多个参与者形成的,会参与到一个流程当中这就是所谓的流程
2、jbpm主要是用来从一个用户手上转递给另外一个用户的
JBPM的基本流程概念
1、jbpm定义流程是一种规则的定义,基于用UML里面的活动图(流程图)来定义流程的。ProcessDefintion
2、结点
1、startNode、endNode是一种伪状态结点,startNode不允许有arrivingTranstion(进入),endNode不允许有learingTrantion(离开)
2、State:状态节点,表示一种等待状态,在此节点中规定要做的事件,比如发邮件等。
3、Fork、join是成对出现的主要完成同步工作流的定义,Fork分开、join连接
4、Decision:完成条件流转的定义,例根据表达式计算结果,根据结果执行不同的流转,它是一种自动节点
5、taskNode:任务节点,通常表示一个流程的环节,(任务:由某些事件需要由某些人去做)主要用来完成任务分配的定义
JBPM流程实例执行的概念
1、流程实例是按照某个规则来流转的具体的信息或者是一个流程创建的一个对象,例如,张三的请假单就是一个流程实例,一个流程包含多少实例
2、流程实例携带的信息称为流程实例变量包括(请假者,请假天数等等),流程实例变量存放在ContextInstance,创建流程实例的时候JBPM自动创建一个ContextInstance对象,可以理解为是一个变量的容器。例如:setVarible(String name,Object value),(String)getVarible(String name)
3、创建某一个单据的时候就是创建流程实例的时候
Jbmp的核心调试过程,如何实现流转(pathnet)
1、在创建流程实例的时候,JBPM会自动创建一个跟它对应的Token对象(rootToken),一个流程实例只能有一个rootToken,Token有一个引用指向一个节点,然后调用流程实例的singnal()方法就能够触发Token把引用指向下一节点。Token最初是指向start节点的,指向的改变就是流程执行的意思。rootToken是一个树形结构
2、Jbmp的核心调试过程也就是在调用processInstance.singnal()方法的时候发生了什么
1、如何找到rootToken指向的下一节点:
1、调用leave()方法,会抛出node leave事件
2、调用singal(String transitionName)方法,指定transitionName,则按照指定的transition离开,否则,将随机选择一个transtion离开
3、找到transtion之后调用take()方法,会抛出transition事件
4、找到to node之后调用enter()方法,会抛出node enter事件
5、然后将Token指向的节点修改为自身
6、最后执行execute();是这个节点的行为的体现
如何实现多人会签,而且只要其中一个人审批通过就继续往下?
- 实现方法1:利用pooled-actors,可以使用pooled-actors定义多个参与者,
并使用findPooledTaskInstances来查找任务实例,其中任意一个人审批通过
并提交之后,其它人将看不到这个任务实例(参考complex_051)
- 实现方法2:在同一个TaskNode节点中定义多个Task,并设置signal="first"(参考complex_06)
1. last - 默认,最后一个任务实例被结束时执行继续;
如果Task-Node下面根本没有定义Task,则执行继续
2. last-wait - 最后一个任务实例被结束时,执行继续
如果Task-Node下面根本没有定义Task,则等待
3. first - 第一个任务实例被结束时,执行继续
如果Task-Node下面根本没有定义Task,则执行继续
4. first-wait - 第一个任务实例被结束时,执行继续
如果Task-Node下面根本没有定义Task,则等待
5. never - 执行永远不会继续(即通过TaskInstance.end操作不会触发流程往下走)
6. unsynchronized - 直接往下执行(signal),不管是否有任务实例
本项目主要测试:如何给角色分配任务?
- 实现AssignmentHandler接口,在接口的实现方法中,查询角色下面的用户,并
将任务实例分配给这些用户即可。(参考complex_07以及RoleAssignmentHandler01.java)
思考:如何实现提交给本部门的部门领导审批?
根据公文ID----得到公文创建者---得到对应的user---得到所属部门(参考complex_07_02以及RoleAssignmentHandler02.java)
描述各种在Handler中获取spring的bean的方法,描述JbpmHandlerProxy解决方案,及其不足之处
- BeanFactoryAware的用法:
- 如何利用BeanFactoryAware来获取BeanFactory:一个类需要实现BeanFactoryAware接口,同时实现setBeanFactory();//这个接口不常用
- JbpmHandlerProxy的基本原理:spring第三方控件,支持继承用这个类,它本身已经实现了ActionHandler, AssignmentHandler, DecisionHandler, TaskControllerHandler实现过程给封装起来了,与客户端和服务端相连
- 利用JbpmHandlerProxy的机制来获取BeanFactory
- 进一步封装,并利用AutowireCapableBeanFactory来自动注入依赖对象
分享到:
相关推荐
这个项目是关于创建一个报销流程的示例,非常适合初学者或希望深化对JBPM理解的开发者参考。 首先,让我们深入了解JBPM。JBPM是一个强大的工作流引擎,它支持BPMN 2.0标准,允许开发者用图形化的方式定义复杂的业务...
总的来说,这个主题资料包提供了jbpm4和jbpm5的基础知识、实战经验和用户操作指导,对于想要学习或深化jbpm流程管理框架理解的开发者非常有价值。通过学习这些文档,开发者可以掌握jbpm的核心概念,熟练地设计和部署...
1. **流程建模**:使用 BPMN(Business Process Model and Notation)标准,允许开发者通过图形化的方式定义流程,使得业务人员和开发人员可以更好地理解和协作。 2. **规则集成**:jBpm 集成了规则引擎,如 Drools...
总的来说,jbPM 3.2是一个强大的工作流管理系统,通过深入理解和实践,开发者可以构建出高效、灵活的业务流程,提高企业的业务自动化水平。希望这份知识总结能对你在jbPM的学习和使用上提供帮助。
源码通常是开发者学习和理解软件工作原理的重要资源,通过对源码的研究,可以深入理解jbpm如何在实际项目中发挥作用,以及如何与Struts2框架进行无缝集成。而工具则可能是一些辅助开发的库、配置文件或脚本,有助于...
《jBPM4.4开发指南》与《jBPM4.4中文用户手册》是深入理解jBPM4.4这一开源工作流管理系统的重要参考资料。jBPM,全称Java Business Process Management,是一个用于执行业务流程的轻量级、灵活的开源框架,它为业务...
"jbpm解读.txt"可能是一篇或一系列的文章,对jbpm的概念、原理或特定功能进行了深度解读,有助于读者更深刻地理解jbpm的工作机制。 "JBPM最佳实践.txt"则可能包含了一系列在实际项目中运用jbpm时的最佳实践建议,如...
jbpm 数据库表介绍 jbpm 是一个基于 Java 的 workflow 引擎,用于管理和执行业务流程。jbpm 需要持久化流程部署、...了解 jbpm 的数据库表结构能够帮助开发者更好地理解和使用 jbpm,实现更加复杂的业务流程管理系统。
【jbpm3.1中文文档】是一份详细阐述jbpm工作流程引擎的资源,它包含了大量的信息,旨在帮助用户理解和掌握jbpm 3.1版本的核心功能和使用方法。jbpm是一个开源的工作流程管理系统,它提供了强大的业务流程建模、执行...
jPDL(jBPM Process Definition Language)是jBPM用来描述和执行业务流程的一种专用语言,它基于XML,简洁且易于理解,允许开发者以声明式的方式定义流程逻辑。 1、系统环境部署: 在开始jBPM-jPDL的学习之前,首先...
同时,这一部分还将探讨jbpm与Spring框架的集成,让你理解如何在实际项目中更好地利用jbpm的服务和功能。 【JBPM_(3)_Impl.ppt】主要讲解jbpm的实现细节,包括工作流引擎的内部工作机制、任务服务的使用、监听器和...
本资料主要围绕jbpm的核心组件——jPDL进行讲解,帮助学习者深入理解jbpm的工作原理和应用。 jPDL(jBPM Process Definition Language)是jbpm使用的一种基于XML的语言,用于描述业务流程。它提供了一系列的元素和...
JBPM(Java Business Process Management)是一款开源的工作流管理系统,它提供了强大的业务流程建模、执行和监控能力。本文将深入探讨JBPM的工作...理解这些概念和操作,对于有效地设计、实施和维护业务流程至关重要。
jbpm-2.0-beta1是该系统的早期版本,其核心功能包括工作流引擎、流程建模工具以及一系列示例项目,如jbpm-demo,用于帮助用户更好地理解和应用jbpm。 工作流引擎是jbpm的核心组件,它负责解析和执行工作流定义...
理解JBPM4.3中的流程管理,不仅涉及流程定义,还包括流程实例的运行、任务的分配与完成、异常处理等。通过SSH的集成,我们可以将这些复杂的业务逻辑封装起来,使得Web应用更加模块化,同时保持良好的可扩展性和维护...
在这个示例中,jbpmDemo通过Canvas动画生动地展示了工作流的运行过程,使得理解工作流变得更加直观和有趣。 首先,我们来了解一下**jBPM4**。jBPM4是一个Java平台上的业务流程管理(BPM)系统,它支持Business ...
【jbpm-4.4.zip part03】这个压缩文件是关于jbpm 4.4...jbpm 4.4版本是其历史版本中的一个重要里程碑,尽管可能不如最新版本那样拥有最新的特性和改进,但对于学习和理解工作流管理系统的运作机制仍然具有很高的价值。
JBPM_MODULEDEFINITION JBPM_MODULEDEFINITION FK_MODDEF_PROCDEF PROCESSDEFINITION_ 一个流程可能处在很多的模块(模块概念不理解) JBPM_DELEGATION JBPM_DELEGATION FK_DELEGATION_PRCD PROCESSDEFINITION_ 一...