您的当前位置:首页正文

Activiti7工作流引擎

2023-03-06 来源:客趣旅游网
Activiti7⼯作流引擎

Activiti7⼯作流引擎官⽅⽹站:

Alfresco软件公司在2010 年 5 ⽉17 ⽇宣布Activiti业务流程管理(BPM)开源项⽬的正式启动,其⾸席架构师由业务流程管理BPM的专家 Tom Baeyens 担任,Tom Baeyens 就是原来jbpm的架构师, ⽽jbpm是⼀个⾮常有名的⼯作流引擎,当然activiti也是⼀个⼯作流引擎。

activiti 可以将业务系统中复杂的业务流程抽取出来,使⽤专门的建模语⾔(BPMN2.0)进⾏定义,业务系统按照预先定义的流程进⾏执⾏,实现了业务系统的业务流程由activiti进⾏管理,减少业务系统由于流程变更进⾏系统升级改造的⼯作量,从⽽提⾼系统的健壮性,同时也减少了系统开发维护成本。

1、与以前开发流程的区别以前:程序员控制流程单状态,当到达某个状态时,就给谁审批,但是如果中间环节断开,即缺少⼀级的审批,则需要重新修改审批流程代码。

Activiti7:通过流程图⽣成代码,在数据库中会保存当前流程节点的数据,每次执⾏完流程节点,数据库数据会删除,并且进⼊下⼀个节点(⽣成⼀条数据),如果某个节点不需要了,也不会影响程序的正常运⾏。

通过流程图⽣成代码:本质上是⼀个xml⽂件,通过解析xml⽂件就能获取每⼀个节点的数据,然后保存到数据库。

2、BPM简介BPM(Business Process Management),即业务流程管理,是⼀种以规范化的构造端到端的卓越业务流程为中⼼,以持续的提⾼组织业务绩效为⽬的系统化⽅法,常见商业管理教育如EMBA、MBA 等均将 BPM 包含在内。

企业流程管理主要是对企业内部改⾰,改变企业职能管理机构重叠、中间层次多、流程不闭环 等,做到机构不重叠、业务不重复,达到缩短流程周期、节约运作资本、提⾼企业效益的作⽤。

BPM软件BPM软件就是根据企业中业务环境的变化,推进⼈与⼈之间、⼈与系统之间以及系统与系统之间的整合及调整的经营⽅法与解决⽅案的 IT ⼯具。 通常以 Internet⽅式实现信息传递、数据同步、 业务监控和企业业务流程的持续升级优化,从⽽实现跨应⽤、跨部门、跨合作伙伴与客户的企业运作。通过 BPM 软件对企业内部及外部的业务流程的整个⽣命周期进⾏建模、⾃动化、管理监控和优化,使企业成本降低,利润得以⼤幅提升。BPM 软件在企业中应⽤领域⼴泛,凡是有业务流程的地⽅都可以 BPM 软件进⾏管理,⽐如企业⼈事办公管理、采购流程管理、公⽂审批流程管理、财务管理等。

BPMNBPMN(Business Process Model And Notation):业务流程模型和符号是BPMI(Business Process Management Initiative)开发的⼀套标准的业务流程建模符号,使⽤ BPMN 提供的符号可以创建业务流程。

2004 年 5 ⽉发布了 BPMN1.0 规范.BPMI,于 2005 年 9 ⽉并⼊ OMG(The Object Management Group对象管理组织)组织。OMG 于 2011 年 1⽉发布BPMN2.0 的最终版本。BPMN 是⽬前被各 BPM ⼚商⼴泛接受的 BPM 标准。Activiti 就是使⽤ BPMN 2.0 进⾏流程建模、流程执⾏管理,它包括很多的建模符号,⽐如: Event ⽤⼀个圆圈表⽰,它是流程中运⾏过程中发⽣的事情。

3、Activiti7使⽤教程部署activitiActiviti是⼀个⼯作流引擎(其实就是⼀堆 jar 包 API),业务系统使⽤activiti来对系统的业务流程进⾏⾃动化管理,为了⽅便业务系统访问(操作)activiti 的接⼝或功能,通常将 activiti 环境与业务系统的环境集成在⼀起。

流程定义使⽤ activiti流程建模⼯具(activity-designer)定义业务流程(.bpmn⽂件)。 .bpmn ⽂件就是业务流程定义⽂件,通过xml定义业务流程。

如果使⽤其它公司开发的⼯作引擎⼀般都提供了可视化的建模⼯具(Process Designer)⽤于⽣成流程定义⽂件。建模⼯具操作直观,⼀般都⽀持图形化拖拽⽅式、多窗⼝的⽤户界⾯、丰富的过程图形元素、过程元素拷贝、粘贴、删除等功能。

流程定义部署向activiti部署业务流程定义(.bpmn⽂件)。使⽤ activiti 提供的 api向 activiti 中部署.bpmn ⽂件,⼀般情况还需要⼀块⼉部署业务流程的图⽚.png。

启动⼀个流程实例(ProcessInstance)启动⼀个流程实例表⽰开始⼀次业务流程的运⾏,⽐如员⼯请假流程部署完成,如果张三要请假就可以启动⼀个流程实例,如果李四要请假也启动⼀个流程实例,两个流程的执⾏互相不影响,就好⽐定义⼀个java类,实例化两个对象⼀样,部署的流程就好⽐ java 类,启动⼀个流程实例就好⽐ new ⼀个 java 对象。

⽤户查询待办任务(Task)因为现在系统的业务流程已经交给 activiti管理,通过activiti就可以查询当前流程执⾏到哪了, 当前⽤户需要办理什么任务了,这些activiti帮我们管理了,⽽不像上边需要我们在sql语句中的where条件中指定当前查询的状态值是多少。

⽤户办理任务⽤户查询待办任务后,就可以办理某个任务,如果这个任务办理完成还需要其它⽤户办理,⽐如购单创建后由部门经理审核,这个过程也是由activiti帮我们完成了,不需要我们在代码中硬编码指定下⼀个任务办理⼈了。

流程结束当任务办理完成没有下⼀个任务/结点了,这个流程实例就完成了。

4、Activiti7下载安装下载地址:Maven地址:

org.activiti

activiti-dependencies 7.1.0-M8 import pom

5、安装Activiti Designer流程设计器(IDEA)⽅式⼀:直接在IDEA中查询插件actiBPM安装

⽅式⼆:如果没有查询到插件,则⾃⼰下载导⼊,下载地址:,导⼊下载的actibpm.jar包

安装完成,在创建⽂件时可以看见

6)⽣成25张表命名规则Activiti的表都以act_开头,第⼆部分是表⽰表的⽤途的两个字母缩写标识,⽤途也和服务的API对应。

act_hi_*:'hi’表⽰ history,此前缀的表包含历史数据,如历史(结束)流程实例,变量,任务等等。act_ge_*:'ge’表⽰ general,此前缀的表为通⽤数据,⽤于不同场景中。act_evt_*:'evt’表⽰ event,此前缀的表为事件⽇志。

act_procdef_*:'procdef’表⽰ processdefine,此前缀的表为记录流程定义信息。

act_re_*:'re’表⽰ repository,此前缀的表包含了流程定义和流程静态资源(图⽚,规则等等)。

act_ru_*:'ru’表⽰ runtime,此前缀的表是记录运⾏时的数据,包含流程实例,任务,变量,异步任务等运⾏中的数据。Activiti只在流程实例执⾏过程中保存这些数据,在流程结束时就会删除这些记录。

数据表分类通⽤数据(act_ge_)

表名解释

act_ge_bytearray⼆进制数据表,存储通⽤的流程定义和流程资源。

act_ge_property系统相关属性,属性数据表存储整个流程引擎级别的数据,初始化表结构时,会默认插⼊三条记录。

流程定义表(act_re_)

表名解释

act_re_deployment部署信息表act_re_modelact_re_procdef

流程设计模型部署表流程定义数据表

运⾏实例表(act_ru_)

表名

act_ru_event_subscract_ru_executionact_ru_identitylinkact_ru_integrationact_ru_jobact_ru_taskact_ru_timer_jobact_ru_variable

历史流程表(act_hi_)

解释

运⾏时事件表

运⾏时流程执⾏实例表运⾏时⽤户信息表运⾏时积分表运⾏时作业信息表运⾏时任务信息表运⾏时定时器作业表运⾏时变量信息表

act_ru_deadletter_job作业死亡信息表,作业失败超过重试次数

act_ru_suspended_job运⾏时作业暂停表

表名act_hi_actinstact_hi_commentact_hi_detailact_hi_detailact_hi_procinstact_hi_taskinstact_hi_varinst

其他表

解释

历史节点表历史意见表

历史详情表,提供历史变量的查询历史流程⽤户信息表历史流程实例表历史任务实例表历史变量表

act_hi_attachment历史附件表

表名act_evt_log

解释

流程引擎的通⽤事件⽇志记录表

act_procdef_info流程定义的动态变更信息

7、流程开发在最新版的IDEA中去除了流程页⾯的编辑窗⼝,所以只能先创建流程图,然后⽤编辑软件打开该⽂件,即可编辑xml内容

将bpmn⽂件拷贝⼀份,后缀改为xml,然后右击选择编辑器打开,即可看见流程图

注:bpmn⽂件保存到本地其实是看不到流程图的,只能看见xml内容;但是如上操作后的流程图是可以导出为图⽚的

8、解决BPMN中⽂乱码1)设置⽂件编码

2)修改IDEA配置⽂件

在idea.exe.vmoptions和idea64.exe.vmoptions后⾯加上-Dfile.encoding=UTF-8

3)在如下位置添加-Dfile.encoding=UTF-8,设置完重启即可

因篇幅问题不能全部显示,请点此查看更多更全内容