activiti基本使用,表结构变化

        
            org.activiti
            activiti-spring-boot-starter-basic
            6.0.0
        

初始化流程引擎

 public ProcessEngine getP(){
        /*        *1.通过代码形式创建
         *  - 取得ProcessEngineConfiguration对象
         *  - 设置数据库连接属性
         *  - 设置创建表的策略 (当没有表时,自动创建表)
         *  - 通过ProcessEngineConfiguration对象创建 ProcessEngine 对象*/

        //取得ProcessEngineConfiguration对象
        ProcessEngineConfiguration engineConfiguration=ProcessEngineConfiguration.
                createStandaloneProcessEngineConfiguration();
        //设置数据库连接属性
        engineConfiguration.setJdbcDriver("com.mysql.jdbc.Driver");
        engineConfiguration.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/activie?characterEncoding=utf-8&allowMultiQueries=true&serverTimezone=Asia/Shanghai");
        engineConfiguration.setJdbcUsername("root");
        engineConfiguration.setJdbcPassword("123456");


        // 设置创建表的策略 (当没有表时,自动创建表)
        //          public static final java.lang.String DB_SCHEMA_UPDATE_FALSE = "false";//不会自动创建表,没有表,则抛异常
        //          public static final java.lang.String DB_SCHEMA_UPDATE_CREATE_DROP = "create-drop";//先删除,再创建表
//                  public static final java.lang.String DB_SCHEMA_UPDATE_TRUE = "true";//假如没有表,则自动创建
        engineConfiguration.setDatabaseSchemaUpdate("true");
        //通过ProcessEngineConfiguration对象创建 ProcessEngine 对象
        ProcessEngine processEngine = engineConfiguration.buildProcessEngine();
        return processEngine;
    }

 

一、单流程实例

activiti基本使用,表结构变化_第1张图片activiti基本使用,表结构变化_第2张图片

1、部署后-执行流程前test4

//流程部署
    @Test
    public void test4() {
        ProcessEngine p = getP();
        p.getRepositoryService().createDeployment().addClasspathResource("processes/test5.bpmn").name("测试").deploy();
    }

//部署流程查询
    @Test
    public void test5() {
        ProcessEngine p = getP();
        DeploymentQuery deploymentQuery = p.getRepositoryService().createDeploymentQuery();
        List tpls = deploymentQuery.deploymentName("测试").list();
        ProcessDefinitionQuery processDefinitionQuery = p.getRepositoryService().createProcessDefinitionQuery();
        List list = processDefinitionQuery.deploymentId("2501").list();

    }

act_re-deployment 流程部署表  

act_re_procdef 流程定义表

2、执行流程后test6

 //流程执行start
    @Test
    public void test6() {
        ProcessEngine p = getP();
        RuntimeService rs = p.getRuntimeService();
        ProcessInstance processInstance = rs.startProcessInstanceById("test5id:2:2504");
    }
    //完成某个节点流程
    @Test
    public void test7() {
        ProcessEngine p = getP();
        TaskService taskService = p.getTaskService();
        taskService.complete("15003");
    }

act_ru_execution 执行表

act_ru_identitylink 身份链 表

act_ru_task

3、完成第一级执行流程后test8

act_ru_identitylink 身份链 表

act_ru_task

流程执行结束:ru类型表格全部清空

二、有分支的流程

所有 BPMN 2.0 任务以及 gateways 都可以有一个 默认的顺序流。 只有当没有其它顺序流被选取的情况下, 才选取该顺序流作为活动的输出顺序流。默认顺序流上的条件总是被忽略掉

执行流程后 分支之前和前面相同,执行到流程分支时:test6

需要设置自定义变量,当做if条件

activiti基本使用,表结构变化_第3张图片activiti基本使用,表结构变化_第4张图片

三、排他网关

和有分支的一个道理,就是在分支处设定自定义变量,然后根据变量进行判断走哪一个分支

activiti基本使用,表结构变化_第5张图片

四、并行网关

并行任务:在其中一条任务,如左侧,进行到收款结束,是不能触发综合的,必须要左右两条线都结束,才会触发综合任务

 

五、定义和查询流程变量

//流程中之自定义变量
    //初始化时定义
    @Test
    public void test8() {
        ProcessEngine p = getP();
        RuntimeService runtimeService = p.getRuntimeService();
        Map variables = new HashMap<>();
        variables.put("原因","你猜");
        variables.put("时间","一万年");
        ProcessInstance id = runtimeService.startProcessInstanceByKey("id",variables);
    }

    //中途定义
    @Test
    public void test9() {
        ProcessEngine p = getP();
        RuntimeService runtimeService = p.getRuntimeService();
        Map variables = new HashMap<>();
        variables.put("原因","不知道");
        variables.put("地址","黑星");
        runtimeService.setVariables("2501",variables);
    }

    //中途定义
    @Test
    public void test10() {
        ProcessEngine p = getP();
        TaskService taskService = p.getTaskService();
        Map variables = new HashMap<>();
        variables.put("money","800");
        taskService.setVariables("5005",variables);
    }

    //查询流程变量
    @Test
    public void test11() {
        ProcessEngine p = getP();
        RuntimeService runtimeService = p.getRuntimeService();
        String reason = (String)runtimeService.getVariable("5004", "原因");
        System.out.println();
    }
    @Test
    public void test12() {
        ProcessEngine p = getP();
        TaskService taskService = p.getTaskService();
        String reason = (String)taskService.getVariable("5007", "原因");
        System.out.println();
    }

 

 

 

你可能感兴趣的:(工作流)