关于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(); }
测试结果
相关推荐
7. **持久化框架**: JBPM5.4采用了JPersistence API,实现了流程实例和相关数据的持久化,确保流程实例的持久性,即使系统重启,也能恢复到之前的状态。 8. **工作流设计器**: JBPM提供了一个基于Eclipse的流程设计...
JBPM5.4是该系统的一个版本,它在之前的基础上进行了优化和增强,提供了更为灵活和强大的流程管理功能。在本篇文章中,我们将深入探讨JBPM5.4的一些关键特性、工作原理以及如何通过实例进行学习。 1. **流程定义与...
【JBPM5.4 SSH 完整项目整合案例】是一个基于Java企业级开发的实践项目,它涵盖了三个关键的技术栈:Struts2(S),Spring(S)和Hibernate(H),通常称为SSH框架。这个项目旨在展示如何将业务流程管理(BPM)工具...
启动服务器,如果配置无误,应用就能正常运行,实现SSH框架与JBPM5.4的协同工作,为用户提供流程驱动的业务功能。 这个整合涉及到的技术点广泛,包括Web应用架构设计、MVC模式、依赖注入、数据库操作、业务流程建模...
基于java及JBPM5.4流程引擎技术开发.鉴于JBPM5.4版本较新,而目前网上基本上没有对应的简单实例,更不要说负责案例及项目设计。 本课程是在国内没有任何中文文档的情况下,完全靠翻译国外的英文文档并结合项目应用...
这个项目组合提供了从表现层到数据持久化层的全面解决方案,并通过jbpm5.4来实现流程自动化和工作流管理。 Spring框架是SSH的核心部分,它负责管理应用对象的生命周期和依赖关系,提供了AOP(面向切面编程)和IoC...
最近初学JBPM,费了很大的劲,因为网上的资料要么是代码,要么是文档,看了两天没有头绪,后来静了下来,仔细看代码和文档(通过代码学习文档,通过文档学习代码),再加上前两天知识的积蓄,终于对JBPM5.4,以及Spring+...
jbpm5.4_Final_Api.CHM
在中文环境中,关于JBPM5.4的资料相对较少,因此,这套教程将深入探讨如何在国内没有中文文档支持的情况下,通过翻译英文文档和实际项目应用来掌握JBPM5.4的使用,确保开发者能够顺利地进行工作流开发。 **1. 安装...
5. **安全控制**:JBPM5.4提供了用户权限和角色管理,可以与Spring Security或Struts2的权限控制相结合,实现对流程操作的细粒度访问控制。 6. **日志与监控**:Spring和JBPM都可以集成日志框架,如Log4j,进行详细...
jBPM is a flexible Business Process Management (BPM) Suite. It's light-weight, fully open-source (distributed under Apache license) and written in Java. It allows you to model, execute and monitor ...
最后,**学习资源**:提供的"第二部分、安装和配置JBPM5.4及Eclipse流程插件安装"文件可能包含了详细的教程和示例,建议仔细阅读,结合实践操作加深理解。 通过以上步骤,你可以成功地在Eclipse环境中搭建起一个...
jbpm5.4与Spring MVC的集成是企业级应用开发中的常见组合,它结合了jbpm(业务流程管理)的强大功能和Spring MVC的灵活控制层架构。以下将详细阐述这一集成涉及的关键知识点: 1. **jbpm5.4**:jbpm是一个开源的...
CSDN首发jBPM5.4 API文档,带索引
基于java及JBPM5.4流程引擎技术开发.鉴于JBPM5.4版本较新,而目前网上基本上没有对应的简单实例,更不要说负责案例及项目设计。 本课程是在国内没有任何中文文档的情况下,完全靠翻译国外的英文文档并结合项目应用...
JBPM5.4是该框架的一个重要版本,提供了丰富的功能和改进,使得开发者能够更有效地构建和管理业务流程。 首先,让我们详细了解一下如何安装JBPM5.4: 1. **下载JBPM5.4**:访问JBPM官方网站或通过Git仓库获取最新...
jbpm5.4信用卡发放流程源代码是一款基于jbpm5.4版本的工作流管理系统实现的信用卡审批流程示例。jbPM(Java Business Process Management)是一个开源的企业级工作流和业务流程管理框架,它允许开发者设计、执行和...
基于java及JBPM5.4流程引擎技术开发.鉴于JBPM5.4版本较新,而目前网上基本上没有对应的简单实例,更不要说负责案例及项目设计。 本课程是在国内没有任何中文文档的情况下,完全靠翻译国外的英文文档并结合项目应用...