activiti 6 springboot2.0.0 搭建

1. pom 文件 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.xx</groupId>
    <artifactId>activitiPlay</artifactId>
    <version>1.0-SNAPSHOT</version>


    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.0.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-spring-boot-starter-basic</artifactId>
            <version>6.0.0</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql-conntector.version}</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>${alibaba-druid.version}</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>${swagger.version}</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>${swagger.version}</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>${spring-mybatis.version}</version>
        </dependency>


    </dependencies>

    <properties>
        <java.version>1.8</java.version>
        <mysql-conntector.version>5.1.39</mysql-conntector.version>
        <alibaba-druid.version>1.1.20</alibaba-druid.version>
        <swagger.version>2.6.1</swagger.version>
        <spring-mybatis.version>2.0.0</spring-mybatis.version>
    </properties>


    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

2. Configuration

@Configuration
public class ProcessEngineConfig {

    @Bean
    public ProcessEngineFactoryBean processEngine() {
        ProcessEngineFactoryBean factoryBean = new ProcessEngineFactoryBean();
        factoryBean.setProcessEngineConfiguration(processEngineConfiguration());
        return factoryBean;
    }
    @Bean
    public DataSource dataSource() {

        DruidDataSource dataSource = new DruidDataSource();
        //設置數據源的屬性
        setDruidProperties(dataSource);
        return dataSource;
    }
//改成配置文件哦,我懶的改了
    private void setDruidProperties(DruidDataSource dataSource) {
        dataSource.setUrl("jdbc:mysql://ip:3306/zcy?characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=convertToNull&nullCatalogMeansCurrent=true");
        dataSource.setUsername("root");
        dataSource.setPassword("****");
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setMaxActive(100);
        dataSource.setInitialSize(10);
        dataSource.setMinIdle(10);
        dataSource.setMaxWait(15000);

    }


    @Bean
    public PlatformTransactionManager transactionManager() {
        return new DataSourceTransactionManager(dataSource());
    }
    @Bean
    public SpringProcessEngineConfiguration processEngineConfiguration() {
        SpringProcessEngineConfiguration config = new SpringProcessEngineConfiguration();

        config.setDataSource(dataSource());
        config.setTransactionManager(transactionManager());
        config.setDatabaseSchemaUpdate("true");
        config.setHistory("audit");

        return config;
    }

    @Bean
    public RepositoryService repositoryService(ProcessEngine processEngine) {

        return processEngine.getRepositoryService();
    }

    @Bean
    public RuntimeService runtimeService(ProcessEngine processEngine) {
        return processEngine.getRuntimeService();
    }
    @Bean
    public TaskService taskService(ProcessEngine processEngine) {
        return processEngine.getTaskService();
    }

    @Bean
    public HistoryService historyService(ProcessEngine processEngine) {
        return processEngine.getHistoryService();
    }
}

3.application.yml

其實不寫這裏的數據庫配置,也沒有關係哦,是mybatis的配置。config裏面配置可以讀取這裏。

server:
  port: 8000

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    url: jdbc:mysql://10.40.66.184:3306/zcy?characterEncoding=UTF-8&characterSetResults=UTF-8&zeroDateTimeBehavior=convertToNull&nullCatalogMeansCurrent=true
    username: root
    password: 1qaz@WSX
    driver-class-name: com.mysql.jdbc.Driver
    druid:
      max-active: 100
      initial-size: 1
      min-idle: 1
  application:
    name: zte-zcy

  activiti:
    check-process-definitions: false

4.Application.java

org.activiti.spring.boot.SecurityAutoConfiguration.class 要寫,否則要報錯

https://github.com/spring-projects/spring-boot/issues/13165

@SpringBootApplication(exclude={org.activiti.spring.boot.SecurityAutoConfiguration.class})
public class Appliation {


    public static void main(String[] args) {

        SpringApplication.run(Appliation.class, args);

    }

}

5. controller 層 簡單例子。詳細見一章節

RestController
@RequestMapping("/demo")
@Api("demo")
public class DemoController {

    @Autowired
    private RepositoryService repositoryService;
    @Autowired
    private RuntimeService runtimeService;
    @Autowired
    private TaskService taskService;

    @Autowired
    private HistoryService historyService;

    private String  deployKey = "myFirstProcess";


    @ApiOperation("流程部署的信息查詢")
    @GetMapping("seven")
    public void sevenDemo(){
        List<Deployment> deploymentList = repositoryService.createDeploymentQuery().processDefinitionKey("myFirstProcess").list();
        for(Deployment deployment : deploymentList){
            System.out.println("流程部署ID:"+deployment.getId());
            System.out.println("流程部署Name:"+deployment.getName());
            System.out.println("------------");
        }
    }

    @ApiOperation("流程定義的信息查詢")
    @GetMapping("egiht")
    public void egihtDemo(){
        List<ProcessDefinition> processDefinitionList = repositoryService.createProcessDefinitionQuery().list();
        for (ProcessDefinition processDefinition : processDefinitionList){
            System.out.println("流程部署ID:"+processDefinition.getDeploymentId());
            System.out.println("流程定義ID:"+processDefinition.getId());
            System.out.println("流程定義Key:"+processDefinition.getKey());
            System.out.println("流程定義Name:"+processDefinition.getName());
            System.out.println("--------------");
        }
    }



