Activiti目录(二)SpringBoot或Spring整合Activiti

一、Spring Boot整合Activiti7

搭建Spring Boot项目上车?…

  1. Spring Boot整合Activiti7和依赖
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.1.2</version>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
        <version>1.1.10</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.activiti</groupId>
        <artifactId>activiti-spring-boot-starter</artifactId>
        <version>7.1.0.M2</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>
  1. 创建Activiti25张表以及意思
    application.propertities配置:
#server
server.port=8088
server.compression.enabled=true
#datasource
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.url=jdbc:mysql://localhost:3306/cmms?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true
#activiti7默认是不自动生成8张历史记录表的,这里设置开启 创建成功后注释掉下面
spring.activiti.db-history-used=true
spring.activiti.history-level=audit

activiti7默认整合了spring security,所以如果直接在浏览器中访问,是需要先登录的;
@SpringBootApplication(exclude = {//activiti7集成了springSecurity,此处暂时屏蔽掉
org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class,
org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration.class
})
在这里插入图片描述这时候启动,不报错,查看数据库,可以看见已经生成了25张表,说明启动成功。

二、Spring整合Activiti7

 <!-- Activiti7依赖包  -->
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-engine</artifactId>
            <version>${activiti7-version}</version>
            <exclusions>
                <exclusion>
                    <groupId>de.odysseus.juel</groupId>
                    <artifactId>juel-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-spring</artifactId>
            <version>${activiti7-version}</version>
            <exclusions>
                <exclusion>
                    <groupId>javax.el</groupId>
                    <artifactId>el-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-bpmn-model</artifactId>
            <version>${activiti7-version}</version>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-bpmn-converter</artifactId>
            <version>${activiti7-version}</version>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-json-converter</artifactId>
            <version>${activiti7-version}</version>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-bpmn-layout</artifactId>
            <version>${activiti7-version}</version>
        </dependency>
        <dependency>
            <groupId>org.activiti.cloud</groupId>
            <artifactId>activiti-cloud-services-api</artifactId>
            <version>${activiti7-version}</version>
        </dependency>
        <!-- Activit7引擎End -->

resources/spring/activiti-config.xml:

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd">
    <!-- 数据源 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/activiti"/>
        <property name="username" value="root"/>
        <property name="password" value="123"/>
        <property name="maxActive" value="3"/>
        <property name="maxIdle" value="1"/>
    </bean>
    <!-- 工作流引擎配置bean -->
    <bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
        <!-- 数据源 -->
        <property name="dataSource" ref="dataSource"/>
        <!-- 使用spring事务管理器 -->
        <property name="transactionManager" ref="transactionManager"/>
        <!-- 数据库策略 -->
        <property name="databaseSchemaUpdate" value="flase"/>
    </bean>
<!--
databaseSchemaUpdate的取值内容:
    flase: 默认值。activiti在启动时,会对比数据库表中保存的版本,如果没有表或者版本不匹配,将抛出异常。(生产环境常用)
    true: activiti会对数据库中所有表进行更新操作。如果表不存在,则自动创建。(开发时常用)
    create_drop: 在activiti启动时创建表,在关闭时删除表(必须手动关闭引擎,才能删除表)。(单元测试常用)
    drop-create: 在activiti启动时删除原来的旧表,然后在创建新表(不需要手动关闭引擎)。
  -->
    <!-- 流程引擎 -->
    <bean id="processEngine" class="org.activiti.spring.ProcessEngineFactoryBean">
        <property name="processEngineConfiguration" ref="processEngineConfiguration"/>
    </bean>
    <!-- 资源服务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"/>
    <!-- 事务管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>
    <!-- 通知 -->
<!--    <tx:advice id="txAdvice" transaction-manager="transactionManager">-->
<!--        <tx:attributes>-->
<!--            &lt;!&ndash; 传播行为 &ndash;&gt;-->
<!--            <tx:method name="save*" propagation="REQUIRED"/>-->
<!--            <tx:method name="insert*" propagation="REQUIRED"/>-->
<!--            <tx:method name="delete*" propagation="REQUIRED"/>-->
<!--            <tx:method name="update*" propagation="REQUIRED"/>-->
<!--            <tx:method name="find*" propagation="SUPPORTS" read-only="true"/>-->
<!--            <tx:method name="get*" propagation="SUPPORTS" read-only="true"/>-->
<!--        </tx:attributes>-->
<!--    </tx:advice>-->
    <!-- 切面,根据具体项目修改切点配置
    <aop:config proxy-target-class="true">
        <aop:advisor advice-ref="txAdvice"
                     pointcut="execution(*com.itheima.service.impl..(..))"/>
    </aop:config>-->
