Activiti工作流框架学习:个人任务和组任务

个人任务

流程中的某个任务由指定的user来执行

组任务

流程中的某个任务由指定的group来完成,其中group由多个user组成

场景:

è¿éåå¾çæè¿°

1.提交报销申请为个人任务 
2.财务人员审批为组任务,因为财务人员有多个,而且每个财务人员都有权限处理审批 
3.财务总监审批为个人任务

1、个人任务

è¿éåå¾çæè¿°

对应的属性为Assignee,指定一个人物来执行该任务

2、组任务

候选人组任务

è¿éåå¾çæè¿°

候选人组任务以人单位,可以设置多个候选人,即在个人任务的基础上,增加多个候选人 
缺点:与个人任务一样,硬性指定人物,不灵活。当人员发生变动时,对流程运行产生不利影响

候选组组任务

è¿éåå¾çæè¿°

候选组组任务是以组为单位,组里可以包含多个候选人 
优点:对指定任务来说,它所面对的是一个组,即不需要关心组里面的具体人员,所以组内发生人员变动,不会对流程运行产生不利影响

3、候选组任务示例

/**
 * 部署流程定义
 */
@Test
public void test1() {
    DeploymentBuilder deploymentBuilder = processEngine.getRepositoryService().createDeployment();
    deploymentBuilder.addClasspathResource("com/zyj/activiti/grouptask/bxlc.bpmn");
    deploymentBuilder.addClasspathResource("com/zyj/activiti/grouptask/bxlc.png");
    deploymentBuilder.deploy();
}
/**
 * 创建组
 * 操作的数据表:act_id_group
 */
@Test
public void test2() {
    Group group = new GroupEntity();
    group.setId("财务组");
    group.setName("财务组");
    processEngine.getIdentityService().saveGroup(group);
}
/**
 * 创建用户
 * 操作的数据表:act_id_user
 */
@Test
public void test3() {
    User user = new UserEntity();
    user.setId("2");
    processEngine.getIdentityService().saveUser(user);
}
/**
 * 建立用户和组的关系
 * 操作的数据表:act_id_membership
 */
@Test
public void test4() {
    processEngine.getIdentityService().createMembership("2", "财务组");
}
/**
 * 启动流程实例时设置流程变量
 */
@Test
public void test5() {
    String processDefinitionKey = "bxlc";// 流程定义key
    Map<String, Object> variables = new HashMap<String, Object>();
    variables.put("loginUser", "小明");
    ProcessInstance pi = processEngine.getRuntimeService().startProcessInstanceByKey(processDefinitionKey, variables);
    System.out.println(pi.getId());
}
/**
 * 办理任务时设置流程变量
 */
@Test
public void test6() {
    String taskId = "1805";
    processEngine.getTaskService().complete(taskId);
}
/**
 * 查询组任务
 */
@Test
public void test7() {
    TaskQuery query = processEngine.getTaskService().createTaskQuery();
    String candidateUser = "2";
    query.taskCandidateUser(candidateUser);//使用候选人过滤
    //query.taskCandidateGroup("财务组");
    List<Task> list = query.list();
    for (Task task : list) {
        System.out.println(task.getId());
    }
}
/**
 * 拾取组任务,将组任务变为个人任务
 */
@Test
public void test8() {
    String taskId = "1902";
    String userId = "1";
    processEngine.getTaskService().claim(taskId, userId);
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值