( 一 )、 Activiti 工作流简介

( 一 )、 Activiti 工作流简介

 

 

1、简介

     工作流(Workflow),就是通过计算机对业务流程自动化执行管理。它主要解决的是“使在多个参与者  之间按照某种预定义的规则自动进行传递文档、信息或任务的过程,从而实现某个预期的业务目标, 或者促使此目标的实现”。

使用工作流的优点:

       在没有专门的工作流引擎之前,我们之前为了实现流程控制,通常的做法就是采用状态字段的值来 跟踪流程的变化情况。这样不用角色的用户,通过状态字段的取值来决定记录是否显示。针对有权限可以查看的记录,当前用户根据自己的角色来决定审批是否合格的操作。如果合格将状 态字段设置一个值,来代表合格;当然如果不合格也需要设置一个值来代表不合格的情况。这是一种最为原始的方式。通过状态字段虽然做到了流程控制,但是当我们的流程发生变更的时候, 这种方式所编写的代码也要进行调整。使用工作流与状态字段无关,当业务更新时,只需要更新业务流程图,不需要更新代码。

        Activiti 是一个工作流引擎, activiti 可以将业务系统中复杂的业务流程抽取出来,使用专门的建模语言(BPMN2.0)进行定义,业务系统按照预先定义的流程进行执行,实现了业务系统的业务 流程由activiti  进行管理,减少业务系统由于流程变更进行系统升级改造的工作量,从而提高系统的健壮性,同时也减少了系统开发维护成本。

BPM

      BPM(Business Process Management),即业务流程管理,是一种以规范化的构造端到端的卓越业务流程为中心,以持续的提高组织业务绩效为目的系统化方法,常见商业管理教育如 EMBA、MBA 等均将BPM 包含在内。企业流程管理主要是对企业内部改革,改变企业职能管理机构重叠、中间层次多、流程不闭环 等,做到机构不重叠、业务不重复,达到缩短流程周期、节约运作资本、提高企业效益的作用。

BPMN

        BPMN(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 用一个圆圈表示,它是流程中运行过程中发生的事情,Bpmn 图形其实是通过xml 表示业务流程。

 

2、多款工作流引擎的比较

2.1、Activiti

       Alfresco软件开发,基于JBPM4,后并入OMG,目前最高版本activiti 7。Activiti5版本的时候,核心团队发生了比较大的变动(离职),activiti6的开发团队在新版本中去除了PVM,纳入了DMN,重构XML解析,BUG较多,目前主要团队致力于activiti7。 5&6已经官宣不维护。

2.2、Flowable

   基于activiti6,最新的开源版本是flowable6,开发团队是从activiti中分裂出来的,修复了一众activiti6的bug,并在其基础上研发了DMN支持,BPEL支持等等。相对开源版,其商业版的功能会更强大。

2.3、Camunda

   基于activiti5,所以其保留了PVM,最新版本Camunda7,开发团队也是从activiti中分裂出来的,发展轨迹与flowable相似,同时也提供了商业版。

2.4、JFlow

      前身ccFlow,国产的工作流引擎,由济南驰骋公司开发维护,主打中国式的业务流程,由于是国产的软件,中文化程度比较深,业务开发也对用户比较友好。国产的开源工作流引擎还是挺多的,JFlow是其中功能比较完善的一个,同时对比activiti,流程上更加中国化,支持自定义流程跳转,加签等。其他国产工作流就不列举了。

 

3、使用流程

1、部署activiti

      Activiti 是一个工作流引擎(其实就是一堆 jar 包 API),业务系统使用activiti 来对系统的业务流程进行自动化管理,为了方便业务系统访问(操作)activiti 的接口或功能,通常将 activiti 环境与业务系统的环境集成在一起。 

2、流程定义

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

如果使用其它公司开发的工作流引擎一般都提供了可视化的建模工具(Process   Designer)用于生成流程定义文件,建模工具操作直观,一般都支持图形化拖拽方式、多窗口的用户界面、丰富的过 程图形元素、过程元素拷贝、粘贴、删除等功能。

安装流程定义插件:

1、idea插件官网: https://plugins.jetbrains.com/

2、打开idea工具,选择 file--->settings--->plugins

  2.1 搜索actiBPM插件,如果能搜索到的情况下点击右侧下载链接

  2.2 如果搜索不到,进入idea官网下载actiBPM的jar包;然后点击file--->settings--->plugins,点击小齿轮,选择Install Plugin from disk;

3、流程定义部署

向activiti 部署业务流程定义(.bpmn 文件)。使用activiti 提供的 api 向 activiti 中部署.bpmn 文件(一般情况还需要一块儿部署业务流程的图片.png)

4、启动一个流程实例ProcessInstance

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

5、用户查询待办任务(Task)

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

6、用户办理任务

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

7、流程结束  

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

 

posted @ 2022-03-27 11:01  邓维-java  阅读(651)  评论(0编辑  收藏  举报