    @ApiOperation("啓動實例")
    @GetMapping("first")
    public void firstDemo(){
        //myFirstProcess:3:1568
        String processDefinitionId = "myFirstProcess:3:1568";
        //啓動流程
        //設置變量 全局有效
        Map paramMap = new HashMap();
        paramMap.put("p1","p1111");
        paramMap.put("p2","p2222");

        ProcessInstance processInstance = runtimeService.startProcessInstanceById(processDefinitionId,paramMap);
        System.out.println("流程實例ID:-->"+processInstance.getId());
        System.out.println("流程定義ID:-->"+processInstance.getProcessDefinitionId());
        System.out.println("流程執行ID:-->"+processInstance.getSuperExecutionId());


    }
    @ApiOperation("設置變量:runTimeserver")
    @GetMapping("thirteen")
    public void thirteenDemo(){
       // 任務:-->task_hello_1  流程實例:-->10001  TASKID:-->10007executeId:10004
        Person person = new Person(100,"zcy456","幼兒園");
       runtimeService.setVariable("10004","人員姓名","zcy123");

       runtimeService.setVariable("10004","person 對象",person);
    }

    /**
     * runtimeService taskService 設置變量 會覆蓋。execid 和 taskid 是一對一的。其實設置一樣的
     */
    @ApiOperation("獲取變量:runTimeserver")
    @GetMapping("sixteen")
    public void sixteenDemo(){
        System.out.println(" 人員姓名a:"+runtimeService.getVariable("10004","人員姓名"));

        System.out.println(" person 對象a:"+runtimeService.getVariable("10004","person 對象").toString());
        System.out.println(" confirm a:"+runtimeService.getVariable("27504","confirm").toString());
    }

    @ApiOperation("設置變量:taskservice")
    @GetMapping("fourteen")
    public void fourteenDemo(){
        Person person = new Person(200,"WXB456","幼兒園");
        taskService.setVariable("10007","人員姓名","WXB123");

        taskService.setVariable("10007","person 對象",person);
    }

    @ApiOperation("獲取變量:taskservice")
    @GetMapping("fiveteen")
    public void fiveteenDemo(){
        System.out.println(" 人員姓名:"+taskService.getVariable("32502","人員姓名").toString());
        System.out.println(" person 對象:"+taskService.getVariable("32502","person 對象").toString());
        System.out.println(" confirm:"+taskService.getVariable("32506","confirm").toString());

    }

    @ApiOperation("查詢任務")
    @GetMapping("two")
    public void twoDemo(){
        //查詢任務
        List<Task> taskList = taskService.createTaskQuery().taskAssignee("朱春燕").list();
        System.out.println("朱春燕任務:");
        for(Task task : taskList){

            System.out.println("    任務:-->"+task.getName()+"  流程實例:-->"+task.getProcessInstanceId()+"  TASKID:-->"+task.getId()+"executeId:"+task.getExecutionId());
        }



    }
    @ApiOperation("指定實例的,查詢任務")
    @GetMapping("four")
    public void fourDemo(){
        System.out.println("實例 10001 任務列表");
        //查詢任務
        List<Task> taskList = taskService.createTaskQuery().processInstanceId("27501").list();

        for(Task task : taskList){
            System.out.println("    任務:-->"+task.getName()+"  流程實例:-->"+task.getProcessInstanceId()+" 處理人:-->"+task.getAssignee()+"  TASKID:-->"+task.getId()+" exe id:-->"+task.getExecutionId());
        }

    }

    @ApiOperation("完成任務")
    @GetMapping("three")
    public void threeDemo(){
        //完成任務 完成實例 2501
        System.out.println("完成任務 實例 17501");
        //查詢任務
        List<Task> taskList = taskService.createTaskQuery().taskAssignee("朱春燕").processInstanceId("17501").list();

        for (Task task : taskList){
            System.out.println("    完成taskId:"+task.getId()+" 完成任務名稱:"+task.getName());
            taskService.complete(task.getId());
        }
    }

    @ApiOperation("完成任務:指定taskid")
    @GetMapping("five")
    public void fiveDemo(){
        //完成任務 完成實例 2501
        System.out.println("完成任務");
        //查詢任務
        Task task = taskService.createTaskQuery().taskId("27507").singleResult();
        if(task != null){
            System.out.println("    完成taskId:"+task.getId()+" 完成任務名稱:"+task.getName());
            Map paramMap = new HashMap();
            paramMap.put("confirm","no");
            taskService.complete(task.getId(),paramMap);
        }else {
            System.out.println("任務已完成");
        }



    }

    @ApiOperation("查詢流程實例")
    @GetMapping("six")
    public void sixDemo(){
        List<ProcessInstance> processInstanceList = runtimeService.createProcessInstanceQuery().list();
        for (ProcessInstance processInstance : processInstanceList){
            System.out.println("實例id:"+processInstance.getProcessInstanceId()+
                    " 流程定義id:"+processInstance.getProcessDefinitionId()+
                    " 流程部署Id:" + processInstance.getDeploymentId());
            System.out.println("-------");


        }
    }

    @ApiOperation("刪除指定流程部署")
    @GetMapping("nine")
    public void nineDemo(){
        repositoryService.deleteDeployment("1569",true);

    }


    @ApiOperation("刪除指定流程實例")
    @GetMapping("ten")
    public void tenDemo(){
        runtimeService.deleteProcessInstance("17501","test");
    }

    @ApiOperation("查看歷史任務:指定人的")
    @GetMapping("eleven")
    public void elevenDemo(){
        List<HistoricTaskInstance> historicTaskInstanceList = historyService.createHistoricTaskInstanceQuery().taskAssignee("朱春燕").orderByHistoricTaskInstanceEndTime().desc().list();
        for(HistoricTaskInstance historicTaskInstance : historicTaskInstanceList){
            System.out.println("歷史任務:"+historicTaskInstance.getName() + "TASKID:" + historicTaskInstance.getId()+" 開始時間:"+historicTaskInstance.getStartTime());

        }

    }



}

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章