</beans>

通过Web.xml扫描到activiti-config.xml配置文件
在这里插入图片描述
然后就调用Activiti类看是否成功

三、Servcie服务接口

1.Service是工作流引擎提供用于进行工作流部署、执行、管理的服务接口,我们使用这些接口可以就是操作服务对应的数据表

2.Service创建方式
通过ProcessEngine创建Service

方式如下:

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

3.Service总览

service名称service作用
RepositoryServiceactiviti的资源管理类
RuntimeServiceactiviti的流程运行管理类
TaskServiceactiviti的任务管理类
HistoryServiceactiviti的历史管理类
ManagerServiceactiviti的引擎管理类

四、actiBPM工具

1.下载插件
插件官网:https://plugins.jetbrains.com/plugin/7429-actibpm/versions

在这里插入图片描述

下载完成之后,不用解压,建议放到idea安装目录的plugins下:

在这里插入图片描述
2.然后从本地安装插件,选择刚才那个插件包,安装完毕之后要重启idea才生效:

在这里插入图片描述

安装完成重启之后,选择新建,则可以看见bpmnfile,则说明成功了:

在这里插入图片描述

五、画流程图动态绑定表数据

1.然后使用actiBPMN插件在resource目录下新建bpmn文件:
在这里插入图片描述

用拖拽方式创建一个流程图:
在这里插入图片描述

在这里插入图片描述

2.编辑流程图节点信息,assignee随意指定一个即可,流程启动后,可以按照这个assignee来查询该user的代办任务;

在这里插入图片描述

加入判断条件及判断变量:
在这里插入图片描述

注意:如果BPMN editor无法打开
步骤:File–>Settings–>editor–>Color Scheme–>却换一下主题
在这里插入图片描述
头大的工作流hhhhh,下一章实例吧冲!!!!

彩蛋

25张表介绍(重点)

-- 全局通用数据 
	-- 二进制数据表
	select * from act_ge_bytearray;
	-- 系统相关属性数据表
	select * from act_ge_property;
	
-- 历史数据表
	-- 历史节点表
	select * from act_hi_actinst;
	-- 历史附件表
	select * from act_hi_attachment;
	-- 历史意见表
	select * from act_hi_comment;
	-- 历史详情表
	select * from act_hi_detail;
	-- 历史流程人员表
	select * from act_ru_identitylink;
	-- 历史流程实例表
	select * from act_hi_procinst;
	-- 历史任务实例表
	select * from ACT_HI_TASKINST;
	-- 历史变量表
	select * from act_hi_varinst;

-- 静态信息表 
	-- 部署信息表
	select * from act_re_deployment;
	-- 流程定义数据表
	select * from act_re_procdef;
	-- 流程设计模型部署表
	select * from ACT_RE_MODEL;
	
-- 运行数据
	-- 无法执行工作表
	select * from ACT_RU_DEADLETTER_JOB;
	-- 运行时事件 throwEvent、catchEvent 时间监听信息表
	select * from ACT_RU_EVENT_SUBSCR;
	-- 运行时流程执行实例表
	select * from act_ru_execution;
	-- 运行时流程人员表
	select * from act_ru_identitylink;
	-- 运行时积分表
	select * from ACT_RU_INTEGRATION;
	-- 运行时定时任务数据表
	select * from act_ru_job;
	-- 运行时暂停的工作表
	select * from ACT_RU_SUSPENDED_JOB;
	-- 运行时任务节点表
	select * from act_ru_task;
	-- 运行时定时器作业表
	select * from ACT_RU_TIMER_JOB;
	-- 运行时流程变量数据表
	select * from act_ru_variable;

-- 其他表
	-- 事件日志
	select * from ACT_EVT_LOG;
	-- 流程定义的动态变更信息
	select * from ACT_PROCDEF_INFO;

部分表字段介绍:
上车?…


版权声明:本文为weixin_45067120原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。