activiti工作流

一、activiti简介

          activiti是一个业务流程的管理框架,它主要解决是多个用户之间按照某种特定的规则流程去使任务自动进行完成。使用工作流的软件系统有如下有点1、提高系统的柔性,适应业务流程的变化 2、实现更好的业务过程控制,提高顾客服务质量 3、降低系统开发和维护成本。

二、activiti应用场景

       oa系统的请假流程,审批流程,报销流程等。

三、activiti与spring整合配置文件

<context:property-placeholder location="classpath:db.properties" />

<!-- 数据源 -->

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"

destroy-method="close">

<property name="driverClassName" value="${jdbc.driver}" />

<property name="url" value="${jdbc.url}" />

<property name="username" value="${jdbc.username}" />

<property name="password" value="${jdbc.password}" />

<property name="maxActive" value="30" />

<property name="maxIdle" value="5" />

</bean>



<!-- 由spring来管理activiti的工作流 -->

<!-- 创建工作流引擎的配置对象 -->

<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">

<!-- 数据源 -->

<property name="dataSource" ref="dataSource" />

<!-- 使用spring事务管理器 -->

<property name="transactionManager" ref="transactionManager" />

<!-- 数据库策略 -->

<property name="databaseSchemaUpdate" value="true" />

<!-- activiti的定时任务关闭 -->

<property name="jobExecutorActivate" value="false" />

</bean>


<!-- activiti的工作流引擎 -->

<bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">

<property name="processEngineConfiguration" ref="processEngineConfiguration" />

</bean>



<!-- activiti的各种service服务 -->

<!-- 仓储服务service -->

<bean id="repositoryService" factory-bean="processEngine"

factory-method="getRepositoryService" />

<!-- 流程运行service -->

<bean id="runtimeService" factory-bean="processEngine"

factory-method="getRuntimeService" />

<!-- 任务管理service -->

<bean id="taskService" factory-bean="processEngine"

factory-method="getTaskService" />

<!-- 历史管理service -->

<bean id="historyService" factory-bean="processEngine"

factory-method="getHistoryService" />

<!-- 用户管理service -->

<bean id="identityService" factory-bean="processEngine"

factory-method="getIdentityService" />

<!-- 引擎管理service -->

<bean id="managementService" factory-bean="processEngine"

factory-method="getManagementService" />

四、activiti的七大服务介绍

activiti工作流

 

 

RepositoryService

Activiti 中每一个不同版本的业务流程的定义都需要使用一些定义文件,部署文件和支持数据 ( 例如 BPMN2.0 XML 文件,表单定义文件,流程定义图像文件等 ),这些文件都存储在 Activiti 内建的 Repository 中。Repository Service 提供了对 repository 的存取服务。

RuntimeService

在 Activiti 中,每当一个流程定义被启动一次之后,都会生成一个相应的流程对象实例。Runtime Service 提供了启动流程、查询流程实例、设置获取流程实例变量等功能。此外它还提供了对流程部署,流程定义和流程实例的存取服务。

TaskService

在 Activiti 中业务流程定义中的每一个执行节点被称为一个 Task,对流程中的数据存取,状态变更等操作均需要在 Task 中完成。Task Service 提供了对用户 Task 和 Form 相关的操作。它提供了运行时任务查询、领取、完成、删除以及变量设置等功能。

IdentityService

Activiti 中内置了用户以及组管理的功能,必须使用这些用户和组的信息才能获取到相应的 Task。Identity Service 提供了对 Activiti 系统中的用户和组的管理功能。

ManagementService

Management Service 提供了对 Activiti 流程引擎的管理和维护功能,这些功能不在工作流驱动的应用程序中使用,主要用于 Activiti 系统的日常维护。

HistoryService

 History Service 用于获取正在运行或已经完成的流程实例的信息,与 Runtime Service 中获取的流程信息不同,历史信息包含已经持久化存储的永久信息,并已经被针对查询优化。

FormService

Activiti 中的流程和状态 Task 均可以关联业务相关的数据。通过使用 Form Service 可以存取启动和完成任务所需的表单数据并且根据需要来渲染表单。

五、activiti数据库的设计

3.1、第一部分 ACT_GE_*

流程相关资源(bpmn.xml 或者bpmn.png)资源信息的保存

activiti工作流

 

//重点内容

activiti工作流

 

activiti工作流

 

3.2、第二部分 ACT_RE_*

该部分的流程定义由RepositoryService服务提供操作涉及三张表 ACT_RE_DEPLOYMENT表、ACT_RE_PROCDEF表、

ACT_RE_MODEL表。

流程部署表(ACT_RE_DEPLOIYMENRT)

activiti工作流

 

流程定义表(ACT_RE_PROCDEF)

activiti工作流

 

ACT_RE_MODEL 流程定义模型表(暂时不清楚)

 

3.3、第三部分 ACT_ID_*

用户以及用户身份信息相关的表,该表中的数据来确定指定任务的具体执行人/组的信息

activiti工作流

 

activiti工作流

 

activiti工作流

 

activiti工作流

 

3.4、 ACT_RU_*

流程运行时相关的数据记录

activiti工作流

 

activiti工作流

 

activiti工作流

 

activiti工作流

 

activiti工作流

 

activiti工作流

 

activiti工作流

 

activiti工作流

 

activiti工作流

 

activiti工作流

 

activiti工作流

 

序号

表名

说明

act_ge_bytearray

二进制数据表

                    act_ge_property

属性数据表存储整个流程引擎级别的数据,初始化表结构时,会默认插入三条记录,

act_hi_actinst

历史节点表 存储整个流程的流程活动 例如开始活动,审批活动 结束活动等

act_hi_attachment

历史附件表

act_hi_comment

历史意见表

act_hi_identitylink

历史流程人员表

act_hi_detail

历史详情表,提供历史变量的查询

act_hi_procinst

历史流程实例表

act_hi_taskinst

历史任务实例表

10

act_hi_varinst

历史变量表

11

act_id_group

用户组信息表

12

act_id_info

用户扩展信息表

13

act_id_membership

用户与用户组对应信息表

14

act_id_user

用户信息表

15.  

act_re_deployment

部署信息表

16.  

act_re_model

流程设计模型部署表

17

act_re_procdef

流程定义数据表

18

act_ru_event_subscr

流程执行过程中的流程任务信息

19

act_ru_execution

运行时流程执行实例表

20

act_ru_identitylink

运行时流程人员表,主要存储任务节点与参与者的相关信息

21

act_ru_job

运行时定时任务数据表

22

act_ru_task

运行时任务节点表

23

act_ru_variable

运行时流程变量数据表

 六、activiti相关的核心类

4.1、ProcessEngineConfiguration相关接口

/**

* ProcessEngineConfiguration是activiti框架创建流程引擎的核心配置接口

* 其提供了如下的子类SpringProcessEngineConfiguration与spring框架进行整合的流程配置类

* StandaloneProcessEngineConfiguration类 单独的流程配置,用与测试使用

* StandaloneInMemProcessEngineConfiguration类

* 是StandaloneProcessEngineConfiguration的子类提供了默认的两个属性

* databaseSchemaUpdate(数据库的更新策略 create-drop 流程开启时候创建流程相关的表,流程结束的时候删除流程相关的表)

* jdbcUrl(默认的数据库的url jdbc:h2:mem:activiti使用内部的h2数据库)

* 但其中核心应该为ProcessEngineConfigurationImpl类(有空研究一些该类的源码)

*

*/

4.2、activiti的相关配置

1、databaseSchemaUpdate 流程启动或者关闭数据库的执行策略

false 流程启动时候,如果发现没有相对应的数据库或者版本不一致会抛出错误(默认)

true 流程启动时候,如果发现没有相对应的数据库/表 则进行创建

create-drop 在流程启动的时候进行创建数据库的操作,流程关闭后删除相应的数据库

drop-create 流程启动的时候先删除数据库再进行创建

2、dataType指定数据库的类型,例如MySQL,ORCALE,SQLserver等。