关于jbpm5的人工任务实现这里提供一个思路
流程图如下:
有一个流程变量会记录会签人员列表,在分支节点会判断会签人员列表是否为空,为空就会签结束,不然就走到会签节点为剩余的会签人员创建任务
而每个会签人员处理完任务后,就会从流程变量中的会签人员列表中将该人员移除,这个是思路。
而每个会签人员处理完任务后,就会从流程变量中的会签人员列表中将该人员移除,这个是思路。
在流程中创建流程变量的方式
这个变量会在发起流程的时候初始化,或在任务处理的时候更新
而在分支节点的判断逻辑是
<!--StartFragment -->
最后是测试代码
private void test_05_多任务审批(StatefulKnowledgeSession session) { org.jbpm.task.service.TaskService internalTaskService = knowledgeSessionTemplate.getInternalTaskService(); TaskServiceSession taskServiceSession = internalTaskService.createSession(); taskServiceSession.addUser(new User("Administrator")); taskServiceSession.addUser(new User("zhangsan")); taskServiceSession.addUser(new User("lisi")); taskServiceSession.addUser(new User("wangwu")); taskServiceSession.dispose(); Map<String, Object> variableMap = new HashMap<String, Object>(); variableMap.put("actors", "zhangsan,lisi,wangwu"); ProcessInstance pi = session.startProcess("defaultPackage.New_Process", variableMap); WorkflowProcessInstance wfpi = (WorkflowProcessInstance)pi; String actors = (String)wfpi.getVariable("actors"); TaskService taskService = knowledgeSessionTemplate.getTaskService(); printTasks(taskService); long taskid = taskService.getTasksAssignedAsPotentialOwner("zhangsan", "en-UK").get(0).getId(); actors = handleTask(session, taskService, actors, "zhangsan", taskid, pi.getId()); printTasks(taskService); taskid = taskService.getTasksAssignedAsPotentialOwner("wangwu", "en-UK").get(0).getId(); actors = handleTask(session, taskService, actors, "wangwu", taskid, pi.getId()); printTasks(taskService); taskid = taskService.getTasksAssignedAsPotentialOwner("lisi", "en-UK").get(0).getId(); actors = handleTask(session, taskService, actors, "lisi", taskid, pi.getId()); printTasks(taskService); } private void printTasks(TaskService taskService) { List<TaskSummary> tasks1 = taskService.getTasksAssignedAsPotentialOwner("zhangsan", "en-UK"); List<TaskSummary> tasks2 = taskService.getTasksAssignedAsPotentialOwner("lisi", "en-UK"); List<TaskSummary> tasks3 = taskService.getTasksAssignedAsPotentialOwner("wangwu", "en-UK"); System.err.println("张三 :" + tasks1); System.err.println("李四 :" + tasks2); System.err.println("王五 :" + tasks3); } private String handleTask(StatefulKnowledgeSession session, TaskService taskService, String actors, String actor, long taskid, long piid) { String newActors = resetActors(actors, actor); ((WorkflowProcessInstance)session.getProcessInstance(piid)).setVariable("actors", newActors); // taskService.claim(taskid, actor); taskService.start(taskid, actor); taskService.complete(taskid, actor, null); ProcessInstance pi = session.getProcessInstance(piid); if(pi != null) { return ((WorkflowProcessInstance)pi).getVariable("actors").toString(); } return ""; } private String resetActors(String actors, String actor) { String[] actorArr = actors.split(","); StringBuffer sb = new StringBuffer(); for (String a : actorArr) { if (!a.equals(actor)) { sb.append(a).append(","); } } int i = sb.lastIndexOf(","); if(i!=-1){ sb.deleteCharAt(i); } return sb.toString(); }
测试结果
相关推荐
5.4TaskService 16 5.5ProcessDefinition 16 5.6ProcessInstance 16 5.7Execution 17 6 管理流程定义 18 6.1设计流程定义文档 18 6.1.1图片 18 6.1.2jpdl.xml文件 18 6.2部署流程定义 19 6.3删除流程定义 20 6.4查询...
BPM4工作流应用开发指南 《jBPM4工作流应用开发指南》是2010...306 第20章 中国特色工作流的jBPM实现 307 20.1 退回 308 20.2 取回 313 20.3 会签 318 20.4 委派 326 20.5 自由流 331 20.6 小结 332 附录A jBPM术语 334
...................................15 1.3.3 测试helloworld流程......................16 第 2 章 jBPM 基础...........................................19 2.1 JbpmConfiguration和 JbpmContext..................
...................................15 1.3.3 测试helloworld流程......................16 第 2 章 jBPM 基础...........................................19 2.1 JbpmConfiguration和 JbpmContext..................
scratch少儿编程逻辑思维游戏源码-皮博冒险者.zip
少儿编程scratch项目源代码文件案例素材-这是之前下载的测试.zip
scratch少儿编程逻辑思维游戏源码-汽车冲突.zip
scratch少儿编程逻辑思维游戏源码-梦幻岛 3D.zip
scratch少儿编程逻辑思维游戏源码-收集水果.zip
炫酷蓝色响应式投稿说明源码.zip
机器学习算法与应用大作业-基于预处理的小麦品种的分类和聚类源码+数据+使用说明.zip是个人经导师指导并认可通过的高分设计项目,评审分98分。主要针对计算机相关专业的正在做大作业的学生和需要项目实战练习的学习者,可作为课程设计、期末大作业。。内容来源于网络分享,如有侵权请联系我删除。
vs2019_Qt5.12.12编译好的ffmpeg库,因为是c接口,别的版本理论也可以用
scratch少儿编程逻辑思维游戏源码-欧力多.zip
少儿编程scratch项目源代码文件案例素材-越野运动员.zip
GUI开发_CMake_MSVC_CLion_ElaWidgetTools_跨平台界面组件库_简化项目结构_降低上手难度_提供完整编译环境配置_支持Windows11开发_快速集成
scratch少儿编程逻辑思维游戏源码-时间先生.zip
少儿编程scratch项目源代码文件案例素材-爪猫使命召唤.zip
内容管理系统_SpringBootThymeleaf双引擎解析_梦想家CMS开源建站系统_面向政府企业组织快速搭建展示型网站如企业官网技术博客信息门户等解决建站成本高周期长问题
健康监测与运动数据自动化_云函数部署与定时任务管理_乐心健康APP账号绑定与步数同步_通过腾讯云函数和青龙面板实现自动刷步并同步至蚂蚁森林获取每日296g能量的智能脚本系统_适用于
动态雨滴玻璃掉落个人主页源码.rar