主页 > 创业  > 

第五章activiti流程“权限与部署指挥部”

第五章activiti流程“权限与部署指挥部”
一、用户与组——流程世界的“工牌与部门” 1. 用户管理(工牌颁发) 核心表:ACT_ID_USER(存储用户信息)代码操作:IdentityService identityService = engine.getIdentityService(); // 创建用户 User user = identityService.newUser("zhangsan"); user.setFirstName("三"); user.setLastName("张"); user.setEmail("zhangsan@company "); identityService.saveUser(user); // 查询用户 User dbUser = identityService.createUserQuery().userId("zhangsan").singleResult();

避坑指南:用户ID必须唯一,建议用工号或用户名!

2. 组管理(部门划分) 核心表:ACT_ID_GROUP(部门/角色信息)代码操作:// 创建组(如部门或角色) Group group = identityService.newGroup("hr"); group.setName("人力资源部"); group.setType("department"); // 类型:department/role等 identityService.saveGroup(group); // 查询组 Group hrGroup = identityService.createGroupQuery().groupId("hr").singleResult();
二、用户与组的关系——分配“部门工牌” 1. 用户加入组 identityService.createMembership("zhangsan", "hr"); // 用户zhangsan加入hr组 2. 查询组内成员 List<User> hrMembers = identityService.createUserQuery() .memberOfGroup("hr") .list(); // 获取人力资源部所有成员

趣味测试❓: 如果用户同时属于多个组(如hr和manager),如何查询他所有任务? 答案:用.memberOfGroup("hr").memberOfGroup("manager")链式调用!


三、流程部署——发布“作战计划” 1. 部署方式三连击 方式代码示例适用场景Classpath资源部署.addClasspathResource("processes/leave.bpmn")开发环境快速测试ZIP压缩包部署.addZipInputStream(zipStream)批量部署流程图+表单数据库直接部署.addBytes("leave.bpmn", bpmnBytes)动态生成流程文件的场景 2. 代码实战 RepositoryService repositoryService = engine.getRepositoryService(); Deployment deployment = repositoryService.createDeployment() .name("请假流程V2.0") .addClasspathResource("processes/leave.bpmn") .addClasspathResource("forms/leave-form.xml") .deploy(); // 执行部署! System.out.println("部署ID:" + deployment.getId()); 3. 部署验证 // 查询流程定义 ProcessDefinition processDef = repositoryService.createProcessDefinitionQuery() .deploymentId(deployment.getId()) .singleResult(); // 验证结果 assert processDef != null : "流程部署失败!";
四、高级权限控制——动态任务分配 1. 任务候选人设置

在BPMN中配置用户组为任务候选人:

<userTask id="hrApprove" name="HR审批"> <extensionElements> <activiti:candidateGroups>hr</activiti:candidateGroups> </extensionElements> </userTask> 2. 代码中认领任务 Task task = taskService.createTaskQuery().taskCandidateGroup("hr").singleResult(); taskService.claim(task.getId(), "zhangsan"); // 张三认领HR审批任务
五、避坑指南——权限与部署的“暗雷” 1. 用户组未绑定任务

症状:任务查询为空,但流程已启动。 检查项:

BPMN中是否配置了activiti:candidateUsers或activiti:candidateGroups。 2. 部署资源冲突

症状:重复部署同名流程导致版本混乱。 解法:

查询已部署流程,先删除旧版本:repositoryService.deleteDeployment(oldDeploymentId, true); // true表示级联删除
六、课后挑战——巩固你的“管理权杖”

选择题:删除用户时,如果用户已关联任务,会发生什么? A. 自动解除关联 B. 抛出异常 C. 任务被删除

实战题:创建一个“财务部”组,将用户“lisi”加入,并部署一个报销流程,任务候选人设为财务部。


标签:

第五章activiti流程“权限与部署指挥部”由讯客互联创业栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“第五章activiti流程“权限与部署指挥部”