Activiti使用笔记-环境搭建+基础使用

环境搭建

下载 actiBPM 插件

网址:https://plugins.jetbrains.com/plugin/7429-actibpm/versions

依赖

        <!--- Activiti依赖导入 -->
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-spring</artifactId>
            <version>7.1.0.M4</version>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-engine</artifactId>
            <version>7.1.0.M4</version>
        </dependency>

yml配置

  devtools:
    restart:
      enabled: true  #设置开启热部署
  activiti:
    database-schema-update: true
    history-level: full
    db-history-used: true
    check-process-definitions: true  # 是否开启自动部署,false表示不开起
    process-definition-location-prefix: classpath:/processes/   # 自动部署的时候打开这个
    async-executor-activate: false     # 启用异步执行器
    job-executor-activate: false      # 启用作业执行器

log4j 日志监控配置—log4j.properties

log4j.rootCategory=debug,CONSOLE,LOGFILE

log4j.logger.org.apache.axis.enterprise=FATAL,CONSOLE

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r[%15.15t] %-5p %30.30c %x - %m\n

log4j.appender.LOGFILE=org.apache.log4j.FileAppender
#日志的存放路径
log4j.appender.LOGFILE.File=d:\\SOFT\\activiti.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r[%15.15t] %-5p %30.30c %x - %m\n

创建数据库中需要的表(25张)

  1. test下建立工具类
    1. act_hi_*:'hi’表示 history,历史数据。_
    2. act_ge:'ge’表示 general,通用数据。
    3. act_evt_:'evt’表示 event,事件日志。
    4. act_procdef_*:'procdef’表示processdefine,流程定义信息。_
    5. act_re:'re’表示 repository,静态资源。
    6. act_ru_:'ru’表示 runtime,表示运行时数据。
    /**
     *使用activiti提供的默认方式来创建mysql的表
     */
    @Test
    public void createTable(){
        //执行该方法,会在数据库自动生成activiti所需的25张表
        ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
        System.out.println(engine);
    }

其他相关配置 ------- activiti.cfg.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="root" />
        <property name="maxActive" value="3" />
        <property name="maxIdle" value="1" />
    </bean>

    <!--工作流引擎配置-->
    <bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
        <!--数据源-->
        <property name="dataSource" ref="dataSource" />
        <!--使用spring事务管理器-->
        <property name="transactionManager" ref="transactionManager" />
        <!--数据源策略-->
        <!--
        databaseSchemaUpdate取值:
        false:默认值。在activiti启动时,会对比数据库表中保存的版本,如果没有表或版本不匹配,将抛出异常。(生产环境常用)
        true:activiti会对数据库中所有表进行更新操作。如果表不存在,将会创建。(开发环境常用)
        create-drop:在activiti启动时创建表,在关闭时删除表,必须手动关闭引擎才会删除表。(单元测试用)
        drop-create:在activiti启动时删除旧表,然后创建新表,不需要关闭引擎。
        -->
        <property name="databaseSchemaUpdate" value="true" />
    </bean>

    <!--流程引擎-->
    <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>
            <!-- 传播行为 -->
            <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.hll.service.impl..*.*(..))"/>
    </aop:config>
</beans>

流程文件存放位置

  1. png:自定义
  2. bpmn:processes下

使用笔记

部署方式

  1. 创建流程引擎

​ 开发时固定流程

  1. 打包zip
    1. png和bpmn
    2. 用户自定义流程
  2. 修改流程表
    1. 上线后流程部署
流程部署id:deployment.getId()
流程部署名称:deployment.getName() --------启动流程

Activiti操作

  1. 启动

    1. Runtime.startProcessInstanceByKey(“test”); //流程部署名称
    1. 查询条件
      1. 流程部署名称 —processDefinitionKey
      2. 实例id ----processInstanceId
      3. 要查询的负责人 ---- taskAssignee
    1. 完成任务
      1. taskService.complete(任务id)
    1. 实例未启动

       repositoryService.deleteDeployment(deploymentId);
      
    2. 实例已启动

      repositoryService.deleteDeployment(deploymentId,true);
      
  2. 挂起

    1. 应用场景:规定时段不允许执行流程

    2. 分类:

      1. 流程挂起
      repositoryService.suspendProcessDefinitionById(
          processDefinitionId,true,null);//参数1 :流程定义id ,参数2:是否激活,参数3:激活时间
      
      1. 实例挂起

        runtimeService.suspendProcessInstanceById(processDefinitionId);//流程id
        
  3. 激活

    1. 流程激活

      repositoryService.activateProcessDefinitionById(
          processDefinitionId,true,null);//参数1 :流程定义id ,参数2:是否激活,参数3:激活时间
      

    2. 实例激活

      runtimeService.activateProcessInstanceById(processDefinitionId);//流程id
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值