Activiti学习一:Activiti基本介绍

这段时间在学习Activiti,网上找了一些资料,感觉挺不错的,给汇总一下,一方面怕关掉后就找不到了,另一方面也方便后面的人能更快上手,于是就写了这么一篇文章。

工作流介绍:工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递信息的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”。 通俗的说,流程就是多个人在一起合作完成某件事情的步骤,把步骤变成计算机能理解的形式就是工作流。

WfMC
提到工作流就不能不提到工作流管理联盟(WfMC,WorkflowManagementCoalition),它是一个由涉及工作流和业务流程管理的推广学者(adopters)、开发工程师、顾问、分析师、大学和研究团体的全球性组织,它的成立,标志着工作流技术开始进入相对成熟的阶段。该组织创建并完善了工作流管理系统的相关术语、体系结构及应用编程接口等方面制定了一系列标准,是唯一的致力于工作流标准的专业组织。

WfMS
接下来要说的是工作流管理系统(WorkflowManagement System,WfMS),它完成了工作量的定义和管理,并按照在系统中预先定义好的工作流规则进行工作流实例的执行的软件系统,这里要说明一下的是,并不是我们企业自己的系统应用了工作流就是工作流管理系统了,工作流管理系统不是企业的业务系统,而是为企业的业务系统的运行提供了一个软件的支撑环境。WfMS被用来定义、管理和执行工作流程,它的目标是管理工作的流程以确保工作在正确的时间被期望的人员所执行。同时也可以在自动化进行的业务过程中插入人工的执行和干预。常见的wfms有Activiti、JBPM、OSWorkflow、ActiveBPEL、YAWL等。本文主要讲的是Activiti。

工作流生命周期:

一个完整的工作流生命周期会经过五个步骤,并且迭代循环:

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

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

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

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

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

Activiti基本信息

Activiti简介:Activiti是一个开源的工作流引擎,它实现了BPMN 2.0规范,可以发布设计好的流程定义,并通过api进行流程调度。通常activiti引擎需要嵌入到业务系统中去运行。

Activiti5是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。Activiti基于Apache许可的开源BPM平台,创始人Tom Baeyens是JBoss jBPM的项目架构师,它特色是提供了eclipse插件,开发人员可以通过插件直接绘画出业务
流程图。.

Activiti的特点

1)数据持久化

Activiti的设计思想是简洁、快速。有过应用开发经验的开发人员都知道应用的瓶颈体现在和数据库交换数据的过程中,针对这一点Activiti选择了使MyBatis,从而可以通过最优的SQL语句执行Command,仅凭如此就能让引擎在速度上保持最高的性能。

2)引擎service接口 

Activiti 流程引擎重点关注在系统开发的易用性和轻量性上。每一项 BPM 业务功能 Activiti 流程引擎都以服务的形式提供给开发人员。通过使用这些服务,开发人员能够构建出功能丰富、轻便且高效的 BPM 应用程序。

ctiviti.cfg.xml文件为核心配置文件,该配置文件集成在Spring的IOC容器当中,可以产生ProcessEngineConfiguration对象,这个对象就是流程引擎的配置对象,ProcessEngine对象则为流程引擎对象,该对象是工作流业务系统的核心,所有的业务操作都是由这个对象所派生出来的对象实现。

Activiti引擎提供了七大Service接口,均通过ProcessEngine获取,并且支持链式API编程风格。

3)流程设计器

在jBPM4时代有专门的Eclipse插件可以用来设计jPDL,同样Activiti团队也专门设计了用来设计BPMN 2.0规范的流程谩计器-Eclipse Designer。此外还有Signavio公司为Activiti定制的基于Web的Activiti Modeler流程设计器。喜欢用IDEA的,IDEA也有actiBPM插件支持。

4)原生支持Spring

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

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

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

Activiti架构与组件

Activiti Engine

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

Activiti Modeler

是模型设计器,其并非由Activiti公司所开发,而是由业界认可的Signavio公司赠送的(Signavio e原本是收费的产品,现在被免费授权给Activiti用户使用)。适用于业务人员把需求转换为规范流程定义。

Activiti Designer

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

Activiti Explorer

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

Activiti REST

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

Activiti数据库表

activiti自带24张表

ACT_RE_*: 'RE'表示repository。 这个前缀的表包含了流程定义和流程静态资源 (图片,规则,等等)。

ACT_RU_*: 'RU'表示runtime。 这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。 Activiti只在流程实例执行过程中保存这些数据, 在流程结束时就会删除这些记录。 这样运行时表可以一直很小速度很快。

ACT_ID_*: 'ID'表示identity。 这些表包含身份信息,比如用户,组等等。

ACT_HI_*: 'HI'表示history。 这些表包含历史数据,比如历史流程实例, 变量,任务等等。

ACT_GE_*: 通用数据, 用于不同场景下,如存放资源文件。

