activiti工作流架构介绍及集成实现

目录

介绍

架构原理

整体结构

流程引擎

逻辑描述

架构组件说明

表结构说明

工作机制实现过程

设计器

集成实践


官网:https://www.activiti.org/documentation

git:https://github.com/Activiti/Activiti

介绍

Activiti项目是基于Apache许可的开源BPM平台,从基础开始构建,旨在提供支持新的BPMN 2.0标准,以JAVA编程实现的工作流引擎。

BPMN(Business Process Modeling Notation)叫业务流程建模符号,它定义了一个业务流程图(Business Process Diagram),该业务流程图基于一个流程图(flowcharting),该流程图被设计用于创建业务流程操作的图形化模型。其中一个业务流程模型(Business Process Model),指一个由的图形对象(graphical objects)组成的网状图,图形对象包括活动(acticities)和用于定义这些活动执行顺序的流程控制器(flow controls)。

架构原理

整体结构

image

流程引擎

 

image

逻辑描述

  1. 通过入口配置文件activiti.cfg.xml,得到ProcessEngineConfiguration实例。
  2. 由ProcessEngineConfiguration实例得到ProcessEngine实例。
  3. 通过ProcessEngine实例得到Activiti提供所有接口服务。

架构组件说明

  1. EngineServices:该接口中定义了获取各种服务类实例对象的方法。
  2. ProcessEngine:继承EngineServices接口,并增加了对流程引擎名称的获取以及关闭流程引擎的支持。
  3. ProcessEngineImpl: 是引擎默认的实现类,对ProcessEngine接口中定义的方法进行实现,对外提供服务。实际上,这些对外提供的服务是由 ProcessEngineConfigurationImpl 构造的,ProcessEngineImpl 调用 ProcessEngineConfigurationImpl 的方法获得服务。
  4. ProcessEngines:该类负责管理所有的流程引擎ProcessEngine集合,并负责流程引擎实例对象的注册、获取、注销等操作。
  5. ProcessEngineConfiguration:该抽象类实现EngineServices接口,提供了一系列创建流程引擎配置类ProcessEngineConfiguration实例对象的方法。
  6. ProcessEngineConfigurationImpl:该抽象类继承ProcessEngineConfiguration,负责创建一系列服务类实例对象、流程引擎实例对象以及ProcessEngineImpl类实例对象。该类可以通过流程配置文件交给Spring容器管理或者使用编程方式动态构建。
  7. SpringProcessEngineConfiguration:主要用于整合Spring框架时使用,提供了几个重要功能:创建流程引擎实例对象,流程引擎启动之后自动部署配置的流程文档(需要设置),设置流程引擎连接的数据源、事务管理器等。
  8. StandaloneProcessEngineConfiguration:标准的流程引擎配置类。
  9. MultiSchemaMultiTenantProcessEngineConfiguration:“多数据库多租户”流程引擎配置类,Activiti通过此类为开发人员提供了自动路由机制,这样当流程引擎需要连接多个数据库进行操作时,客户端无须关心引擎到底连接的是哪一个数据库,该类通过路由规则自动选择需要操作的数据库,数据库的操作对客户端来说是透明的,客户端无须关心其内部路由实现机制。
  10. JtaProcessEngineConfiguration:顾名思义,通过类名也知道该类支持JTA。
  11. StandaloneInMemProcessEngineConfiguration:该类通常可以在开发环境中自测使用,默认采用H2数据库存储数据。
  12. EngineServices提供的服务类如下:
servicedescription

作用

RepositoryServiceActiviti的资源管理类

流程定义和部署相关的存储服务

RuntimeServiceActiviti的流程运行管理类

流程运行时相关的服务,如根据流程好启动流程实例startProcessInstanceByKey

TaskServiceActiviti的任务管理类

流程运行过程中,每个任务节点的相关操作接口,如complete,delete,delegate等

HistoryServiceActiviti的历史管理类

历史记录相关服务接口

ManagerServiceActiviti的引擎管理类

引擎管理service,和具体业务无关,主要用于查询引擎配置、数据库、作业等

FormSerivice

Activiti的表单管理类

用于读取和流程、任务相关的表单数据

IdentityService

Activiti的认证管理类

管理和查询用户、组之间的关系

 

ps:其中Activiti在新版本(Activiti7.0)中,IdendityService和FormService都已经删除了

表结构说明

25张表(activiti7.0:28张)

  • ACT_RE_*: RE表示repository(3)。这个前缀的表包含了流程定义和流程 静态资源(图片、规则等等)
  • ACT_RU_*: RU表示runtime(6)。这些运行时的表,包含流程实例,认为,变量,异步任务等运行中的数据。Activiti只在流程实例执行过程中保持这些数据,在流程结束时就会删除这些记录。这样运行时表可以一直很小速度很快。
  • ACT_HI_*: HI表示history(8)。这些表包含历史数据,比如历史流程实例,遍历,任务等等。
  • ACT_GE_*: GE表示general(2)。通用数据,用于不同场景。
  • ACT_ID_*: ID表示id(4)。认证及用户相关数据。
  • ACT_EVT_LOG: 事件日志。
  • ACT_PROCDEF_INFO: 流程关联信息。

工作机制实现过程

  1. 业务流程图要规范化,要遵守一套标准。
  2. 业务流程图本质上是一个xml文件,这样就可以存入所有数据。
  3. 读取业务流程图的过程就是解析xml文件的过程。
  4. 读取一个业务流程图中的节点就相当于是解析一个xml结构,进一步将数据插入到MySQL的表中,形成一条记录。
  5. 将所有的节点都读取并存入MySQL表中。
  6. 后面只要读取MySQL表中的记录就可以了,读一条记录就相当于读一个节点。
  7. 业务流程的推进,后面就转化为读取标准数据,并且处理数据,结束时这一行数据进入历史库。

设计器

二种方式:

  • Idea通过actiBPM插件在线流程设计,保存xml文件。
  • 通过引入activiti-modeler在线流程设计器来实现。但目前activiti最高只支持5.23版本。

集成实践

实践源码:https://github.com/huhua1990/cp3-activiti-flowable.git(已实现基础流程架构)

activiti API参考:http://www.mossle.com/docs/activiti/index.html#N16608

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值