Activiti7学习十 组任务

在流程定义中在任务结点的 assignee 固定设置任务负责人,在流程定义时将参与者固定设置在.bpmn 文件中,如果临时任务负责人变更则需要修改流程定义,系统可扩展性差。
针对这种情况可以给任务设置多个候选人,可以从候选人中选择参与者来完成任务
在这里插入图片描述
部署流程定义

 /**
     * 部署流程  发布组任务流程
     */
    @Test
    public  void test02(){
        //获取引擎
        ProcessEngine engine=ProcessEngines.getDefaultProcessEngine();
        //获取资源服务
        RepositoryService service = engine.getRepositoryService();
        Deployment deploy = service.createDeployment()
                .addClasspathResource("bpmn/evection1.bpmn")
                .addClasspathResource("bpmn/evection1.svg")
                .name("组任务测试")
                .deploy();
        System.out.println("部署的id:"+deploy.getId());
        System.out.println("部署的key:"+deploy.getKey());
        System.out.println("部署的名称:"+deploy.getName());
        System.out.println("部署的时间:"+deploy.getDeploymentTime());
    }

开启流程实例

 /**
     * 开启一个实例
     */
    @Test
    public void test03(){
        ProcessEngine engine=ProcessEngines.getDefaultProcessEngine();
        RuntimeService service = engine.getRuntimeService();
        Evection evection = new Evection();
        evection.setNum(3);
        Map<String, Object> map = new HashMap<>();
        map.put("evection",evection);
//        ProcessInstance evectionInstance = service.startProcessInstanceByKey("Process_1655017372539",map);
        ProcessInstance evectionInstance = service.startProcessInstanceByKey("evecation");
//        ProcessInstance evection = service.startProcessInstanceById("27501");
        System.out.println(evectionInstance.getProcessDefinitionId());
        System.out.println(evectionInstance.getProcessDefinitionName());
        System.out.println(evectionInstance.getId());
        System.out.println(evectionInstance.getName());
    }

拾取任务

/**
     * 查询任务,并拾取任务
     */
    @Test
    public void test05(){
        ProcessEngine engine=ProcessEngines.getDefaultProcessEngine();
        TaskService service = engine.getTaskService();
        //查询任务
        List<Task> tasks = service.createTaskQuery()
                .processDefinitionKey("evecation")
                .list();
        for (Task task:tasks
             ) {
            System.out.println("组任务id:"+task.getId());
            System.out.println("任务名称:"+task.getName());
            //拾取任务
            String user3="user3";
            service.claim(task.getId(),user3);
        }
    }

移交任务

/**
     * 查询任务,并移交任务
     */
    @Test
    public void test06(){
        ProcessEngine engine=ProcessEngines.getDefaultProcessEngine();
        TaskService service = engine.getTaskService();
        //查询任务
        List<Task> tasks = service.createTaskQuery()
                .processDefinitionKey("evecation")
                .taskAssignee("user3")
                .list();
        for (Task task:tasks
        ) {
            System.out.println("组任务id:"+task.getId());
            System.out.println("任务名称:"+task.getName());
            //移交任务
            String user4="user4";
            service.setAssignee(task.getId(),user4);
        }
    }

退回(归还)任务,这里代码退回时直接把assignee设置为空,如果是想退回到上一级的话或者是最初拾取的人员可以查看act_ru_identitylink表,这个表记录的是最初拾取任务的人员,还以查看act_hi_comment表,这张表可以查看移交过程中的表。

/**
     * 查询任务,退回(归还)任务
     */
    @Test
    public void test07(){
        ProcessEngine engine=ProcessEngines.getDefaultProcessEngine();
        TaskService service = engine.getTaskService();
        //查询任务
        List<Task> tasks = service.createTaskQuery()
                .processDefinitionKey("evecation")
                .taskAssignee("user4")
                .list();
        for (Task task:tasks
        ) {
            System.out.println("组任务id:"+task.getId());
            System.out.println("任务名称:"+task.getName());
            //退回(归还)任务
            service.setAssignee(task.getId(),null);
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

枣泥馅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值