工作流-Activiti-基础认识

来源:互联网 发布:js onclick传两个参数 编辑:程序博客网 时间:2024/06/07 13:31

1.工作流

   很多人对工作流(Workflow)应该不陌生。生活中到处都是活生生的:在单位要请假,首先要找到领导审批,在领导审批通过之后才获准;从网上购物,下单的那一刻基于已经触发了一条工作流,此时可以跟踪购物流程吗,什么时间下单、什么时候付款、什么时候发货、什么时候收货,在快递单上签字的时候才等于一条工作流程结束了。

工作流应用广泛,在由任务的各个驱动中都能看到它的身影,例如:CRMERPECMBIOA等。在企业应用中还有很多产品或平台集成工作流引擎,用来处理系统运行过程中发起的业务流程。

   工作流总是以任务(Task)的形式驱动人处理业务或者驱动业务系统自动完成作业。有了工作流引擎之后,我们不必一直等待其他人的工作进度,直白地说,我们只需关心系统首页的待办任务数即可,由系统提醒当前有多少待办任务需要处理。

2.Activiti优秀的开源流程引擎(BPM平台)

     Activiti是一个针对企业用户、开发人员、系统管理员的轻量级工作流业务管理平台,其核心是使用Java开发的快速、稳定的BPMN2.0流程引擎。Activiti是在ApacheV2许可下发布的,可以运行在任何类型的Java程序中,例如服务器、集群、云服务等。Activiti可以完美的与Spring集成。同时,基于简约思想的设计使Activiti非常轻量级,可以轻松驱动你的业务流程、搭建统一的流程平台。

3.bpm

       BPMBussiness Process Management的缩写,中文含义是业务流程管理,是一套达成企业各种业务环节整合的全面管理模式。

        BPM是为了实现一定的经营目的而执行的一系列逻辑相关的活动的集合。业务流程的输出是满足市场需要的产品或服务。根据功能、管理范围等的不同,企业流程管理一般分为生产流程层、运行层、计划层和战略层四个层次。BPM是根据业务环境的变化,推进人与人之间、人与系统之间,以及系统与系统之间的整合及调整的经营方法与解决方案的IT工具。

4.bpmn

       Bussiness Process Modeling Notation,简称BPMN,中文译为业务流程建模标注,是有bpmn标准组织发布的,其第一版1.0规范与20045月发布。经过多年的改进新的规范BPMN2.02011年发布。之后各大厂商、开源社区均基于2.0规范设计自己的流程引擎,结束了各个厂商各自为政的局面,相应地统一了标准,从而利于以后的产品迁移。

      BPMN定义了业务流程图,其基于流程图技术,同时对创建业务流程操作的图形化模型进行了裁减。业务流程的模型就是图形化对象的网图,包括活动(也可以说工作)和定义操作顺序的流控制。

    在BPMN1.x版本中的一些概念,如人工任务、可执行脚本、自动决策等,都是独立于供应商的可视化标准化的方式。在BPMN2.0规范中重点聚焦在如何执行语义和一个被业界认可的通用交换格式。这意味着基于BPMN2.0的流程建模不仅在流程设计器上可以通用,还可以在任何符合BPMN2.0规范的流程引擎上执行。

5.工作流生命周期

一个完整的工作流生命周期会经过5步,并迭代循环。

1定义:工作流生命周期总是从流程定义开始。此阶段的任务重要是收集业务需求并转化为流程定义。一般由业务需求人员进行,然后交由开发人员加工转化为计算机可以识别的流程定义。

2发布:由开发人员打包各种资源,然后在系统管理平台中发布流程定义。在具体的流程引擎中包括流程定义文件(bpmn20.xml结尾)、自定义表单、任务监听类。

3执行:具体的流程引擎(例如,Activiti)按照实现定义的流程处理路线以任务驱动的方式执行业务流程。

4监控:此阶段是依赖执行阶段。业务人员在办理任务的同时收集每个任务(Task)的结果,然后根据结果做出相应处理,例如,在采购办公用品流程中,在通过领导审批之后,采购人员就要根据申请单外出采购。

5优化:在此阶段,一个完整的流程已经结束,或许能满足业务需求,或许需要优化,而糟糕的情况是需要重新设计(流程没结束就异常终止),优化与设计正是此阶段需要处理的。根据整个流程的运行过程结果分析问题的根源,然后在此基础上进一步改进,并再次开始一个新的周期。

6.Activiti的特点

1.数据持久化

Activiti选择了MyBatis,从而可以通过最优的SQL语句执行Command,仅凭如此就能让引擎在速度上保持最高的性能。

2.引擎Service接口

Activiti引擎提供了七大Service接口,均可通过ProcessEngine获取

3.流程设计器

      JBPM4时代有专门的Eclipse插件可以用来设计JPDL,同样Activiti团队也专门设计了用来设计BPMN2.0规范的流程设计器——EclipseDesigner。此外还有Signavio公司为Activiti定制的基于WebActivitiModeler流程设计器。

4.原生支持Spring

      Activiti原生支持Spring,这一点对企业应用来说有为重要:可以很轻松地进行Spring集成,非常方便管理事物和解析表达式。

5.分离运行时与历史数据

      Activiti集成自JBPM4,在表结构设计方面也遵循运行时与历史数据的分离,这样的设计可以快速读取运行时数据,进档需要查询历史数据时再从专门的历史数据表中读取。这种设计方式可以大幅度提高数据的存取效率,尤其是当数据日积月累时依然能够快速反应。

7.Activiti架构与组件

Activiti架构中最重要的肯定是引擎,当然还有其他的外部工具和组件,如图。

1)       Activiti Engine:作为最核心的模块,提供针对BPMN2.0规范的解析、执行、创建、管理(任务、流程实例)、查询历史记录并根据结果生成报表。

2)       Activiti Modeler:是模型设计器,其并非由Activiti公司所开发,而是由业界认可的Signavio公司赠送的。

3)       Activiti Designer:功能和ActivitiModeler类似,同样提供了基于BPMN2.0规范的可视化设计功能,但是目前还没有完全支持BPMN规范的定义。适用于开发人员,可以把业务需求人员用Signavio设计的流程定义(xml格式)导入到Designer中,从而让开发人员将其进一步加工成为可以运行的流程定义。

4)       Activiti Explorer:可以用来管理仓库、用户、组,启动流程、任务办理等。此组件使用REST风格API,提供一个基础的设计模型。如果业务简单,也可以直接使用无需开发。还可以作为后台管理员的流程、任务管理系统使用。

5)       Activiti REST:提供Restful风格的服务,允许客户端以JSON的方式与引擎的RESTAPI交互,通用的协议具有跨平台、跨语言的特性。

8.Activiti的应用

1.在系统集成方面应用

  1)与ESB整合,如Mule

  2)与规则引擎整合,如JBoss Drools

  3)嵌入已有系统平台,例如很多公司都开发了自己的系统平台,在其中嵌入Activiti作为平台的一部分。

2、在其他产品中应用

9.关于ActivitiJBPM5比较

  目前流程的工作流引擎有ActivitiJBPM5,下面是从技术和实际应用中对ActivitJBPM5进行比较。

   

Activiti是基于JBPM4设计的衍生版本,如果选择Activiti可以继续沿用jBPM的思想理念设计、整合Activiti到项目或平台中,这也是相当于jbpm5来说的一个优势;相反,对于jBPM5来说要花点时间重新接收开发者的设计思想。

1 0