Activiti7工作流引擎

第4章 Activiti 服务架构图

在这里插入图片描述
在新版本中,我们通过实验可以发现 IdentityService,FormService 两个 Serivce 都已经删除了。所以后面我们对于这两个 Service 也不讲解了,但老版本中还是有这两个 Service,同学们需要了解一下。

4.1 activiti.cfg.xml

activiti 的引擎配置文件,包括:ProcessEngineConfiguration 的定义、数据源定义、事务管理器等,此文件其实就是一个 spring 配置文件,下面是一个基本的配置只配置了 ProcessEngineConfiguration和数据源:

1<beans xmlns="http://www.springframework.org/schema/beans" 2 xmlns:context="http://www.springframework.org/schema/context" 3 xmlns:tx="http://www.springframework.org/schema/tx" 4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5 xsi:schemaLocation="http://www.springframework.org/schema/beans 6http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 7http://www.springframework.org/schema/context 8http://www.springframework.org/schema/context/spring-context-3.1.xsd 9 http://www.springframework.org/schema/tx 10 http://www.springframework.org/schema/tx/spring-tx-3.1.xsd"> 11 12 <!--数据库连接池 --> 13 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> 14 15 <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 16 <property name="url" value="jdbc:mysql://localhost:3306/activiti" /> 17 <property name="username" value="root" /> 18 <property name="password" value="mysql" /> 19 20 </bean> <bean id="processEngineConfiguration"class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> 21 <!-- 数据源 --> <property name="dataSource" ref="dataSource" /> 22 <!-- 数据库策略 --> <property name="databaseSchemaUpdate" value="true"/> 23 </bean> 24</beans>

4.2 ProcessEngineConfiguration:

流程引擎的配置类,通过 ProcessEngineConfiguration 可以创建工作流引擎 ProceccEngine,常用的两种方法如下:

4.2.1 StandaloneProcessEngineConfiguration

通过 org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration

Activiti 可以单独运行,使用它创建的 ProcessEngine,Activiti 会自己处理事务。

配置文件方式:
通常在 activiti.cfg.xml 配置文件中定义一个 id 为 processEngineConfiguration 的 bean,这里会使用 spring 的依赖注入来构建引擎。
方法如下:

1<bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> 2 <!-- 数据源 --> 3 <property name="dataSource" ref="dataSource" /> 4 <!-- 数据库策略 --> 5 <property name="databaseSchemaUpdate" value="true"/> 6</bean>

4.2.2 SpringProcessEngineConfiguration

通过 org.activiti.spring.SpringProcessEngineConfiguration 与 Spring 整合。

创建 spring 与 activiti 的整合配置文件:
activity-spring.cfg.xml(名称不固定)

1<beans xmlns="http://www.springframework.org/schema/beans" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xmlns:mvc="http://www.springframework.org/schema/mvc" 4 xmlns:context="http://www.springframework.org/schema/context" 5 xmlns:aop="http://www.springframework.org/schema/aop" 6 xmlns:tx="http://www.springframework.org/schema/tx" 7 xsi:schemaLocation="http://www.springframework.org/schema/beans 8http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 9http://www.springframework.org/schema/mvc 10http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd 11http://www.springframework.org/schema/context 12http://www.springframework.org/schema/context/spring-context-3.1.xsd 13http://www.springframework.org/schema/aop 14http://www.springframework.org/schema/aop/spring-aop-3.1.xsd 15http://www.springframework.org/schema/tx 16http://www.springframework.org/schema/tx/spring-tx-3.1.xsd "> 17 18 <!-- 工作流引擎配置bean --> 19 <bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration"> 20 <!-- 数据源 --> 21 <property name="dataSource" ref="dataSource" /> 22 <!-- 使用spring事务管理器 --> 23 <property name="transactionManager" ref="transactionManager" /> 24 <!-- 数据库策略 --> 25 <property name="databaseSchemaUpdate" value="drop-create" /> 26 <!-- activiti的定时任务关闭 --> 27 <property name="jobExecutorActivate" value="false" /> 28 </bean> 29 30 <!-- 流程引擎 --> 31 <bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean"> 32 <property name="processEngineConfiguration" ref="processEngineConfiguration" /> 33 </bean> 34 35 <!-- 资源服务service --> 36 <bean id="repositoryService" factory-bean="processEngine" factory-method="getRepositoryService" /> 37 38 <!-- 流程运行service --> 39 <bean id="runtimeService" factory-bean="processEngine" factory-method="getRuntimeService" /> 40 41 <!-- 任务管理service --> 42 <bean id="taskService" factory-bean="processEngine" factory-method="getTaskService" /> 43 44 <!-- 历史管理service --> 45 <bean id="historyService" factory-bean="processEngine" factory-method="getHistoryService" /> 46 47 <!-- 用户管理service --> 48 <bean id="identityService" factory-bean="processEngine" factory-method="getIdentityService" /> 49 50 <!-- 引擎管理service --> 51 <bean id="managementService" factory-bean="processEngine" factory-method="getManagementService" /> 52 53 <!-- 数据源 --> 54 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> 55 <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 56 <property name="url" value="jdbc:mysql://localhost:3306/activiti" /> 57 <property name="username" value="root" /> 58 <property name="password" value="mysql" /> 59 <property name="maxActive" value="3" /> 60 <property name="maxIdle" value="1" /> 61 </bean> 62 63 <!-- 事务管理器 --> 64 <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 65 <property name="dataSource" ref="dataSource" /> 66 </bean> 67 68 <!-- 通知 --> 69 <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> 70 71 <!-- 传播行为 --> 72 <tx:method name="save*" propagation="REQUIRED" /> 73 <tx:method name="insert*" propagation="REQUIRED" /> 74 <tx:method name="delete*" propagation="REQUIRED" /> 75 <tx:method name="update*" propagation="REQUIRED" /> 76 <tx:method name="find*" propagation="SUPPORTS" read-only="true" /> 77 <tx:method name="get*" propagation="SUPPORTS" read-only="true" /> 78 </tx:attributes> 79 </tx:advice> 80 81 <!-- 切面,根据具体项目修改切点配置 --> 82 <aop:config proxy-target-class="true"> 83 <aop:advisor advice-ref="txAdvice" pointcut="execution(* com.itheima.ihrm.service.impl.*.*(..))" /> 84 </aop:config> 85</beans>

