特别响、非常近——BPMN2新规范与Activiti5
BPMN工作流的基本概念!详解工作流框架Activiti
BPMN⼯作流的基本概念!详解⼯作流框架Activiti⼯作流⼯作流简介⼯作流(Workflow): ⼯作流就是通过计算机技术对业务流程进⾏⾃动化管理。
实现多个参与者按照预定的流程去⾃动执⾏业务流程。
定义: 通过计算机对业务流程⾃动化执⾏管理主要解决的是: 使在多个参与者之间按照某种预定义的规则⾃动进⾏传递⽂档,信息或任务的过程.从⽽实现某个预期的业务⽬标,或者促使此⽬标的实现⼯作流管理系统的⽬标:管理⼯作的流程以确保⼯作在正确的时间被期望的⼈员所执⾏在⾃动化进⾏的业务过程中插⼊⼈⼯的执⾏和⼲预⼯作流框架:Activiti,JBPM,OSWorkFlow,WorkFlow⼯作流框架底层需要有数据库提供⽀持⼯作流术语⼯作流引擎ProcessEngine对象: 这是Activiti⼯作的核⼼.负责⽣成流程运⾏时的各种实例及数据,监控和管理流程的运⾏BPM业务流程管理:是⼀种以规范化的构造端到端的卓越业务流程为中⼼,以持续的提⾼组织业务绩效为⽬的的系统化⽅法常见商业管理教育如EMBA,MBA等均将BPM包含在内BPMN业务流程建模与标注:这些图如何组合成⼀个业务流程图(Business Process Diagram)讨论BPMN的各种的⽤途:包括以何种精度来影响⼀个流程图中的模型BPMN作为⼀个标准的价值BPMN未来发展的远景流对象⼀个业务流程图有三个流对象的核⼼元素事件⼀个事件⽤圆圈来描述,表⽰⼀个业务流程期间发⽣的东西事件影响流程的流动.⼀般有⼀个原因(触发器)或⼀个影响(结果)基于它们对流程的影响,有三种事件:开始事件,中间事件,终⽌事件活动⽤圆⾓矩形表⽰,⼀个流程由⼀个活动或多个活动组成条件条件⽤菱形表⽰,⽤于控制序列流的分⽀与合并。
可以作为选择,包括路径的分⽀与合并内部的标记会给出控制流的类型Activiti开源⼯作流框架Activiti简介Activiti是⼀个开源的⼯作流引擎,它实现了BPMN 2.0规范,可以发布设计好的流程定义,并通过api进⾏流程调度Activiti 作为⼀个遵从 Apache 许可的⼯作流和业务流程管理开源平台,其核⼼是基于Java的超快速,超稳定的 BPMN2.0 流程引擎,强调流程服务的可嵌⼊性和可扩展性,同时更加强调⾯向业务⼈员Activiti 流程引擎重点关注在系统开发的易⽤性和轻量性上.每⼀项BPM业务功能Activiti流程引擎都以服务的形式提供给开发⼈员.通过使⽤这些服务,开发⼈员能够构建出功能丰富,轻便且⾼效的BPM应⽤程序Activiti服务结构Activiti系统服务结构图核⼼类:ProcessEngine: 流程引擎的抽象,可以通过此类获取需要的所有服务服务类:XxxService: 通过ProcessEngine获取,Activiti将不同⽣命周期的服务封装在不同Service中,包括定义,部署,运⾏.通过服务类可获取相关⽣命周期中的服务信息RepositoryServiceRepository Service提供了对repository的存取服务Activiti中每⼀个不同版本的业务流程的定义都需要使⽤⼀些定义⽂件,部署⽂件和⽀持数据(例如BPMN2.0XML⽂件,表单定义⽂件,流程定义图像⽂件等),这些⽂件都存储在Activiti内建的Repository中RuntimeServiceRuntime Service提供了启动流程,查询流程实例,设置获取流程实例变量等功能.此外它还提供了对流程部署,流程定义和流程实例的存取服务TaskServiceTask Service提供了对⽤户Task和Form相关的操作.它提供了运⾏时任务查询,领取,完成,删除以及变量设置等功能HistoryServiceHistory Service⽤于获取正在运⾏或已经完成的流程实例的信息,与Runtime Service中获取的流程信息不同,历史信息包含已经持久化存储的永久信息,并已经被针对查询优化FormService使⽤Form Service可以存取启动和完成任务所需的表单数据并且根据需要来渲染表单Activiti中的流程和状态Task均可以关联业务相关的数据IdentityServiceIdentity Service提供了对Activiti系统中的⽤户和组的管理功能Activiti中内置了⽤户以及组管理的功能,必须使⽤这些⽤户和组的信息才能获取到相应的TaskManagementServiceManagement Service提供了对Activiti流程引擎的管理和维护功能这些功能不在⼯作流驱动的应⽤程序中使⽤,主要⽤于 Activiti 系统的⽇常维护核⼼业务对象:org.activiti.engine.impl.persistence.entity包下的类,包括Task,ProcessInstance,Execution等根据不同职责实现相应接⼝的⽅法(如需要持久化则继承PersistentObject接⼝),与传统的实体类不同Activiti组件Activiti上下⽂组件Context: ⽤来保存⽣命周期⽐较长,全局性的信息,类似Application.主要包括如下三类:CommandContext: 命令上下⽂-保存每个命令必要的资源,如持久化需要的sessionProcessEngineConfigurationImpl: 流程引擎相关配置信息-整个引擎全局的配置信息.如数据源DataSource等.该对象为单例,在流程引擎创建的时候初始化ExecutionContext: 持有ExecutionEntity对象持久化组件:Activiti使⽤mybatis作OR映射,并在此基础上增加设计了⾃⼰的持久化框架在流程引擎创建时初始化,顶层接⼝Session,SessionFactorySession有两个实现类:DbSqlSession: 负责sql表达式的执⾏AbstractManager: 负责对象的持久化操作SessionFactory有两个实现类:DbSqlSessionFactory: 负责DbSqlSession相关操作GenericManagerFactory: 负责AbstractManager相关操作Event-Listener组件:Activiti允许客户代码介⼊流程执⾏,提供了事件监听组件监听的事件类型:TaskListenerJavaDelegateExpressionExecutionListenerProcessEngineConfigurationImpl持有DelegateInterceptor的某个实例,⽅便调⽤handleInvocation Cache组件DbSqlSession中有cache的实现Activiti基于List和Map来做缓存:如查询时先查缓存,没有则直接查询并放⼊缓存异步执⾏组件Activiti可以执⾏任务,JobExecutor为其核⼼类,JobExecutor包含三个主要属性:JobAcquisitionThreadBlockingQueueThreadPoolExecutor⽅法ProcessEngines在引擎启动时调⽤JobExecutor.start,JobAcquisitionThread 线程即开始⼯作,其run⽅法不断循环执⾏AcquiredJobs中的job,执⾏⼀次后线程等待⼀定时间直到超时或者JobExecutor.jobWasAdded⽅法,因为有新任务⽽被调⽤。
基于Activiti5引擎的售后业务信息平台
基于Activiti5引擎的售后业务信息平台摘要随着网络信息技术的发展,一些传统的依据工作流技术的产品已经无法满足企业的需要,尤其是对变化的流程类型,同时也缺乏开放性和集成性等问题从而不能很好的适应公司的业务需求。
该系统总体架构采用S2SH框架,引入Activiti5引擎对系统流程进行管理,这样可以减少企业运行成本,提高管理效率,增强各部门协同办公能力。
该系统从实际出发,以公司的售后业务信息系统为例,详细介绍S2SH框架和Activiti5引擎整合的优势以及实现细节。
【关键词】工作流管理系统BPMN2,0 Spring+Strut2+Hibernate;Activiti5随着业务不断扩大和日益激烈的市场竞争,公司对于售后管理部分的服务也越来越重视,为了让公司的售后服务更加管理流程化,便利化,增强用户的满意程度,进一步提升产品的市场竞争力,特开发本系统,实现售后管理业务的规范化、信息化。
本系统包括:安装评估、调试参数设定、安装参数设定、故障登记、故障排查及处理、故障处理回访,还包括故障处理知识库维护、故障问题库维护等业务,售后服务的启动是从设备调试安装开始。
如采用传统开发模式,代码量大、冗余度多,不便于测试、扩展和维护,采用S2SH 框架进行开发,采用MVC设计模式,实现了模型、视图、控制器的分离,层次之间职责明确,让业务逻辑层与持久层也进行独立,倘若对数据进行更改,那么不会对前端造成影响,同样地,也不管前端如何变化,模型层只需很少的改动,这样可以大大提高系统的复用性。
最主要的是采用Activiti5工作流技术对系统的流程进行管理,降低了复杂流程应用开发和维护的难度,有利于团队开发成员并行工作。
1 主要技术简介1.1 Activiti5技术Activiti5 的创始人是Tom Baeyens 加入Alfresco 后推出的基于JBPM4 的开源工作流系统,它本身是一个业务流程管理(BPM)系统,它是由Apache开源许可的BPMN 2.0引擎开发出来的一种轻量级的可实现嵌入的BPM引擎。
Activiti的特点
关于BPMN的细节内容有很多,官方文档足足有500多页,本书会在第4章介绍Activiti支持的BPMN 2.0规范以及Activiti在BPMN 2.0规范基础上的扩展。关于BPMN的其他内容本书就不一一列举了,有兴趣的读者可以仔细阅读官方文档。
1.3 Activiti的特点
执行:具体的流程引擎(例如,Activiti)按照事先定义的流程处理路线以任务驱动的方式执行业务流程。
监控:此阶段是依赖执行阶段。业务人员在办理任务的同时收集每个任务(Task)的结果,然后根据结果做出相应处理,例如,在采购办公用品流程中,在通过领导审批之后,采购人员就要根据申请单外出采购。
Activiti有着活跃的社区,而且越来越多的企业都选择Activiti作为自己的流程引擎或者将其嵌入到自己的系统平台中(例如ESB)。
接下来简单了解一下工作流及其相关规范的历史。
1.2 工作流基础
1.2.1 什么是BPM
BPM是Business Process Management的缩写,中文含义是业务流程管理,是一套达成企业各种业务环节整合的全面管理模式。
从概念上来说,BPM包含两个不同方面的意思:管理规范和软件工程。各大BPM供应商长期以来试图抽象这两个不同的方面,但是依然混乱。
作为管理规范,BPM是每一个战略管理者的责任。BPM是组织必须执行的核心业务流程,包含了企业价值和如何提供其实现。作为日常工作的一部分,业务系统可以借助模型和流程规范地定义业务流程。BPM流程图表达的是执行流程的步骤,已完成特定目标。特别说明的是这些模型用于人与人的沟通。这些都是诠释未决的,这意味着它们可以包含更高级别有价值的信息而不包括不必要的细节。这种诠释未决的过程模型也被称为抽象业务流程(Abstract Business Processes.)。
BPMN 2.0
BPMN 2.0业务流程模型注解(Business Process Modeling Notation - BPMN)是业务流程模型的一种标准图形注解。
这个标准是由对象管理组(Object Management Group - OMG)维护的。
基本上,BPMN规范定义了任务看起来怎样的,哪些结构可以与其他进行连接,等等。
这就意味着意思不会被误解。
标准的早期版本(1.2版以及之前)仅仅限制在模型上,目标是在所有的利益相关者之间形成通用的理解,在文档,讨论和实现业务流程之上。
BPMN标准证明了它自己,现在市场上许多建模工具都使用了BPMN标准中的元素和结构。
实际上,现在的jPDL设计器也使用了 BPMN元素。
BPMN规范的2.0版本,当前已经处于最终阶段了,已经计划不就就会完成,允许添加精确的技术细节在BPMN的图形和元素中,同时制定BPMN元素的执行语法。
通过使用XML语言来指定业务流程的可执行语法, BPMN规范已经演变为业务流程的语言,可以执行在任何兼容BPMN2的流程引擎中,同时依然可以使用强大的图形注解。
3.2. 历史和目标jBPM BPMN2的实现是在jBPM 4.0发布之后在2021年8月,在与社区进行了紧密协作之后启动的。
而后,我们决定了第一个发布版(比如,文档/QA)涉及一部分BPMN2规范,将在jBPM 4.3发布。
我们的目标是建立一个原生BPMN2运行引擎(或者说实现'可执行的BPMN2')基于流程虚拟机(Process Virtual Machine - PVM)。
注意,这个版本的主要目标是原生可执行,不是图形注解 - 但是我们清楚对于未来的版本是很重要的。
如果用户已经了解了jBPM,就会发现? ? ? ?配置结构保持不变API与已经存在的完全一样或者很类似测试BPMN2流程也可以使用常用的java测试框架数据库表结构保持不变所以,总体来说,我们的主要目标是保持所有在jBPM上好的事情,加强它们,使用一个标准的流程语言。
JFlow与activiti的对比
驰骋工作流引擎JFlow 与activiti对比分析报告目录前言 (4)工作流程引擎- 对比 (4)5 种基本控制流模式的对比 (5)4 种高级分支同步模式 (10)2 种结构化模式 (14)4 种包含多实例的模式 (16)3 种基于状态的模式 (19)2 种取消模式 (22)总结 (23)表单集成 (24)表单引擎与流程引擎的关系 (25)最简单的请假流程-根据表单的请假天数来判断流程的分支 (25)流程引擎操纵表单引擎的一个案例 (27)对多种表单的支持 (29)简洁明快的CCForm (29)Word 文档支持 (31)Excel 表单的支持 (31)表单树的支持 (32)符合中国特色个性化JFlow 功能 (32)流程属性 (33)多种接受人规则 (33)接受人员投递路径自动记忆 (34)发起前置导航 (35)节点属性 (35)方向条件可视化配置 (36)JFlow 对工业自动化的流程支持 (37)前言为了更好的说明activiti 与jflow 的两款工作流引擎的特点与区别,我们按照如下几个方面做一次全面的、客观的对比。
首先activiti 是国外的一款开源的工作流程引擎,在国际上影响比较深远与广泛,解决了BPM领域的很多问题,值得我们赞赏。
他的boss 是jbpm 的前身。
JFlow 是济南驰骋公司开放的一款工作流程引擎,JFlow 的前身是CCFlow ,ccflow 是国内开源的一款老牌的工作流程引擎,承担过很多大型项目,适应于复杂的国内应用环境。
Activity 相对简单,仅有流程引擎,没有表单引擎。
在BPM 的研究领域, 很多的学者,专家都是把流程引擎与表单引擎分开的,对于这个观点我们并不很赞同。
实现功能需要大量的代码开发。
JFlow 是JFlow 流程引擎+CCForm 的表单引擎的有机结合,内容相对复杂,配置程度较高,实施周期短,上手快。
工作流程引擎- 对比以国外流行的工作流activiti 的模式与当今中国开源的JFlow(ccflow 和jflow 的总称)流程引擎对照。
activiti5连线表达式解析
activiti5连线表达式解析1.引言在a ct iv it i5中,连线表达式是指在流程设计过程中用于判断流程走向的条件表达式。
本文将详细介绍ac tiv i ti5连线表达式的定义、使用、语法和示例,帮助读者更好地理解和应用这一功能。
2.连线表达式的定义连线表达式是一种用于判断流程顺序流向的条件表达式。
在a c ti vi ti5中,连线表达式通常用于分支判断、流程合并和回退等场景中,通过对表达式的求值结果进行判断,来确定流程的下一步走向。
3.连线表达式的使用方法在a ct iv it i5中,连线表达式可以通过以下方式使用:3.1在连线属性中定义表达式连线属性面板中提供了一个条件表达式的输入框,可以直接在该输入框中编写表达式,用于判断流程的走向。
在编写表达式时,可以使用a c ti vi ti5提供的表达式语言,也可以使用ja va表达式语言。
3.2在连线属性中选择已定义的表达式在连线属性面板中,还可以选择已经在流程定义中定义的表达式,从而实现连线的判断。
4.连线表达式的语法连线表达式的语法遵循a ct iv it i5表达式语言的规则,并支持部分J a va表达式。
常用的语法包括:4.1比较运算符常用的比较运算符有"=="、"!="、">"、"<"、">="、"<="等,用于比较两个值的大小或相等关系。
4.2逻辑运算符常用的逻辑运算符有"&&"、"||"、"!",用于组合多个条件进行判断。
4.3函数和方法在连线表达式中,可以调用已定义的函数或方法,用于实现更复杂的条件判断。
4.4变量和常量连线表达式中可以使用流程变量和常量,用于比较和判断。
5.连线表达式的示例下面是一些使用示例,帮助理解连线表达式的应用场景和实际用法:5.1分支判断```${or de r.am ou nt>1000}```该表达式用于判断订单金额是否大于1000,如果是,则流程走向为"是"分支,否则为"否"分支。
纵观jBPM:从jBPM3到jBPM5以及Activiti5
纵观jBPM:从jBPM3到jBPM5以及Activiti5 作者荣浩发布于 2010年12月28日上午12时0分社区Java主题业务流程建模 ,业务流程管理标签Activiti ,jBPM ,JBoss分享|对jBPM来说,今年最大的事件莫过于jBPM的创建者Tom Baeyens离开JBoss 了。
Tom Baeyens离开的具体原因尚不清楚,但他的离开产生了两个结果:一是jBPM的下一个版本jBPM5完全放弃了jBPM4的基础代码,基于Drools Flow重头来过;二是Tom Baeyens加入Alfresco后很快推出了新的基于jBPM4的开源工作流系统Activiti。
由此不难推测Tom Baeyens离开的部分原因:JBoss内部对jBPM未来版本的架构实现产生了严重的意见分歧。
更加巧合的是12月1日Activiti5刚发布,紧接着12月2日jBPM5就发布了第一个候选发布版本,jBPM 与Activiti之间的微妙关系可见一般。
在这篇文章里,我们将一起回顾jBPM从jBPM3到jBPM5以及Activiti5的发展历程,我们可以清晰的看见jBPM(包括Activiti)设计所遵循的一致原则:强调流程服务的可嵌入性和可扩展性。
同时,从各个版本之间的变化我们也能看见产品设计思路的变化:更加强调面向业务人员,增加BPMS(业务流程管理系统)特性。
在回顾之前,我们首先讨论一下BPMS应该嵌入还是独立部署的问题,因为不管是jBPM还是Activiti,都强调了流程服务的可嵌入性。
此外,我们还需要讨论一下什么是BPMS的特性,它们所解决的问题是什么。
一、嵌入式还是独立部署?不管是jBPM还是Activiti,都强调了流程服务的可嵌入性。
Tom Baeyens在其个人博客里称作为独立部署的BPMS已死,原因有两个:一是独立部署的BPMS需要很高的安装使用成本,需要独立部署、需要用户支出大量的培训成本和维护成本;二是独立部署的BPMS与外部系统的交互方式是分布式,这使得很多问题变得复杂,例如分布式事务。
activiti原理
activiti原理
activiti是一个基于Java语言的开源工作流引擎,可以快速地构建流程管理、任务分配、权限审批等各种业务流程。
activiti的原理主要包括以下几个方面:
1. BPMN标准:activiti采用了BPMN(Business Process Model and Notation)标准来描述流程,BPMN是一种图形化的业务流程建模语言,用于描述业务流程中的活动、事件、网关、任务等元素,支持流程的可视化建模,提高了业务流程的可读性和可理解性。
2. 工作流引擎:activiti包含了一个工作流引擎,用于管理流程执行过程中的各种状态、流转、事件等。
工作流引擎主要由三个部分组成:流程引擎、任务引擎和历史引擎。
流程引擎负责解析BPMN 模型、驱动流程的执行;任务引擎负责处理任务的分配、完成、撤销等操作;历史引擎负责记录流程的历史信息,包括流程实例、任务、变量等。
3. 事件机制:activiti采用了事件机制来实现流程的监听和扩展。
事件机制允许用户在流程执行过程中注册监听器,在流程中发生指定的事件时触发监听器执行相应的操作,比如发送邮件通知、执行自定义的逻辑等。
4. Spring框架:activiti支持与Spring框架集成,可以使用Spring来管理activiti的bean对象,简化了配置和使用的难度。
同时,Spring提供了很多有用的功能,如事务管理、AOP等,可以更好地管理和控制activiti的执行过程。
总的来说,activiti的原理主要是基于BPMN标准的流程描述和工作流引擎的控制,同时支持事件机制和Spring框架的集成,使得activiti具备了高度的可扩展性和灵活性,可以满足不同场景下的流程管理需求。
Activiti的流程部署
前面的文章介绍了Activiti在IDEA开发工具中的基本配置,本章我们将学习基本的BPMN知识以及Activiti的流程部署。
BPMN的介绍Activiti项目是一项新的基于Apache许可的开源BPM平台,从基础开始构建,旨在提供支持新的BPMN2.0标准,包括支持对象管理组(OMG),面对新技术的机遇,诸如互操作性和云架构,提供技术实现。
那什么是BPM和BPMN呢?BPM:即业务流程管理,是一种以规范化的构造端到端的卓越业务流程为中心,以持续的提高组织业务绩效为目的的系统化方法,常见商业管理教育如EMBA、MBA等均将BPM包含在内。
BPMN:业务流程建模与标注,包括这些图元如何组合成一个业务流程图(Business Process Diagram)。
业务流程示意图是由一系列的元素符号构成。
作为BPMN的基础,这些符号将业务流程建模简单化、图形化,将复杂的建模过程视觉化,让阅读者对BPMN有一个更加清晰明了的了解。
既然BPMN 符号如此重要,那在绘制BPMN示意图之前,便必须要对BPMN符号的名称、意义、使用方法等有一个全面的理解。
BPMN的四种基本元素●流对象(Flow Objects):包括事件、活动、网关,是BPMN的核心元素;事件Event用一个圆圈表示,它是流程中运行过程中发生的事情。
事件的发生会影响到流程的流转.事件包含Start\Intermediate\End三种类型.如下图:活动Activities用圆角矩形表示,一个活动多个活动组成,活动的类型分为Task和Sub-Process。
如下下图:网关Gateway用菱形表示,用于控制流程的分支和聚合.具体符号表示如下:●连接对象(Connecting Objects):包括顺序流、消息流、关联;●泳道(Swimlanes):包括池和道两种类型;●人工信息(Artifacts):包括数据对象、组、注释。
Activiti的流程部署下面介绍在IDEA中如何部署一个简单的考勤补签流程1、首先在resource目录下新建bpmn目录2、点击bpmn目录右键——>new——>bpmn文件,输入bpmn文件名后会出现如下界面:该界面的左边是属性面板,可以查看和修改各个bpmn元素的属性值,中间是bpmn流程图,最右侧是流程图中的各种元素。
bpmn 2.0 范围标准
bpmn 2.0 范围标准
BPMN 2.0 的范围标准包括以下几方面:
1.图形符号:BPMN
2.0 定义了一套用于表示业务流程元素的图形符号,包
括任务(Task)、网关(Gateway)、事件(Event)、连接对象(Sequence Flow)等。
这些符号可以形成可读性强且易于理解的流程图。
2.事件驱动:BPMN 2.0 支持事件驱动型的业务流程,即流程在接收到特定
事件时才会发生变化。
事件可以是开始事件、结束事件或中间事件,用于触发流程的启动、终止或中间操作。
3.异常处理:BPMN 2.0 提供了异常处理机制,包括异常启动事件和异常结
束事件。
异常启动事件是在另外一个流程抛出异常结束事件时被触发,而异常结束事件对应throw,异常启动事件是catch,并且执行catch后获取不同类型的异常。
4.定时事件:BPMN 2.0 支持定时事件,用于定期循环流程或一次性流程。
定时事件使用描述一个定时事件。
5.消息启动事件:BPMN 2.0 可以通过一个消息名称触发,从而启动一个流
程实例。
可以和消息抛出事件一块使用,由流程自动根据消息名称启动对应的流程。
总的来说,BPMN 2.0 的范围标准涵盖了业务流程图的符号化表示、事件驱动的业务流程、异常处理、定时事件以及消息启动事件等方面。
activiti工作流原理
activiti工作流原理
activiti是一个Java开源的工作流引擎,用于管理和执行流程。
它基于BPMN 2.0规范,提供了一套强大的工作流管理功能。
activiti的工作原理可以分为以下几个方面:
1. 流程定义:使用BPMN
2.0规范的XML格式编写流程定义,定义流程中的各个环节、任务和流转条件。
2. 流程部署:将流程定义部署到activiti引擎中,引擎会解析
和验证流程定义,并将其转换为可执行的对象模型。
3. 流程实例化:通过引擎的API或图形界面,创建流程实例。
引擎会根据流程定义的模型创建一个新的流程实例,并将其加入到流程引擎的运行时环境中。
4. 任务执行:当一个流程实例启动后,活动会依次被执行。
引擎会根据流程定义的逻辑,自动判断下一个应该执行的任务,并将其分配给相应的参与者。
5. 任务完成:参与者完成任务后,将会通知引擎,并将相关信息提交。
引擎会根据流程定义的设定,判断是否满足继续流转的条件。
6. 流程控制:根据流程定义中的条件和监听器,引擎会根据当前的流程状态和相关事件,决定下一个应该执行的任务。
7. 流程结束:当流程达到结束条件时,该流程实例将会被标记为已完成。
整个流程的执行过程即结束。
activiti提供了丰富的API和可视化工具,使得用户能够方便地管理和配置工作流。
它的设计目标是简单、易用,同时又具备灵活的扩展性,可以满足各种不同业务场景的需求。
activiti搭建(五)BPMN介绍
activiti搭建(五)BPMN介绍对于BPMN我也不是⼗分清楚,⽬前也只是因为对于Modeler中不熟悉的组件查询,来对这部分的内容进⾏学习,不求⼀次理解,边学边理解吧。
所以这⼀章的介绍会⽐较简单,但也⾜够了。
1 流对象(Flow Objects)流对象是最为基础的概念了,⼗分重要。
1.1 事件(Events)P271事件都是⽤⼀个圆圈来代表,影响流程的流动,⼀般有⼀个原因(trigger)或者⼀个影响(result)。
标准定义了三种事件:开始,中间和结束。
从定义和分类名称上来看也能猜到事件的作⽤了,控制流程的开始,中间流转和结束,这些控制可能采取触发器(trigger)来完成,或者是导致⼀个结果(结束或抛出)。
(1)开始事件中⽂英⽂Trigger说明Marker开始事件Start Event None条件开始事件Conditional starteventConditional消息开始事件Message starteventMessage多重启动事件Multiple starteventMultiple多重并⾏开始事件Parallel multiplestart eventParallelMultiple信号开始事件Signal starteventsignal定时开始事件Timer starteventTimer(2)中间事件 Intermediate event中间事件的使⽤有两种⽅式:1.出于两种⽬的在⼀个正常的⼯作流中放置中间事件:中间事件可以⽤于“catch”事件触发器,或者是“throw”事件触发器。
2.⼀个中间事件放置于⼀个活动(Activity)中间,仅能够⽤于“catch”事件触发器,也就是捕获⼀个事件,做相应的处理。
中⽂英⽂Trigger说明Marker中间事件NoneIntermediateEventNone消息事件MessageIntermediateEventMessage定时事件TimerIntermediateEventTimer升级事件EscalationIntermediateEventEscalation补偿事件CompensationIntermediateEventCompensation条件事件ConditionalIntermediateEventConditional链接事件LinkIntermediateEventLink信号事件SignalIntermediateEventSignal多重事件MultipleIntermediateEventMultiple并⾏多重事件Parallel MultipleIntermediateParallel MultipleIntermediateEvent中间事件远不⽌这些,剩余的是和activiti boundary相关的,这⾥就不⼀⼀列举了,具体查看官⽹⽂档P284页。
bpmn使用手册
bpmn使用手册
BPMN(Business Process Model and Notation)使用手册提供有关如何使用BPMN建模语言来描述和设计业务流程的指南和
规范。
以下是一些常见的BPMN使用手册的内容:
1. BPMN基础知识:介绍BPMN的基本概念和术语。
这包括
流程、任务、事件、网关和流程符号等。
2. BPMN建模规范:提供关于如何使用BPMN建模符号和元
素的规范。
这包括如何表示流程的开始和结束、任务的执行顺序、条件分支和合并、并行流程和消息传递等。
3. BPMN建模技巧:介绍一些常见的BPMN建模技巧和最佳
实践。
例如,如何避免冗余的过程符号,如何提高流程的可读性和可理解性,以及如何设计适合业务需求的流程模型。
4. BPMN模型验证和优化:讲解如何验证和优化BPMN模型。
这包括检查模型的正确性、一致性和可执行性,并提供了一些常用的验证工具和技术。
5. BPMN工具和平台:介绍各种BPMN建模工具和平台,以
及它们在建模、执行和分析BPMN流程中的功能和特点。
6. BPMN实践案例:提供一些实际的BPMN建模案例和实施
经验。
这些案例可以帮助用户了解如何使用BPMN来解决各
种业务问题和挑战。
总之,BPMN使用手册为用户提供了关于BPMN建模语言和技术的全面指南,帮助他们在业务流程设计和管理中获得更好的效果和结果。
activiti5的form分类
一、介绍Activiti5Activiti是一个轻量级的工作流和业务流程管理工具,它使用Java编写,是一个面向流程开发人员和系统管理员的开源工作流处理环境。
Activiti5是Activiti的早期版本,在2011年发布,它提供了灵活的工作流引擎和业务流程管理解决方案,支持BPMN 2.0标准,并且易于集成和扩展。
二、Activiti5的form分类在Activiti5中,form的表单可以分为两种分类,分别是静态表单和动态表单。
1. 静态表单静态表单是指直接在BPMN 2.0流程中定义的表单,表单的结构和内容是固定的,不会发生变化。
静态表单通常使用表单设计器来创建,然后在流程定义中进行引用。
静态表单的优点是设计简单,易于理解和维护,适用于一些固定的业务流程。
2. 动态表单动态表单是指表单的结构和内容可以根据流程的执行状态和数据动态改变的表单。
在Activiti5中,通常使用引擎提供的表单渲染器来创建动态表单,表单的渲染和展示是由引擎自动完成的。
动态表单的优点是灵活性强,适用于一些需要动态处理的业务流程,可以根据需要动态添加字段和内容。
三、应用场景1. 静态表单的应用场景静态表单适用于一些固定的流程场景,比如请假流程、报销流程等。
在这些流程中,表单的结构和内容通常是固定的,只需要在流程设计阶段进行一次性的设定即可。
静态表单可以通过表单设计器直接在流程定义中进行定义和引用,易于管理和维护。
2. 动态表单的应用场景动态表单适用于一些需要灵活处理的流程场景,比如审批流程、订单处理流程等。
在这些流程中,表单的结构和内容可能会根据流程执行状态和数据的变化而发生变化,需要动态添加字段和内容。
动态表单可以根据引擎提供的表单渲染器进行创建,使得表单的展示和渲染是由引擎自动完成的,实现了灵活性和扩展性。
四、结论在Activiti5中,静态表单和动态表单分别适用于不同的业务流程场景,可以根据实际需求选择合适的表单类型,从而实现流程的高效处理和管理。
基于activiti5工作流技术的定时任务在审批流程中的设计与实现
Deal with application:经理处理委托人的 申请。可能同意重新提交,或不同意重新提交。
3实现及时提醒和刷新功能
边界计时器事件只能在打开作业执行器 时触发(即,配置文件中的需要将作业执行 器激活设置为true,因为默认设置为禁用执行 器)。定时任务工作流的设计。在Web终端 中由JavaScript脚本显示倒计时时间,这样会 比较容易实现。但如何及时,提交到服务器, 以便进入下一个进程。很难理解。这里使用了 DWR (Direct Web Remoting)长连接的推送技 术。优点:实时性好(消息延迟小);性能好 (可支持大量用户)。DWR是一个Ajax开源 框架,为远程服务器改进Web页面和java交互, 可以帮助开发人员开发包含Ajax技术的网站。
<sequenceFlow id="sequenceFlow21898ea5-4157-4282-a077-7156c7ca5e36" sourceRef="boundarytimerl" targetRef="outtimedeal "/>
Outtime Handle:如果委托人没有提交自 己的结果,则会被服务任务处理程序调用,自 动记录加班日志。如果不及时提交结果,将由 ServiceTask处理程序调用,自动记录超时日志, 并提醒用户重新提交申请。如果按时提交,将 结束该过程。使用变量作为时间参数,在Java 代码中使用以下格式时间:
软件开发• Software Development
基于Activiti5工作流技术的定时任务在审批流程中的设计与实现
《bpmn2.0――业务流程建模标准导论》
1. 引言BPMN2.0(Business Process Model and Notation,业务流程建模标准)是一种用于描述业务流程的标准化符号和语法。
它为业务分析师、流程建模师和其他利益相关者提供了一种统一的方法来可视化、分析和优化业务流程。
本文将介绍BPMN2.0的基本概念、重要性以及在实际应用中的意义。
2. BPMN2.0的基本概念BPMN2.0是业务流程建模的标准,它使用一系列图形符号来表示不同类型的活动、事件、网关和流程流。
每个符号都有其特定的含义和用途,使得业务流程能够以直观、易懂的方式呈现出来。
其中,最重要的符号包括流程、任务、网关、事件等。
了解这些基本概念对于理解BPMN2.0的应用至关重要。
3. BPMN2.0的重要性在当今竞争激烈的商业环境中,组织需要不断地优化其业务流程以提高效率和降低成本。
BPMN2.0作为业务流程建模的标准,可以帮助组织清晰地理解和描述其业务流程,进而识别出潜在的改进空间。
通过BPMN2.0,组织可以更加科学、系统地管理和优化其业务流程,从而提升竞争力。
4. BPMN2.0在实际应用中的意义在实际应用中,BPMN2.0可以被广泛地运用于业务流程的建模、分析和优化。
在制造业中,可以利用BPMN2.0来建模生产流程,优化生产效率;在金融行业中,可以利用BPMN2.0来建模贷款审批流程,优化风险控制和客户体验。
BPMN2.0的实际应用意义体现在其对于组织提升管理效率、优化流程质量以及实现创新的支持作用上。
5. 个人观点和理解作为业务流程建模的标准,BPMN2.0在当今商业社会中具有重要的意义。
我个人认为,深入了解和掌握BPMN2.0对于提升自身在业务流程管理和优化方面的能力至关重要。
只有通过掌握BPMN2.0,才能更好地理解和解决实际业务流程中的问题,进而实现组织的持续改进和发展。
6. 总结通过本文的介绍,读者对BPMN2.0的基本概念、重要性以及在实际应用中的意义有了更加清晰的认识。
ACTIVITI5源码与流程活动自动与手工触发执行例子
ACTIVITI5源码与流程活动自动与手工触发执行例子Activiti是一个面向业务流程管理的开源工作流引擎,支持流程定义、部署、流程实例管理、任务分配和调度等功能。
在Activiti中,流程可以通过自动触发和手工触发两种方式执行。
本文将通过一个示例来演示Activiti的工作原理以及自动触发和手工触发执行流程的功能。
假设我们有一个简化的请假流程,该流程包括请假申请和请假审批两个步骤。
请假申请由员工发起,审批由部门经理进行。
在自动触发执行的情况下,员工提交请假申请后,流程会自动执行直到完成;在手工触发执行的情况下,员工提交请假申请后,流程会暂停,等待部门经理手动触发审批。
首先,我们需要定义请假流程的模型和流程定义。
在Activiti中,可以使用BPMN2.0标准进行流程建模。
以下是请假流程的模型示意图:其中,流程由两个活动组成:请假申请和请假审批。
请假申请为用户任务,需要员工填写请假信息;请假审批为服务任务,需要部门经理进行审批。
在Activiti中,可以使用Java代码来部署和执行流程定义。
以下是部署请假流程定义的示例代码:```javapublic void deployLeaveProcessDefinitioRepositoryService repositoryService =processEngine.getRepositoryService(;DeploymentBuilder deploymentBuilder =repositoryService.createDeployment(;deploymentBuilder.addClasspathResource("leave.bpmn");deploymentBuilder.deploy(;```接下来,我们可以使用Java代码来执行请假流程。
以下是自动触发执行和手工触发执行的示例代码:```javapublic void autoTriggerLeaveProcespublic void manualTriggerLeaveProces// Workflow will pause at the user task for the employee tofill in leave information// Once the employee submits the leave application, the workflow will continue and pause at the service task for the manager to approve```在自动触发执行的情况下,流程会自动根据定义的流程模型顺序执行,直到流程完成。
bpmn规范
bpmn规范
BPMN(Business Process Model and Notation)是一种用于建模业务流程的标准语言,它能够清晰地描述业务流程,使得业务和IT 部门之间的沟通变得更加顺畅。
BPMN提供了一种共同的图示规范,使业务用户能够建模出清晰明了的业务流程图。
BPMN规范非常简单,可以理解易行,它由多个图形组件组成,这些组件包括:开始和结束事件、任务活动、分支、连接器、子流程以及消息及时间等。
开始与结束事件是BPMN的基础概念,它们表示流程的开始和结束。
任务活动由一个图标表示,它们提高了工作流程的可读性,帮助用户清晰地看到流程当中的步骤,从而更好地管理流程。
分支和合并都是BPMN的核心模型,它们定义了流程之间的决策和分支,使得业务流程更健壮有效。
连接器(gateway)是一种BPMN图示元素,它提供不同的条件来连接或改变流程,从而改变流程的执行路径。
子流程是BPMN中的一种特殊机制,它允许用户将复杂的流程进行分割和组合,从而使流程更易维护和管理。
消息与时间是BPMN中的第三方元素,它们能够定时发送消息,从而实现定时提醒的功能。
因此,业务用户可以利用BPMN的标准语言,使用上述元素来构建一个详细而表达力强的业务流程图,用以更有效地管理业务流程。
bpmn2 技术原理
bpmn2 技术原理摘要:1.BPMN2 简介2.BPMN2 基本元素3.BPMN2 流程建模4.BPMN2 事件和触发器5.BPMN2 数据流和事件数据6.BPMN2 实践应用正文:一、BPMN2 简介BPMN2(Business Process Model and Notation 2.0)是一种用于描述和建模企业业务流程的标准语言。
它旨在为业务流程管理人员提供一种可视化、易于理解和设计的语言,以便更好地管理和优化企业业务流程。
BPMN2 不仅适用于流程设计师和开发人员,还适用于业务分析师、运营经理等从事企业流程管理工作的人员。
二、BPMN2 基本元素BPMN2 主要由以下基本元素组成:1.活动:表示业务流程中的任务或操作,如“审批”、“发放订单”等。
2.决策:表示业务流程中的判断条件,如“金额是否大于1000”。
3.事件:表示业务流程中的触发器,如“定时事件”、“消息事件”等。
4.流程线:连接各个元素的线条,表示业务流程的顺序执行。
5.范围:表示业务流程的层次结构,用于组织和管理流程元素。
三、BPMN2 流程建模BPMN2 提供了丰富的流程建模功能,包括以下几种流程关系:1.顺序:流程元素按照顺序执行。
2.并行:流程元素同时执行。
3.嵌套:流程元素相互包含,形成子流程。
4.分支:根据特定条件选择执行的流程元素。
5.合并:多个流程线汇聚成一条。
四、BPMN2 事件和触发器事件和触发器在BPMN2 中用于控制流程的执行:1.事件:表示业务流程中的特定情况,如“收到订单”、“库存不足”等。
事件可以是内部事件(如系统监控),也可以是外部事件(如邮件、短信等)。
2.触发器:用于响应事件并执行特定操作。
触发器可以是条件(如“金额大于1000”),也可以是时间(如“每天9点”)。
五、BPMN2 数据流和事件数据数据流用于在业务流程中传递数据,事件数据用于描述数据流的来源和去向。
数据流和事件数据可以帮助企业更好地管理和监控业务流程中的数据交换。
BPMN2新规范与Activiti
BPMN2新规范与Activiti5上世纪九十年代以后,随着WfMC联盟的成立,BPM市场群雄逐鹿如火如荼,工作流技术得到了突飞猛进的发展,其中IBM、Oracle等大型软件厂商在工作流领域各扯大旗割据一方。
2011年BPMN2.0新规范的发布为各工作流产品互容互通提供了统一的标准,结束了各工作流厂商各自为政相互抵斥的局面。
什么是BPMN、Workflow?•BPM(Business Process Management)——“通过建模、自动化、管理和优化流程,打破跨部门跨系统业务过程依赖,提高业务效率和效果”。
•Workflow——“全部或者部分由计算机支持或自动处理的业务过程”(工作流管理联盟WfMC组织对工作流概念的经典定义)BPM基本内容是管理既定工作的流程,通过服务编排,统一调控各个业务流程,以确保工作在正确的时间被正确的人执行,达到优化整体业务过程的目的。
BPM概念的贯彻执行,需要有标准化的流程定义语言来支撑,使用统一的语言遵循一致的标准描述具体业务过程,这些流程定义描述由专有引擎去驱动执行。
这个引擎就是工作流引擎,它作为BPM的核心发动机,为各个业务流程定义提供解释、执行和编排,驱动流程“动“起来,让大家的工作“流”起来,为BPM的应用提供基本、核心的动力来源。
现实工作中,不可避免的存在跨系统跨业务的情况,而大部分企业在信息化建设过程中是分阶段或分部门(子系统)按步实施的,后期实施的基础可能是前期实施成果的输出,在耦合业务实施阶段,相同的业务过程可能会在不同的实施阶段重用,在进行流程梳理过程中,不同的实施阶段所使用的流程描述语言或遵循的标准会有所不同(服务厂商不同),有的使用WfMC的XPDL,还有些使用BPML、BPEL、WSCI等,这就造成流程管理、业务集成上存在很大的一致性、局限性,提高了企业应用集成的成本。
BPMN2.0规范的引入遵循BPMN2.0新规范的工作流产品能很大程度上解决此类问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
特别响、非常近——BPMN2新规范与Activiti5上世纪九十年代以后,随着WfMC联盟的成立,BPM市场群雄逐鹿如火如荼,工作流技术得到了突飞猛进的发展,其中IBM、Oracle等大型软件厂商在工作流领域各扯大旗割据一方。
2011年BPMN2.0新规范的发布为各工作流产品互容互通提供了统一的标准,结束了各工作流厂商各自为政相互抵斥的局面。
什么是BPMN、Workflow?•BPM(Business Process Management)——“通过建模、自动化、管理和优化流程,打破跨部门跨系统业务过程依赖,提高业务效率和效果”。
•Workflow——“全部或者部分由计算机支持或自动处理的业务过程”(工作流管理联盟WfMC组织对工作流概念的经典定义)BPM基本内容是管理既定工作的流程,通过服务编排,统一调控各个业务流程,以确保工作在正确的时间被正确的人执行,达到优化整体业务过程的目的。
BPM概念的贯彻执行,需要有标准化的流程定义语言来支撑,使用统一的语言遵循一致的标准描述具体业务过程,这些流程定义描述由专有引擎去驱动执行。
这个引擎就是工作流引擎,它作为BPM的核心发动机,为各个业务流程定义提供解释、执行和编排,驱动流程“动“起来,让大家的工作“流”起来,为BPM的应用提供基本、核心的动力来源。
现实工作中,不可避免的存在跨系统跨业务的情况,而大部分企业在信息化建设过程中是分阶段或分部门(子系统)按步实施的,后期实施的基础可能是前期实施成果的输出,在耦合业务实施阶段,相同的业务过程可能会在不同的实施阶段重用,在进行流程梳理过程中,不同的实施阶段所使用的流程描述语言或遵循的标准会有所不同(服务厂商不同),有的使用WfMC 的XPDL,还有些使用BPML、BPEL、WSCI等,这就造成流程管理、业务集成上存在很大的一致性、局限性,提高了企业应用集成的成本。
BPMN2.0规范的引入遵循BPMN2.0新规范的工作流产品能很大程度上解决此类问题。
BPMN2.0相对于旧的1.0规范以及XPDL、BPML及BPEL等最大的区别是定义了规范的执行语义和格式,利用标准的图元去描述真实的业务发生过程,保证相同的流程在不同的流程引擎得到的执行结果一致。
BPMN2.0对流程执行语义定义了三类基本要素,它们是日常业务流程的“三板斧”:•Activities(活动)——在工作流中所有具备生命周期状态的都可以称之为“活动”,如原子级的任务(Task)、流向(Sequence Flow),以及子流程(Sub-Process)等•Gateways(网关)——顾名思义,所谓“网关”就是用来决定流程流转指向的,可能会被用作条件分支或聚合,也可以被用作并行执行或基于事件的排它性条件判断•Events(事件)——在BPMN2.0执行语义中也是一个非常重要的概念,像启动、结束、边界条件以及每个活动的创建、开始、流转等都是流程事件,利用事件机制,可以通过事件控制器为系统增加辅助功能,如其它业务系统集成、活动预警等这三类执行语义的定义涵盖了业务流程常用的Sequence Flow(流程转向)、Task(任务)、Sub-Process(子流程)、Parallel Gateway(并行执行网关)、ExclusiveGateway(排它型网关)、InclusiveGateway(包容型网关)等常用图元,如图1:图1:BPMN2.0三类基本执行语义要素现实业务所有的业务环节都离不开Activities、Gateways和Events,无论是简单的条件审批还是复杂的父子流程循环处理,在一个流程定义描述中,所有的业务环节都离不开Task、Sequence Flow、Exclusive Gateway、Inclusive Gateway(如图1中右侧绿色标记所示元素),其中Task是一个极具威力的元素,它能描述业务过程中所有能发生工时的行为,它包括User Task、Manual Task、Service Task、Script Task等,可以被用来描述人机交互任务、线下操作任务、服务调用、脚本计算任务等常规功能。
User Task:生成人机交互任务,主要被用来描述需要人为在软件系统中进行诸如任务明细查阅、填写审批意见等业务行为的操作,流程引擎流转到此类节点时,系统会自动生成被动触发任务,须人工响应后才能继续向下流转。
常用于审批任务的定义。
Manual Task:线下人为操作任务,常用于为了满足流程图对实际业务定义的完整性而进行的与流程驱动无关的线下任务,即此类任务不参与实际工作流流转。
常用于诸如物流系统中的装货、运输等任务的描述。
Service Task:服务任务,通常工作流流转过程中会涉及到与自身系统服务API调用或与外部服务相互调用的情况,此类任务往往由一个具有特定业务服务功能的Java类承担,与User Task不同,流程引擎流经此节点会自动调用Java类中定义的方法,方法执行完毕自动向下一流程节点流转。
另外,此类任务还可充当“条件路由”的功能对流程流转可选分支进行自动判断。
常用于业务逻辑API的调用。
Script Task:脚本任务,在流程流转期间以“脚本”的声明或语法参与流程变量的计算,目前支持的脚本类型有三种:juel(即JSP EL)、groovy和javascript。
在Activiti5.9中新增了Shell Task,可以处理系统外部定义的Shell脚本文件,也与Script Task有类似的功能。
常用于流程变量的处理。
BPMN2.0流程示例BPMN2.0为所有业务元素定义了标准的符号,不同的符号代表不同的含义,以OA应用中请假流程为例,使用标准的BPMN2.0图元定义示意如图2:图2:BPMN2.0请假流程定义在上述的流程示意图中,所涉及到的执行语义图元主要有表1中的8类:表1:请假流程所用图元除了上述Start Event、User Task、Exclusive Gateway、Parallel Gateway、Service Task、End Event标准的BPMN2.0图元外,上述流程图还使用了Lane Set(业务部门、人力资源部、考勤系统),分别表示流程活动所涉及到的部门或角色,Lane的概念和jBPM4中“泳道”的概念一样,都用来表示同一类相似任务的归属者。
应用BPMN2.0标准的一个最显著的特色是,不同阶段的人员,无论是需求分析、概要设计、详细设计或是具体的业务实现,都可在一个流程图上开展工作,避免业务理解存在偏差。
一个系统的实现,需求分析人员可以利用BPMN2.0标准图元草绘一下搜集到的需求;然后可以拿给设计人员,讨论出具体的业务需求进行功能设计,由设计人员在草图的基础上逐步细化,并得到需求人员的认同;设计人员又将细化后的流程图交给开发人员,罗列要实现的功能点,指出流程图上各活动节点所具备的行为,设计人员与开发人员依据此图达成共识,进入具体的开发阶段;如果后期请假流程发生更改,仍然是在现有流程图上更改,随着项目的推进,流程图也在不断的演进,但至始至终,项目受众都使用同一个流程图交流,保障需求理解的一致性,一定程度上推动了项目的敏捷性。
Activiti5支持最新的BPMN2.0规范作为支持最新BPMN2.0规范的开源工作流引擎Activit5,实现了对规范的绝大多数图元的定义,能够满足企业工作流的各种复杂应用。
它是一个无侵入的、支持嵌入式和独立部署的开源工作流引擎,是Tom Bayen离开jBoss加入Alfresco公司后的另立山头之作,共同开发Activit5的除了Alfresco外还有SpringSource、MuleSoft、Salves、FuseSource、Signavio 等公司。
从Activiti5.0到当前的5.9(今年3月份发布),版本更新迭代速度很快,新版本功能稳定,性能良好,为开源社区提供了商业工作流之外非常具有竞争力的选择。
与jBPM5的差别值得一提的是,Activiti5与jBPM5都属于业界优秀的开源工作流引擎,都支持BPMN2.0最新规范,均基于Apache License,符合J2EE规范,提供工作流建模、执行以及对流程生命周期过程监控。
但两者设计理念和技术组成却有很大不同,见下表2:表2:Activiti5与jBPM5技术组成Activiti5使用Spring进行引擎配置以及各个Bean的管理,综合使用IoC和AOP技术,使用CXF作为Web Services实现的基础,使用MyBatis进行底层数据库ORM的管理,预先提供Bundle化包能较容易的与OSGi进行集成,通过与Mule ESB的集成和对外部服务(Web Service、RESTful等)的接口可以构建全面的SOA应用;jBPM5使用社区的大多数组件,以Drools Flow为核心组件作为流程引擎的核心构成,以Hibernate作为数据持久化ORM 实现,采用基于JPA/JTA的可插拔的持久化和事务控制规范,使用Guvnor作为流程管理仓库,能够与Seam、Spring、OSGi等集成。
需要指出的是Activiti5是在jBPM3、jBPM4的基础上发展而来的,是原jBPM的延续,而jBPM5则与之前的jBPM3、jBPM4没有太大关联,且舍弃了备受推崇的PVM(流程虚拟机)思想,转而选择jBoss自身产品Drools Flow作为流程引擎的核心实现,工作流最为重要的“人机交互”任务(类似于审批活动)则由单独的一块“Human Task Service”附加到Drools Flow上实现,任务的查询、处理等行为通过Apache Mina异步通信机制完成。
优劣对比:从技术组成来看,Activiti最大的优势是采用了PVM(流程虚拟机),支持除了BPMN2.0规范之外的流程格式,与外部服务有良好的集成能力,延续了jBPM3、jBPM4良好的社区支持,服务接口清晰,链式API更为优雅;劣势是持久化层没有遵循JPA规范。
jBPM最大的优势是采用了Apache Mina异步通信技术,采用JPA/JTA持久化方面的标准,以功能齐全的Guvnor作为流程仓库,有RedHat(被红帽收购)的专业化支持;但其劣势也很明显,对自身技术依赖过紧且目前仅支持BPMN2。
Activiti5设计模式命令模式能将命令的发出与执行分开,委派给不同的对象,每一个命令都代表一个指令,其最大的好处是提供了一个公共接口,使得用户可以用同一种方式调用所有的事务,同时也易于添加新事务以扩展系统。
Activiti5大量采用了命令模式,在流程运行期间,所有的指令执行(比如流程部署、流程流转、获取任务等)都使用此模式实现,其中涉及到四个重要的概念:Command:Activiti5的命令定义接口,仅有一个execute方法,所有运行期要执行的指令都要实现该接口,定义要执行的具体行为。