一 代码
package com.syc.activiti;
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.Group;
import org.activiti.engine.identity.User;
import org.activiti.engine.task.IdentityLinkType;
import org.activiti.engine.task.Task;
public class AddIdentityLink {
public static void main( String[] args ) {
//获取流程引擎实例
ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
// 获取身份服务组件
IdentityService identityService = engine.getIdentityService();
// 新建用户组
Group groupA = createGroup(identityService, "group1", "经理组", "manager");
// 新建用户
User user = creatUser(identityService, "user1", "张三", "last", "abc@163.com", "123");
// 获取任务服务组件
TaskService taskService = engine.getTaskService();
//保存第一个Task
Task task1 = taskService.newTask("task1");
task1.setName("申请任务");
taskService.saveTask(task1);
//调用addGroupIdentityLink方法
taskService.addGroupIdentityLink(task1.getId(), groupA.getId(), IdentityLinkType.CANDIDATE);
taskService.addGroupIdentityLink(task1.getId(), groupA.getId(), IdentityLinkType.OWNER);
taskService.addGroupIdentityLink(task1.getId(), groupA.getId(), IdentityLinkType.ASSIGNEE);
//调用addUserIdentityLink方法
Task task2 = taskService.newTask("task2");
task2.setName("申请任务2");
taskService.saveTask(task2);
taskService.addUserIdentityLink(task2.getId(), user.getId(), IdentityLinkType.CANDIDATE);
taskService.addUserIdentityLink(task2.getId(), user.getId(), IdentityLinkType.OWNER);
taskService.addUserIdentityLink(task2.getId(), user.getId(), IdentityLinkType.ASSIGNEE);
}
//创建用户方法
static User creatUser( IdentityService identityService, String id, String first,
String last, String email, String passwd ) {
// 使用newUser方法创建User实例
User user = identityService.newUser(id);
// 设置用户的各个属性
user.setFirstName(first);
user.setLastName(last);
user.setEmail(email);
user.setPassword(passwd);
// 使用saveUser方法保存用户
identityService.saveUser(user);
return identityService.createUserQuery().userId(id).singleResult();
}
// 将用户组数据保存到数据库中
static Group createGroup( IdentityService identityService, String id,
String name, String type ) {
// 调用newGroup方法创建Group实例
Group group = identityService.newGroup(id);
group.setName(name);
group.setType(type);
identityService.saveGroup(group);
return identityService.createGroupQuery().groupId(id).singleResult();
}
}
二 数据库
1 act_hi_taskinst
mysql> select * from act_hi_taskinst;
+-------+--------------+---------------+---------------+---------------+---------------+-----------------+--------------+--------+-----------+-------------------------+-------------+-----------+-----------+----------------+-----------+-----------+-----------+-----------+------------+
| ID_ | PROC_DEF_ID_ | TASK_DEF_KEY_ | PROC_INST_ID_ | EXECUTION_ID_ | NAME_ | PARENT_TASK_ID_ | DESCRIPTION_ | OWNER_ | ASSIGNEE_ | START_TIME_ | CLAIM_TIME_ | END_TIME_ | DURATION_ | DELETE_REASON_ | PRIORITY_ | DUE_DATE_ | FORM_KEY_ | CATEGORY_ | TENANT_ID_ |
+-------+--------------+---------------+---------------+---------------+---------------+-----------------+--------------+--------+-----------+-------------------------+-------------+-----------+-----------+----------------+-----------+-----------+-----------+-----------+------------+
| task1 | NULL | NULL | NULL | NULL | 申请任务 | NULL | NULL | group1 | group1 | 2020-04-18 18:33:23.688 | NULL | NULL | NULL | NULL | 50 | NULL | NULL | NULL | |
| task2 | NULL | NULL | NULL | NULL | 申请任务2 | NULL | NULL | user1 | user1 | 2020-04-18 18:33:23.950 | NULL | NULL | NULL | NULL | 50 | NULL | NULL | NULL | |
+-------+--------------+---------------+---------------+---------------+---------------+-----------------+--------------+--------+-----------+-------------------------+-------------+-----------+-----------+----------------+-----------+-----------+-----------+-----------+------------+
2 rows in set (0.00 sec)
2 act_ru_task
mysql> select * from act_ru_task;
+-------+------+---------------+---------------+--------------+---------------+-----------------+--------------+---------------+--------+-----------+-------------+-----------+-------------------------+-----------+-----------+-------------------+------------+-----------+-------------+
| ID_ | REV_ | EXECUTION_ID_ | PROC_INST_ID_ | PROC_DEF_ID_ | NAME_ | PARENT_TASK_ID_ | DESCRIPTION_ | TASK_DEF_KEY_ | OWNER_ | ASSIGNEE_ | DELEGATION_ | PRIORITY_ | CREATE_TIME_ | DUE_DATE_ | CATEGORY_ | SUSPENSION_STATE_ | TENANT_ID_ | FORM_KEY_ | CLAIM_TIME_ |
+-------+------+---------------+---------------+--------------+---------------+-----------------+--------------+---------------+--------+-----------+-------------+-----------+-------------------------+-----------+-----------+-------------------+------------+-----------+-------------+
| task1 | 3 | NULL | NULL | NULL | 申请任务 | NULL | NULL | NULL | group1 | group1 | NULL | 50 | 2020-04-18 18:33:23.687 | NULL | NULL | 1 | | NULL | NULL |
| task2 | 3 | NULL | NULL | NULL | 申请任务2 | NULL | NULL | NULL | user1 | user1 | NULL | 50 | 2020-04-18 18:33:23.950 | NULL | NULL | 1 | | NULL | NULL |
+-------+------+---------------+---------------+--------------+---------------+-----------------+--------------+---------------+--------+-----------+-------------+-----------+-------------------------+-----------+-----------+-------------------+------------+-----------+-------------+
2 rows in set (0.00 sec)
3 act_id_user
mysql> select * from act_id_user;
+-------+------+--------+-------+-------------+------+-------------+
| ID_ | REV_ | FIRST_ | LAST_ | EMAIL_ | PWD_ | PICTURE_ID_ |
+-------+------+--------+-------+-------------+------+-------------+
| user1 | 1 | 张三 | last | abc@163.com | 123 | NULL |
+-------+------+--------+-------+-------------+------+-------------+
1 row in set (0.00 sec)
4 act_id_group
mysql> select * from act_id_group;
+--------+------+-----------+---------+
| ID_ | REV_ | NAME_ | TYPE_ |
+--------+------+-----------+---------+
| group1 | 1 | 经理组 | manager |
+--------+------+-----------+---------+
1 row in set (0.00 sec)
5 act_ru_identitylink
mysql> select * from act_ru_identitylink;
+--------+------+-----------+-----------+----------+----------+---------------+--------------+
| ID_ | REV_ | GROUP_ID_ | TYPE_ | USER_ID_ | TASK_ID_ | PROC_INST_ID_ | PROC_DEF_ID_ |
+--------+------+-----------+-----------+----------+----------+---------------+--------------+
| 105001 | 1 | group1 | candidate | NULL | task1 | NULL | NULL |
| 105005 | 1 | NULL | candidate | user1 | task2 | NULL | NULL |
+--------+------+-----------+-----------+----------+----------+---------------+--------------+
2 rows in set (0.00 sec)