4.2.3 创建 processEngineConfiguration

1 ProcessEngineConfiguration configuration = ProcessEngineConfiguration 2 .createProcessEngineConfigurationFromResource("activiti.cfg.xml");

上边的代码要求 activiti.cfg.xml 中必须有一个 processEngineConfiguration 的 bean也可以使用下边的方法,更改 bean 的名字:

ProcessEngineConfiguration.createProcessEngineConfigurationFromResource(String resource, String beanName);

4.3 ProcessEngine

工作流引擎,相当于一个门面接口,通过 ProcessEngineConfiguration 创建 processEngine,通过ProcessEngine 创建各个 service 接口。

4.3.1 一般创建方式

1 //通过ProcessEngineConfiguration创建ProcessEngine 2 ProcessEngine processEngine = processEngineConfiguration.buildProcessEngine(); 3

4.3.2简单创建方式

activiti.cfg.xml 文件名及路径固定,且 activiti.cfg.xml 文件中有 processEngineConfiguration 的配置,可以使用如下代码创建 processEngine:

1 //使用classpath下的activiti.cfg.xml中的配置创建processEngine 2 ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine(); 3 System.out.println(processEngine);

4.4 Service

4.4.1 Service 创建方式

通过 ProcessEngine 创建 Service,Service 是工作流引擎提供用于进行工作流部署、执行、管理的服务接口。

方式如下:

1 RuntimeService runtimeService = processEngine.getRuntimeService(); 2 RepositoryService repositoryService = processEngine.getRepositoryService(); 3 TaskService taskService = processEngine.getTaskService();

4.4.2 Service 总览

Service

类别

RepositoryService

activiti 的资源管理类

RuntimeService

activiti 的流程运行管理类

TaskService

activiti 的任务管理类

HistoryService

activiti 的历史管理类

ManagerService

activiti 的引擎管理类

4.4.3 RepositoryService

是 activiti 的资源管理类,提供了管理和控制流程发布包和流程定义的操作。使用工作流建模工具设计的业务流程图需要使用此 service 将流程定义文件的内容部署到计算机。

除了部署流程定义以外还可以:

查询引擎中的发布包和流程定义。

暂停或激活发布包,对应全部和特定流程定义。 暂停意味着它们不能再执行任何操作了,激活是对应的反向操作。

获得多种资源,像是包含在发布包里的文件, 或引擎自动生成的流程图。

获得流程定义的 pojo 版本, 可以用来通过 java 解析流程,而不必通过 xml。

4.4.4 RuntimeService

它是 activiti 的流程运行管理类。可以从这个服务类中获取很多关于流程执行相关的信息

4.4.5 TaskService

是 activiti 的任务管理类。可以从这个类中获取任务的信息。

4.4.6 HistoryService

是 activiti 的历史管理类,可以查询历史信息,执行流程时,引擎会保存很多数据(根据配置),比如流程实例启动时间,任务的参与者, 完成任务的时间,每个流程实例的执行路径,等等。 这个服务主要通过查询功能来获得这些数据。

4.4.7 ManagementService

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

本文同步分享在 博客“cwl_java”(CSDN)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

mysql设置时区

mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0

Activiti7工作流引擎 - HelloWorld