复习步骤5-Activiti任务操作

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiangshuai198807/article/details/89405957

activiti 每个模块都有其对应的服务组件,任务也有,就是TaskService

任务权限  概念

  • 任务候选人(组) :

   如有一个任务,是有经理用户组审批的(也就是每一个经理都可以审批),那么        这个经理用户组就是任务候选组

   如果一个任务只有一个人可以看到并审批,那么这个人就叫做任务候选人

  • 任务持有人

    就是要执行这个任务的人,一个任务只有一个持有人

  • 任务代理人

    执行这个任务的人,即任务持有人,当当前任务持有人不方便做或有事的时候,

委托执行这个任务的人就叫做任务代理人

 

 

任务与 任务候选人(组)是一对多的关系

任务与 任务持有人 是一对一的关系

任务与 任务代理人 是一对一的关系

 

*另外 任务声明 TaskService.claim方法

 *     任务完成 TaskService.complete 方法一调用,就会成功执行完此任务,调到下一个节点

项目结构如图

 

TaskServiceTest.java

package com.xiangshuai.act.c9;

 

import java.util.List;

import java.util.UUID;

 

import org.activiti.engine.IdentityService;

import org.activiti.engine.ProcessEngine;

import org.activiti.engine.ProcessEngines;

import org.activiti.engine.TaskService;

import org.activiti.engine.identity.User;

import org.activiti.engine.task.Task;

 

/**

 * @author lqx

 * 文件在 E:\学习文档子目录压缩\框架\工作流引擎\Activiti6.0\window\复习步骤5-Activiti任务操作

 * 或 我的网盘\我的笔记学习文档子目录压缩\框架\工作流引擎\Activiti6.0\window\复习步骤5-Activiti任务操作

 *

 *任务,    任务候选人(组) 保存的三表为 中间表 act_ru_identitylink,act_ru_task,act_id_user(或act_id_group)

 *任务,     任务持有人  之前表数据不变会改变  act_ru_task的 OWNER_字段 的值

 *任务,     任务代理人  之前表数据不变会改变  act_ru_task的 ASSIGNEE_字段 的值

 *另外 任务声明 TaskService.claim方法

 *     任务完成 TaskService.complete 方法一调用,就会成功执行完此任务,调到下一个节点

 */

public class TaskServiceTest {

         public static void main(String[] args) {

                  //testCandidateUserAndTask();

                  testOwnerAndTask();

         }

        

         //测试任务与任务候选人 的创建于查询

     public static void testCandidateUserAndTask(){

              ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();

              IdentityService identityService = engine.getIdentityService();//获得操作用户的组织机构管理组件

              TaskService taskService = engine.getTaskService();//获得操作的任务管理组件

              

              //为了方便测试,这里直接新建任务了,实际WEB开发中,任务应该和流程图绑定的

              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("xiaoming");

              identityService.saveUser(user);

              

              /*

              设置 任务 与任务候选人(组)-就是将关联关系insert到act_ru_identitylink中间表,

              百度TaskService API  设置 任务 与任务候选人方法 addCandidateUser(String taskId, String userId)

              */

              taskService.addCandidateUser(task.getId(), user.getId());

              

              //在实际WEB开发 如果要查询一个用户有多少可以 执行的任务权限,用以下方法即可

              List<Task> list = taskService.createTaskQuery().taskCandidateUser(userid).list();

              System.out.println("id为"+userid+"的人有如下任务权限--");

              list.forEach((temp)->{

                      System.out.println(temp.getName());

              });

              

     }

    

    /*

     测试任务与任务持有人 的创建于查询  --会在act_ru_task表的 OWNER_字段设值为持有人的id,表示这个任务被这个ID值的人持有

     代理人也一样,调taskService.claim(java.lang.String, java.lang.String) --和setOwner 一样第一参数是 任务task id,

     第二个参数是代理人user 的id

      字段为ASSIGNEE_为代理人的id

     */

     public static void testOwnerAndTask(){

              ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();

              IdentityService identityService = engine.getIdentityService();//获得操作用户的组织机构管理组件

              TaskService taskService = engine.getTaskService();//获得操作的任务管理组件

              

              //为了方便测试,这里直接新建任务了,实际WEB开发中,任务应该和流程图绑定的

              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("xiaoming--持有人");

              identityService.saveUser(user);

              

              /*

              设置 任务与任务持有人-不会将关联关系insert到act_ru_identitylink中间表,只会在act_ru_task表的 OWNER_字段设值为持有人的id

              即改变act_ru_task表的 OWNER_字段的值,

        代理人也一样,调taskService.claim(java.lang.String, java.lang.String) --和setOwner 一样第一参数是 任务task id,

     第二个参数是代理人user 的id

      字段为ASSIGNEE_为代理人的id

              百度TaskService API  设置 任务与任务持有人 setOwner(String taskId, String userId)

               */

              taskService.setOwner(task.getId(), user.getId());

              

              //在实际WEB开发 如果要查询一个用户 持有的任务是

              List<Task> list = taskService.createTaskQuery().taskOwner(userid).list();

              System.out.println("id为"+userid+"的人持有如下任务--");

              list.forEach((temp)->{

                      System.out.println(temp.getName());

              });

              

     }

    

    

}

 

猜你喜欢

转载自blog.csdn.net/xiangshuai198807/article/details/89405957