表类型表名描述
ACT_EVTACT_EVT_LOG事件日志表
ACT_GE_*ACT_GE_BYTEARRAY二进制数据表,存储流程定义相关的部署信息。即流程定义文档的存放地。每部署一次就会增加两条记录,一条是关于bpmn规则文件的,一条是图片的(如果部署时只指定了bpmn一个文件,activiti会在部署时解析bpmn文件内容自动生成流程图)。两个文件都是以二进制形式存储在数据库中
ACT_GE_PROPERTY属性数据表,存储整个流程引擎级别的数据,初始化表结构时,会默认插入三条记录。
ACT_HI_*ACT_HI_ACTINST历史节点表,存放历史所有完成的活动。
ACT_HI_ATTACHMENT历史附件表
ACT_HI_COMMENT历史意见表
ACT_HI_DETAIL历史详情表,提供历史变量的查询
ACT_HI_IDENTITYLINK历史流程人员表,存储任务的办理人,包括个人任务和组任务,表示历史任务
ACT_HI_PROCINST历史流程实例表,存储已经执行完的历史流程实例信息
ACT_HI_TASKINST历史流程任务表,存储已经执行完的历史任务信息
ACT_HI_VARINST历史变量表,存储已经执行完的历史流程变量信息
ACT_ID_*ACT_ID_GROUP用户组信息表
ACT_ID_INFO用户扩展信息表
ACT_ID_MEMBERSHIP用户与用户组关系信息表
ACT_ID_USER用户信息表
ACT_RE_*ACT_RE_DEPLOYMENT部署信息表,存放流程定义的显示名和部署时间
ACT_RE_MODEL流程设计模型部署表,存储流程定义的数据信息。
ACT_RE_PROCDEF流程定义数据表,存放流程定义的属性信息,部署每个新的流程定义都会在这张表中增加一条记录。注意:当流程定义的key相同的情况下,使用的是版本升级
ACT_RU_*ACT_RU_EVENT_SUBSCRthrowEvent、catchEvent时间监听信息表
ACT_RU_EXECUTION运行时流程执行对象表,当流程达到一个节点中时,会在执行对象表中产生一条数据,当流程结束后,流程实例将会在正在执行的执行对象表中被删除
ACT_RU_IDENTITYLINK运行时流程人员表,主要存储任务的办理人,包括个人任务和组任务,表示正在执行的任务
ACT_RU_JOB运行时定时任务数据表
ACT_RU_TASK运行时任务节点表,当流程达到一个节点中时,会在执行对象表中产生一条数据,如果当前节点是用户任务节点,这时也会在用户任务节点表中增加一条记录,当流程结束后,流程实例将会在正在执行的任务节点表中被删除
ACT_RU_VARIABLE

运行时流程变量数据表,设置流程变量的时候,向act_ru_variable这个表添加数据

 

Activiti七大service接口

RepositoryService:  流程仓库Service,用于管理流程仓库,例如:部署,删除,读取流程资源

IdentityService:身份Service,可以管理,查询用户,组之间的关系

RuntimeService:运行时Service,可以处理所有正在运行状态的流程实例,任务等

TaskService:任务Service,用于管理,查询任务,例如:签收,办理,指派等

HistoryService:历史Service,可以查询所有历史数据,例如:流程实例,任务,活动,变量,附件等

FormService:表单Service,用于读取和流程,任务相关的表单数据

ManagementService:引擎管理Service,和具体业务无关,主要是可以查询引擎配置,数据库,作业等

Activiti 与jBPM 5的比较

序号技术组成ActivitijBPM 5
1数据库持久层ORMMyBatis3Hibernate3
2持久化标准EJB JPA规范
3事务管理MyBatis机制/Spring事务控制Bitronix,基于JTA事务管理
4数据库连接方式Jdbc/DataSourceJdbc/DataSource
5支持数据库Oracle、SQL Server、MySQL、H2、内存数据库等Oracle、SQL Server、MySQL、内存数据库等
6设计模式命令(Command)模式、观察者模式等 
7内部服务通讯Service间通过API调用基于Apache Mina异步通讯
8集成接口SOAP、Mule、RESTful消息通讯
9支持的流程格式BPMN2、xPDL、jPDL等(由PVM实现)目前仅只支持BPMN2 xml
10引擎核心PVM(流程虚拟机)Drools
11技术前身jBPM3、jBPM4Drools Flow
12所属公司AlfrescojBoss.org

 

总结

本文先介绍了工作流的基本信息引出Activiti,再介绍Activiti的一些基本资料,特点,组件,最后对比了JBPM5进行了对比。

本文参考以下多篇文章
https://blog.csdn.net/lxxiang1/article/details/82229772
https://blog.csdn.net/lxxiang1/article/details/82262109
https://blog.csdn.net/zwk626542417/article/details/46592471

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值