09 API(4)任务操作

目录

前言

1. 任务权限

1.1 任务候选人CandidateUser(组)

1.2 任务持有人OWNER_

1.3 任务代理人ASSIGNEE_

2. 任务的完成


前言

用户启动了流程定义,就相当于领取了一个任务了。用户通过完成任务,推动流程的前进。

本节不讨论Task与ProcessDefinition的关系。

1. 任务权限

1.1 任务候选人CandidateUser(组)

 

package com.study.c9;

import org.activiti.engine.*;
import org.activiti.engine.identity.User;
import org.activiti.engine.task.Task;

import java.util.List;
import java.util.UUID;

public class CandidateTest {

    public static void main(String[] args) {
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        TaskService taskService = processEngine.getTaskService();
        IdentityService identityService = processEngine.getIdentityService();

        String taskId = UUID.randomUUID().toString();
        Task task = taskService.newTask(taskId);
        task.setName("测试任务");
        taskService.saveTask(task);

        String userId = UUID.randomUUID().toString();
        User user = identityService.newUser(userId);
        user.setFirstName("Lily");
        identityService.saveUser(user);
        //添加任务候选人
        taskService.addCandidateUser(taskId,userId);
        //查询该用户作为候选人的任务列表
        List<Task> taskList = taskService.createTaskQuery().taskCandidateUser(userId).list();
        System.out.println("userId : " + userId + " 可以处理的任务如下:");
        for (Task item : taskList) {
            System.out.println(item.getName());
        }
        processEngine.close();
    }
}

 

控制台输出:

userId : 1bb2b291-a2ea-4363-8f20-68d8c24a082b 可以处理的任务如下:
测试任务

ACT_RU_TASK

并且注意到它拥有OWNER_字段,从这个角度来看每个任务都只有一个持有人。

ACT_RU_IDENTITYLINK新增一条关联数据

不仅是流程,任务与用户的关联信息都会保存于此。候选人与任务是多对多的关系。


 

1.2 任务持有人OWNER_

package com.study.c9;

import org.activiti.engine.*;
import org.activiti.engine.identity.User;
import org.activiti.engine.task.Task;

import java.util.List;
import java.util.UUID;

public class OwnerTest {

    public static void main(String[] args) {
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        TaskService taskService = processEngine.getTaskService();
        IdentityService identityService = processEngine.getIdentityService();

        String userId = UUID.randomUUID().toString();
        User user = identityService.newUser(userId);
        user.setFirstName("Lily");
        identityService.saveUser(user);

        String taskId = UUID.randomUUID().toString();
        Task task = taskService.newTask(taskId);
        task.setName("测试任务");
        task.setOwner(userId);
        taskService.saveTask(task);

        //查询该用户作为持有人的任务列表
        List<Task> taskList = taskService.createTaskQuery().taskOwner(userId).list();
        System.out.println("userId : " + userId + " 持有的任务如下:");
        for (Task item : taskList) {
            System.out.println(item.getName());
        }
        processEngine.close();
    }
}

控制台输出:

userId : 56d0e596-c6ca-4dde-ac29-6d10859f5c2f 持有的任务如下:
测试任务

1.3 任务代理人ASSIGNEE_

任务代理人指的是代理任务持有者执行任务,所以他们不会是同一个用户

任务的声明与完成

使用claim方法声明任务的代理人,即ASSIGNEE_字段

package com.study.c9;

import org.activiti.engine.*;
import org.activiti.engine.identity.User;
import org.activiti.engine.task.Task;

import java.util.List;
import java.util.UUID;

public class CandidateTest {

    public static void main(String[] args) {
        ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
        TaskService taskService = processEngine.getTaskService();
        IdentityService identityService = processEngine.getIdentityService();

        String userId = UUID.randomUUID().toString();
        User user = identityService.newUser(userId);
        user.setFirstName("Morgan");
        identityService.saveUser(user);

        String taskId = UUID.randomUUID().toString();
        Task task = taskService.newTask(taskId);
        task.setName("测试任务");
        task.setOwner(userId);
        taskService.saveTask(task);

        taskService.claim(taskId, userId);

        //查询该用户作为代理人的任务列表
        List<Task> taskList = taskService.createTaskQuery().taskAssignee(userId).list();
        System.out.println("userId : " + userId + " 代理的任务如下:");
        for (Task item : taskList) {
            System.out.println(item.getName());
        }
        processEngine.close();
    }
}

控制台输出:

userId : 6c3212f7-f6f9-4476-889e-c547b9d37e69 代理的任务如下:
测试任务

ACT_RU_TASK新增一条记录,OWNER_和ASSIGNEE_都为同一个用户,在实际上是不可能的

 

注意:同一个任务无法被执行两次claim,否则报错

 

2. 任务的完成

complete方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值