Activiti的act_ru_identitylink那些你不知道的秘密

一、act_ru_identitylink

字段 类型 是否空 描述
ID_   varchar(64) 唯一标识
REV_ int(11) 版本号,乐观锁
GROUP_ID_ varchar(255) 对应act_id_group中的ID_,在TYPE_字段为 candidate时有效
TYPE_ varchar(255) 类型,取值有:starter、candidate、participant、assignee、owner
USER_ID_ varchar(255) 对应act_id_user中的ID_
TASK_ID_ varchar(64) 对应act_ru_task中的ID_
PROC_INST_ID_ varchar(64) 流程实例id
PROC_DEF_ID_ varchar(64) 流程定义id

二、样例

1、样例1

2、样例2

三、源码解读

1、act_ru_identitylink中的type在最新的版本中是通过IdentityLinkType封装维护的。

public class IdentityLinkType {

  /* Activiti native roles */

  public static final String ASSIGNEE = "assignee";

  public static final String CANDIDATE = "candidate";

  public static final String OWNER = "owner";

  public static final String STARTER = "starter";

  public static final String PARTICIPANT = "participant";

}

2、对应类型有对应的方法,在taskService以及runtimeSerivce中进行了封装

  public void setAssignee(String taskId, String userId) {
    commandExecutor.execute(new AddIdentityLinkCmd(taskId, userId, AddIdentityLinkCmd.IDENTITY_USER, IdentityLinkType.ASSIGNEE));
  }

  public void setOwner(String taskId, String userId) {
    commandExecutor.execute(new AddIdentityLinkCmd(taskId, userId, AddIdentityLinkCmd.IDENTITY_USER, IdentityLinkType.OWNER));
  }

  public void addCandidateUser(String taskId, String userId) {
    commandExecutor.execute(new AddIdentityLinkCmd(taskId, userId, AddIdentityLinkCmd.IDENTITY_USER, IdentityLinkType.CANDIDATE));
  }

  public void addCandidateGroup(String taskId, String groupId) {
    commandExecutor.execute(new AddIdentityLinkCmd(taskId, groupId, AddIdentityLinkCmd.IDENTITY_GROUP, IdentityLinkType.CANDIDATE));
  }

  public void deleteCandidateGroup(String taskId, String groupId) {
    commandExecutor.execute(new DeleteIdentityLinkCmd(taskId, null, groupId, IdentityLinkType.CANDIDATE));
  }

  public void deleteCandidateUser(String taskId, String userId) {
    commandExecutor.execute(new DeleteIdentityLinkCmd(taskId, userId, null, IdentityLinkType.CANDIDATE));
  }
    public void addParticipantUser(String processInstanceId, String userId) {
        commandExecutor.execute(new AddIdentityLinkForProcessInstanceCmd(processInstanceId, userId, null, IdentityLinkType.PARTICIPANT));
    }

    public void addParticipantGroup(String processInstanceId, String groupId) {
        commandExecutor.execute(new AddIdentityLinkForProcessInstanceCmd(processInstanceId, null, groupId, IdentityLinkType.PARTICIPANT));
    }

    public void deleteParticipantUser(String processInstanceId, String userId) {
        commandExecutor.execute(new DeleteIdentityLinkForProcessInstanceCmd(processInstanceId, userId, null, IdentityLinkType.PARTICIPANT));
    }

    public void deleteParticipantGroup(String processInstanceId, String groupId) {
        commandExecutor.execute(new DeleteIdentityLinkForProcessInstanceCmd(processInstanceId, null, groupId, IdentityLinkType.PARTICIPANT));
    }

3、

你可能感兴趣的:(Activiti,java)