在Springboot集成Activiti工作流引擎-流程变量、任务组、 网关【基础讲解】

流程变量
流程运转有时会用到流程变量,业务系统和activiti结合时少步了流程变量,
流程变量就是activiti在管理流程时根据管理需要而设置的变量
比如请假时间 就可以用变量

变量的作用域
globa变量 全局的
流程变量默认作用域时流程实例 变量名称必须唯一

local变量 局部的
任务和执行实例仅仅针对一个任务和一个执行范围,范围没有流程实例大,称为local变量

比如 UEL-value 写法 ${变量} 这种就是 变量设置

还可以在流程执行路上设置审批人 第一个人审批后,自定义审批人

//============================================================================================
    //在流程执行路上设置审批人

    //创建实例
    @Test
    public void deployProcess2(){
        Deployment deploy = repositoryService.createDeployment()
                .addClasspathResource("process/jiaban.bpmn20.xml")
                .addClasspathResource("process/jiaban.png")
                .name("加班流程")
                .deploy();
        System.out.println(deploy.getId());
        System.out.println(deploy.getName());
    }

    //启动流程实例
    @Test
    public void startProcess2(){
        // UEL表达式分配
        Map<String,Object> map=new HashMap<>();
        map.put("assignee1","json2");
     //   map.put("assignee2","haha");
        ProcessInstance qingjia = runtimeService.startProcessInstanceByKey("jiaban",map);
        System.out.println("流程定义ID"+qingjia.getProcessDefinitionId());
        System.out.println("流程实例ID"+qingjia.getId());
        System.out.println("流程活动ID"+qingjia.getActivityId());
    }

    //查询个人代办任务 -- json2
    @Test
    public void findTaskList2(){
        String name="json2";
        List<Task> taskList = taskService.createTaskQuery()
                .taskAssignee(name)
                .list();
        taskList.forEach(item->{
            System.out.println("流程实例的ID"+item.getProcessInstanceId());
            System.out.println("任务id"+item.getId());
            System.out.println("任务负责人"+item.getAssignee());
            System.out.println("任务名称"+item.getName());
        });

    }

    //在流程执行路上设置审批人 第一个人审批后,自定义审批人
    @Test
    public void completTask1(){
        Task json = taskService.createTaskQuery().taskAssignee("json2").singleResult();
        Map<String,Object> map=new HashMap<>();
        map.put("assignee2","haha2");
        taskService.complete(json.getId(),map);
    }

    @Test
    public void findTaskList3(){
        String name="haha2";
        List<Task> taskList = taskService.createTaskQuery()
                .taskAssignee(name)
                .list();
        taskList.forEach(item->{
            System.out.println("流程实例的ID"+item.getProcessInstanceId());
            System.out.println("任务id"+item.getId());
            System.out.println("任务负责人"+item.getAssignee());
            System.out.println("任务名称"+item.getName());
        });

    }

任务组
需求
在流程定义中在任务节点的assignee固定设置任务负责人,在流程定义时参与者固定设置在.bpmn文件中
如果需要临时变更任务负责人 则需要修改流程定义,系统扩展性很差,针对这种情况,我们可以给任务设置
多个候选人,从候选人中选择参与者来完成任务

网关 通常跟流程变量一起使用
排他网关
网关变量声明方式 $(day<=2)

并行网关 两个人一起审批

包含网关
可以看作 排他和并行官网的结合体

你可能感兴趣的:(spring,boot,后端,activiti,工作流)