Springboot整合Activity7:任务,历史任务,UEL表达式(二)

Springboot整合Activity7:任务,历史任务,UEL表达式(二)

任务

介绍

1. 就是对BPMN业务图中的任务开始操作:查询任务,完成任务,拾取任务,归还任务等
2. 拾取任务:将没有办理人的任务赋给某人进行处理。
3. 归还任务:将代理人取消,设置为null
4. 因为是任务操作,所以需要 ***TaskService***

属性介绍

在这里插入图片描述

案例

@Autowired
    private TaskService taskService;

    /**
     * 任务查询
     */
    @Test
    public void gettasks(){
        List<Task> list = taskService.createTaskQuery().list();
        for (Task task : list) {
            System.out.println(task.getId());
            System.out.println(task.getName());
            System.out.println("处理人"+task.getAssignee());
        }
    }

    /**
     *查询自己的任务
     */
    @Test
    public void gettasksByAssignee(){
        List<Task> list = taskService.createTaskQuery()
                .taskAssignee("wukong")
                .list();
        for (Task task : list) {
            System.out.println(task.getId());
            System.out.println(task.getName());
            System.out.println("处理人"+task.getAssignee());
        }
    }

    /**
     * 执行任务
     */
    @Test
    public void completeTask(){
        taskService.complete("实例id");
        System.out.println("完成任务");
    }

    /**
     * 拾取任务
     */
    @Test
    public void claimtask(){
        Task task = taskService.createTaskQuery().taskId("实例id").singleResult();
        taskService.claim("实例id","候选人id");
    }

    /**
     * 归还与交办任务
     */
    @Test
    public void settaskassignee(){
        Task task = taskService.createTaskQuery().taskId("实例id").singleResult();
        taskService.setAssignee("实例id","null"); //归还候选任务
        taskService.setAssignee("实例id","其他人id");  //交办,或者设置执行人
    }

历史任务

介绍

1.当一个实例任务完成后,工作流会自动在任务表等会删除这个记录,并保存在历史表
2.历史表操作就用到  HistoryService

代码

@Autowired
    private HistoryService historyService;

    /**
     * 根据用户名查询历史任务
     */
    @Test
    public void gethistoryTaskInstanceByUser(){
        List<HistoricTaskInstance> list = historyService.createHistoricTaskInstanceQuery()
                .taskAssignee("bajie")
                //排序  asc:正序 desc:倒叙
                .orderByHistoricTaskInstanceEndTime().asc()
                .list();
        for (HistoricTaskInstance hi : list) {
            System.out.println(hi.getId());
            System.out.println(hi.getName());
            System.out.println(hi.getAssignee());
            System.out.println(hi.getProcessInstanceId());

        }
    }

    /**
     * 通过流程实例id查询历史任务
     */
    @Test
    public void gethistoryTaskInstanceByInstance(){
        List<HistoricTaskInstance> list = historyService.createHistoricTaskInstanceQuery()
                .processInstanceId("实例id")
                //排序  asc:正序 desc:倒叙
                .orderByHistoricTaskInstanceEndTime().asc()
                .list();
        for (HistoricTaskInstance hi : list) {
            System.out.println(hi.getId());
            System.out.println(hi.getName());
            System.out.println(hi.getAssignee());
            System.out.println(hi.getProcessInstanceId());

        }
    }

UEL表达式

介绍

1. 又称统一表达语言,就是在
 2. uel表达式:在启动流程实例,任务完成时可以使用uel表达式携带参数
![基本概述](https://img-blog.csdnimg.cn/cfe2b9fbc75e478c9485dd6b218a8559.png)
![运行时的相关数据库](https://img-blog.csdnimg.cn/8526b3a0889e49d8a10c70b2db7f482f.png)

代码

@Autowired
    private RuntimeService runtimeService;

    @Autowired
    private TaskService taskService;

    /**
     * 启动流程实例时,执行执行人
     */
    @Test
    public void  initProcessInstanceWithArgs(){
        //流程变量  //${ZhiXingRen}
        Map<String,Object> variables = new HashMap<>();
        //可以添加多个参数
        variables.put("ZhiXingRen","wukong");

        ProcessInstance processInstance = runtimeService
                .startProcessInstanceByKey("myProcess_UEL_V1","bket01"
                ,variables);
        System.out.println("流程实例id:" + processInstance.getProcessDefinitionId());
    }
    /**
     * 完成任务带参数 指定流程变量
     */
    @Test
    public void  completeTaskWithArgs(){
        Map<String,Object> variables = new HashMap<>();
        //可以添加多个参数
        variables.put("pay","101");

//        taskService.complete("实例id",null);
        taskService.complete("60a326bd-8138-11ed-a774-f85ea0a4be6e",variables);
        System.out.println("完成任务");
    }
    /**
     * 启动流程实例携带参数,使用实体类
     */
    @Test
    public void  initProcessInstanceWithClassArgs(){
        //流程变量实体类
        UEL_POJO uel_pojo = new UEL_POJO();
        uel_pojo.setZhixingren("bajie");

        Map<String,Object> variables = new HashMap<>();
        //可以添加多个参数
        variables.put("uelpojo",uel_pojo);

        ProcessInstance processInstance = runtimeService
                .startProcessInstanceByKey("myProcess_uelv3","bket01"
                        ,variables);
        System.out.println("流程实例id:" + processInstance.getProcessDefinitionId());
    }
    /**
     * 任务完成带参数,指定多个候选人
     * 01125c1c-813a-11ed-bf93-f85ea0a4be6e
     */
    @Test
    public void  initProcessInstanceWithCandidataArgs(){
        Map<String,Object> variables = new HashMap<>();
        //可以添加多个参数
        variables.put("houxuanren","wukong,tangseng");

//        taskService.complete("实例id",null);
        taskService.complete("01125c1c-813a-11ed-bf93-f85ea0a4be6e",variables);
        System.out.println("完成任务");
    }

    /**
     * 直接指定流程变量
     */
    @Test
    public void  otherArgs(){
        runtimeService.setVariable("实例id","流程变量key","流程变量value");
//        runtimeService.setVariables();
    }
    /**
     * 局部变量
     */
    @Test
    public void  otherLocalArgs(){
        runtimeService.setVariableLocal("实例id","流程变量key","流程变量value");
//        runtimeService.setVariablesLocal();
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值