一 代码
package com.syc.activiti;
import java.util.ArrayList;
import java.util.List;
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.IdentityLink;
import org.activiti.engine.task.Task;
public class Query {
public static void main( String[] args ) {
//获取流程引擎实例
ProcessEngine engine = ProcessEngines.getDefaultProcessEngine();
// 获取身份服务组件
IdentityService identityService = engine.getIdentityService();
// 新建用户
User user = creatUser(identityService, "user1", "张三", "last", "abc@163.com", "123");
// 新建用户组
Group groupA = createGroup(identityService, "group1", "经理组", "manager");
Group groupB = createGroup(identityService, "group2", "员工组", "employee");
// 获取任务服务组件
TaskService taskService = engine.getTaskService();
//保存第一个Task
Task task1 = taskService.newTask("task1");
task1.setName("申请假期");
taskService.saveTask(task1);
//保存第二个Task
Task task2 = taskService.newTask("task2");
task2.setName("审批假期");
taskService.saveTask(task2);
//绑定权限
taskService.addCandidateGroup("task1", groupA.getId());
taskService.addCandidateGroup("task2", groupB.getId());
taskService.addCandidateUser("task2", user.getId());
//根据用户组查询任务
List<Task> tasks = taskService.createTaskQuery().taskCandidateGroup(groupA.getId()).list();
System.out.println("经理组的候选任务有:");
for (Task task : tasks) {
System.out.println(" " + task.getName());
}
//根据用户查询任务
tasks = taskService.createTaskQuery().taskCandidateUser(user.getId()).list();
System.out.println("张三的候选任务有");
for (Task task : tasks) {
System.out.println(" " + task.getName());
}
//调用taskCandidateGroupIn
List<String> groupIds = new ArrayList<String>();
groupIds.add(groupA.getId());
groupIds.add(groupB.getId());
tasks = taskService.createTaskQuery().taskCandidateGroupIn(groupIds).list();
System.out.println("经理组与员工组的任务有:");
for (Task task : tasks) {
System.out.println(" " + task.getName());
}
//查询权限数据
List<IdentityLink> links = taskService.getIdentityLinksForTask(tasks.get(1).getId());
System.out.println("关系数据量: " + links.size());
}
// 将用户组数据保存到数据库中
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();
}
//创建用户方法
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();
}
}
二 运行结果
经理组的候选任务有:
申请假期
张三的候选任务有
审批假期
经理组与员工组的任务有:
申请假期
审批假期
关系数据量: 2
三 数据库
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 | NULL | NULL | 2020-04-18 18:05:11.104 | NULL | NULL | NULL | NULL | 50 | NULL | NULL | NULL | |
| task2 | NULL | NULL | NULL | NULL | 审批假期 | NULL | NULL | NULL | NULL | 2020-04-18 18:05:11.180 | 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 | 1 | NULL | NULL | NULL | 申请假期 | NULL | NULL | NULL | NULL | NULL | NULL | 50 | 2020-04-18 18:05:11.103 | NULL | NULL | 1 | | NULL | NULL |
| task2 | 1 | NULL | NULL | NULL | 审批假期 | NULL | NULL | NULL | NULL | NULL | NULL | 50 | 2020-04-18 18:05:11.180 | 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 |
| group2 | 1 | 员工组 | employee |
+--------+------+-----------+----------+
2 rows in set (0.00 sec)
5 act_hi_identitylink
mysql> select * from act_hi_identitylink;
+-------+-----------+-----------+--------------------------------------+----------+---------------+
| ID_ | GROUP_ID_ | TYPE_ | USER_ID_ | TASK_ID_ | PROC_INST_ID_ |
+-------+-----------+-----------+--------------------------------------+----------+---------------+
| 95001 | group1 | candidate | NULL | task1 | NULL |
| 95003 | group2 | candidate | NULL | task2 | NULL |
| 95005 | NULL | candidate | user1 | task2 | NULL |
+-------+-----------+-----------+--------------------------------------+----------+---------------+
3 rows in set (0.00 sec)
来源:oschina
链接:https://my.oschina.net/u/4385759/blog/3274937