flowable03任务
RecieveTask : 接收任务
用来等待外部消息或者信号回来 触发流程继续==》 比如等待支付结果,等待第三方系统回调
recieveTask需要触发一下,,才会往下执行
@Testpublic void test06(){RuntimeService runtimeService = processEngine.getRuntimeService();List<Execution> list = runtimeService.createExecutionQuery().activityId("sid-3B12C948-9846-4629-81F1-415B7313F035").list();for (Execution execution : list) {logger.info(execution.getId());// 触发往下执行 ===》 接收任务: 等待外部消息或者信号回来触发流程继续,,,比如等待支付结果,等待第三方系统回调灯runtimeService.trigger(execution.getId());}}
用户任务
- 直接指定变量
- 设置发起人 就是 用户任务的执行人
- 绑定监听器来设置 执行人
处理任务:委派给别人处理 或者 自己处理
@Testpublic void test07(){TaskService taskService = processEngine.getTaskService();List<Task> list = taskService.createTaskQuery().taskAssignee("ww").list();for (Task task : list) {logger.info("name:{},assignee:{}", task.getName(), task.getAssignee());// 自己处理
// taskService.complete(task.getId());// 委派给别人处理taskService.setAssignee(task.getId(),"waterkid");}}
可以动态指定执行人,,,也可以不指定执行人,,,设置候选用户,,候选用户去接收任务之后,才会变成执行人
查找作为候选人的任务:
@Testpublic void test09(){TaskService taskService = processEngine.getTaskService();List<Task> taskList = taskService.createTaskQuery().taskCandidateUser("wwww").list();for (Task task : taskList) {logger.info("name:{},CreateTime:{}", task.getName(), task.getCreateTime());}}
查找某个流程实例的参与人有哪些:
@Testpublic void test10(){TaskService taskService = processEngine.getTaskService();RuntimeService runtimeService = processEngine.getRuntimeService();// 获取流程的参与者List<IdentityLink> links = runtimeService.getIdentityLinksForProcessInstance("45001");for (IdentityLink link : links) {logger.info("流程参与人:{}",link.getUserId());}}
任务认领:
// 任务认领
taskService.claim(task.getId(),"wwww");// 取消任务认领taskService.setAssignee(task.getId(),null);// 委派给别人处理
taskService.setAssignee(task.getId(),"waterkid");// 自己处理taskService.complete(task.getId());
候选人也可以通过变量和监听器来赋值,,如果是直接通过变量,设置的时候用,分割多个用户,,
监听器通过delegateTask.addCandidateUser("xxx")
// 删除候选人:
taskService.deleteCandidateUser(task.getId(),"xxx")// 添加候选人
taskService.addCandicateUser(task.getId,"xxxx)
按照角色来获取任务,,,设置候选组
找到这个候选组的任务List<Task> taskList = taskService.createTaskQuery().taskCandidateGroup("xxx").list();, 找到之后,,就能通过taskService和 taskId 去委派,认领,完成,撤销任务等
候选组也可以通过变量传入
ServiceTask 服务任务
直接执行的任务: 可以直接指定全限定类名,也可以指定委托表达式,什么是委托表达式???,
委托表达式: delegate expression : 返回了一个实现JavaDelegate 或者 ActivityBehavior接口的bean,
委托表达式通过表达式从spring容器中获取Bean,,因此可以使用依赖注入,而且也不用写死类名
而java类是直接制定一个完整的类名,,Flowable会反射实例化这个类,,这个类不需要spring管理,,因此不能使用spring的依赖注入
也可以通过指定表达式来指定,某个spring对象的某个方法:

