Spring activiti 笔记1
1 bpmn流程图解析
Assignee:指定单个办理人(执行task的人),实现个人任务,流程中的某个任务由指定的user来执行
way1:直接指定,输入办理人即可
way2:通过流程变量指定办理人(使用#{}或${}获取流程实例启动时,通过.startProcessInstanceByKey(processDefinitionKey,variables)流程变量传入的值)
way3:通过类来指定办理人(delegateTask.setAssignee("指定办理人"))
Candidate:组任务,流程中的某个任务由指定的group来完成,其中group由多个user组成,组任务中只要有一人审批了申请,组任务代表完成了,进入了下一个节点
Candidate user separated:指定组任务
方法一:直接指定
可以在程序中通过
taskService.addCandidateUser("taskId","userId")添加组成员
.deleteCandidateUser("taskId","userId")删除组成员
.claim("taskId","userId");拾取任务,将组任务分配给个人任务
.claim("taskId",null);将个人任务退回到组任务(之前必须是组任务)
方法二:通过流程变量分配(同个人任务分配一样)
variables.put("userIDs","大大,中中,小小");
方法三:通过类来分配(同个人任务分配一样)
只是在方法内部调用的是:delegateTas.addCandidateUser()或者.addCandidateUsers()方法
Candidate group separated:指定组任务分配给角色
可以在流程发布时,设定相应的角色和用户
添加角色:identityService.saveGroup(new GroupEntity(groupId));
添加用户:identityService.saveUser(new UserEntity(userId));
添加两者间的关系:identityService.createMembership(userId,groupId)
总结:assignee 和candidate都代表审批人,用哪个需要根据业务具体分析:对于部门领导审批,就需要用candidate,因为有多个,而对于调整申请和销假,就用assignee,因为要请假发起人只有一个
Form Key:表单id,用于程序内部识别(表单链接)
方法一(动态表单):在Form属性中指定各个字段
方法二(外置表单):在Main config属性中的Form key字段中指定.form文件的路径
方法三(普通表单):在Main config属性中的Form key字段中指定存放表单的页面 (jsp,html,jsf等)