zoukankan      html  css  js  c++  java
  • Activiti-spring整合

    1.导入依赖

        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.source>1.7</maven.compiler.source>
            <maven.compiler.target>1.7</maven.compiler.target>
            <slf4j.version>1.6.6</slf4j.version>
            <log4j.version>1.2.12</log4j.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.11</version>
            </dependency>
            <dependency>
                <groupId>org.activiti</groupId>
                <artifactId>activiti-engine</artifactId>
                <version>7.0.0.Beta1</version>
            </dependency>
    
            <dependency>
                <groupId>org.activiti</groupId>
                <artifactId>activiti-spring</artifactId>
                <version>7.0.0.Beta1</version>
            </dependency>
            <dependency>
                <groupId>org.activiti</groupId>
                <artifactId>activiti-bpmn-model</artifactId>
                <version>7.0.0.Beta1</version>
            </dependency>
            <dependency>
                <groupId>org.activiti</groupId>
                <artifactId>activiti-bpmn-converter</artifactId>
                <version>7.0.0.Beta1</version>
            </dependency>
            <dependency>
                <groupId>org.activiti</groupId>
                <artifactId>activiti-json-converter</artifactId>
                <version>7.0.0.Beta1</version>
            </dependency>
            <dependency>
                <groupId>org.activiti</groupId>
                <artifactId>activiti-bpmn-layout</artifactId>
                <version>7.0.0.Beta1</version>
            </dependency>
            <dependency>
                <groupId>org.activiti.cloud</groupId>
                <artifactId>activiti-cloud-services-api</artifactId>
                <version>7.0.0.Beta1</version>
            </dependency>
            <dependency>
                <groupId>aspectj</groupId>
                <artifactId>aspectjweaver</artifactId>
                <version>1.5.4</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.38</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-test</artifactId>
                <version>5.0.7.RELEASE</version>
            </dependency>
    
            <!-- log start -->
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>${log4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-nop</artifactId>
                <version>${slf4j.version}</version>
            </dependency>
            <!-- log end -->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.4.5</version>
            </dependency>
            <dependency>
                <groupId>commons-dbcp</groupId>
                <artifactId>commons-dbcp</artifactId>
                <version>1.4</version>
            </dependency>
    
        </dependencies>
    <repositories>
    <repository>
    <id>alfresco</id>
    <name>Activiti Releases</name>
    <url>https://artifacts.alfresco.com/nexus/content/repositories/activiti-releases/</url>
    <releases>
    <enabled>true</enabled>
    </releases>
    </repository>
    </repositories>

    2.activit-spring.xml配置文件

    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           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/context
            http://www.springframework.org/schema/context/spring-context.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-wn"/>
            <property name="username" value="root"/>
            <property name="password" value="123"/>
        </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="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>
                &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.wn.service.impl.*.*(..))"/>-->
        <!--</aop:config>-->
    
    </beans>

    3.测试代码

    package com.wn.test;
    
    import org.activiti.engine.RepositoryService;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    
    import javax.annotation.Resource;
    
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations = "classpath:activiti-spring.xml")
    public class ActivitiTest {
    
        @Resource
        private  RepositoryService repositoryService;
    
        @Test
        public void test01(){
            System.out.println("部署对象:"+repositoryService);
        }
    
    
    }

      

    4.流程图

      

    5.部署流程

    package com.wn.spring;
    
    import org.activiti.engine.ProcessEngine;
    import org.activiti.engine.ProcessEngines;
    import org.activiti.engine.RepositoryService;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    
    import javax.annotation.Resource;
    
    /*流程部署*/
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations = "classpath:activiti-spring.xml")
    public class Deployment {
    
        @Resource
        private  RepositoryService repositoryService;
    
        @Test
        public void getDeployment(){
            //进行部署,将对应的流程定义文件生成到数据库当中,作为记录进行保存
            org.activiti.engine.repository.Deployment deployment= repositoryService.createDeployment()
                    .addClasspathResource("bpmnfile/hoildayInc.bpmn")       //加载流程文件
                    .addClasspathResource("bpmnfile/hoildayInc.png")
                    .name("请假流程-包含网关")   //设置流程名称
                    .key("hoildayInc-Key")
                    .deploy();//部署
            //输出部署信息
            System.out.println("流程名称:"+deployment.getName());
            System.out.println("流程ID:"+deployment.getId());
            System.out.println("流程key:"+deployment.getKey());
        }
    }

      

    6.启动流程实例

    package com.wn.spring;
    
    import org.activiti.engine.ProcessEngine;
    import org.activiti.engine.ProcessEngines;
    import org.activiti.engine.RuntimeService;
    import org.activiti.engine.runtime.ProcessInstance;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    
    import javax.annotation.Resource;
    import java.util.HashMap;
    import java.util.Map;
    
    /*启动流程实例*/
    /*设置流程变量的值*/
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations = "classpath:activiti-spring.xml")
    public class StartInstance {
    
        @Resource
        private RuntimeService runtimeService;
    
        @Test
        public void startInstance(){
            //设置流程变量  启动流程时设置
            //定义一个map集合,存放assignee的值
            Map<String ,Object> assMap=new HashMap<>();
            assMap.put("userType",2);
            //启动一个流程实例
            ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("hoildayInc", assMap);
            System.out.println("流程实例ID:"+processInstance.getId());
        }
    }

      

    7.处理任务

    package com.wn.spring;
    
    import org.activiti.engine.ProcessEngine;
    import org.activiti.engine.ProcessEngines;
    import org.activiti.engine.TaskService;
    import org.activiti.engine.task.Task;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    
    import javax.annotation.Resource;
    
    /*提交任务*/
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations = "classpath:activiti-spring.xml")
    public class CommitTask {
    
        @Resource
         private TaskService taskService;
    
        @Test
        public void commitTask(){
            //查询到自己的任务,然后通过任务ID进行提交
            Task task = taskService.createTaskQuery().processDefinitionKey("hoildayInc").taskAssignee("zhangsan").singleResult();
            //任务处理
            taskService.complete(task.getId());
        }
    }

      一直往下处理任务即可;知道结束

  • 相关阅读:
    Java遍历Map、List、Array
    自签名SSL生成
    oracle_round
    Timestamp_时间戳
    oracle_substr
    eval
    orcale_聚合函数
    oracle_decode
    js_JSON
    sql拼接
  • 原文地址:https://www.cnblogs.com/wnwn/p/12666500.html
Copyright © 2011-2022 走看看