Service API
1,RepositoryService---流程资源服务接口,提供对流程定义的部署,查询,删除等操作。
2,ExecutionService---流程执行服务接口,提供启动流程实例,“执行”推进,设置流程变量等操作。
3,ManagementService---流程管理控制服务的接口,在jbpm4.3中只提供异步工作(job)相关的执行和查询操作
4,TaskService ---人工任务服务接口。提供对任务(Task)的创建,提交,查询,保存,删除等操作。
5,HistoryService --- 流程历史服务接口。提供对流程历史库(已完成的流程实例)中历史流程实例,历史活动实例等记录的查询操作。还提供诸如某个流程定义所有活动的平均持续时间,某个流程定义中某转移的经过次数等数据分析服务。
6,IdentifyService ---身份认证的服务接口。提供对流程用户,用户组,以及组成关系的相关服务
控制流程Activities活动
start (开始活动) :整个流程的开始节点,所有的流程实例从这里开始。在一个流程定义里必须有一个start活动,start活动必须有一个流出转移(transition)
state(状态活动) :State节点也叫手工节点,进入到这种节点,整个流程的执行就会中断。直到系统外参与者发起继续执行的命令,业务程序实例的执行才能够继续下去。
decision(判断活动) :一个decision用以决定在多个执行路径中哪个才可以被执行。 Decision可以拥有多个流出转移,当流实例到达decision活动时会根据最先匹配成功的条件自动地通过相应的流出转移。
<decision name="evaluate document">
<transition to="submit document">
<condition expr="#{content=="good"}"/>
</transition>
<transition to="try again">
<condition expr="#{content=="not so good"}"/>
</transition>
</decision>
<decision name="evaluate document" expr="#{content}">
<transition name="good" to="submit document" />
<transition name="bad" to="try again" />
</decision>
Fork-join(分支-聚合活动):当流程需要并发执行的时候,就需要用到fork-join活动的组合,fork活动可以使流程在一条主干上出现并行的分支,join活动则可以使流程并行分支聚合成一条主干
End(结束节点) :对于每一个流程定义都会有一个或多个结束节点,与开始节点对应
Task(人工任务活动):一般用来处理及人机交互的活动
任务分配者(assignee):一个简单的任务会被分配给一个指定的用户
task候选人:任务可能被分配给一组用户,其中的一个用户应该接受这个任务并完成它。
任务分配处理器
ProcessDefinition/ProcessInstance/Execution/Task
ProcessDefinition:
流程的定义,这个id是{key}-{version}
ProcessInstance:
流程实例
开始了一个Process,需要完成任务,完成任务有以下几种方法:
1. ExecutionService来完成任务:
如果得到了正在执行的Execution(可以通过好几种途径获取),可以通过ExecutionService来完成这个Execution
executionService.signalExecutionById(executionId [, 可以有其他参数] );
2.TaskService来完成任务:
如果通过TaskService取到自己的任务(Task),完成任务可以通过TaskService来进行;
taskService.completeTask( taskid[, 可以有其他参数] );
获取文件内容
RepositoryService().getResourceAsStream(deploymentId, resourceName);
获取某节点的坐标
RepositoryService().getActivityCoordinates(processDefinitionId, activityName);
获取个人任务列表:
方式1:TaskService().findPersonalTasks(userId);
方式2,TaskService().createTaskQuery()//
.assignee(userId)//
.page(0, 1000)//
.list();
获取流程变量
1,TaskService.getVariable(taskId, variableName);
2,ExecutionService.getVariable(executionId, variableName);
拾取任务
1, TaskService.takeTask(taskId, userId),如果任务有assignee,则会抛异常。
2, processEngine.getTaskService().assignTask(taskId, userId),转交任务
最新的流程实例(查找 key为ICL的最新版本的流程定义, 然后在最新的流程定义里启动流程实例,当部署了一个新版本, startProcessInstanceByKey方法会自动切换到 最新部署的版本)
ProcessInstance processInstance = executionService.startProcessInstanceByKey("ICL");
新启动的流程实例分配一个key(业务key)(建议定义一个key)
ProcessInstance processInstance = executionService.startProcessInstanceByKey("ICL", "CL92837");
如果没有提供用户定义的key,数据库就会把主键作为key。 这样可以使用如下方式获得id:(不建议使用搜索,太耗资源)
ProcessInstance processInstance = executionService.startProcessInstanceByKey("ICL");
String pid = processInstance.getId();
获得用户的任务列表
List<Task> taskList = taskService.findPersonalTasks("tension");
读取任务数据variables
Set<String> variableNames = taskService.getVariableNames(taskId);
variables = taskService.getVariables(taskId, variableNames);
写入任务数据variables
variables = new HashMap<String, Object>();
variables.put("category", "small");
variables.put("lires", 923874893);
taskService.setVariables(taskId, variables);
查找某一特定流程定义的所有流程实例
List<HistoryProcessInstance> historyProcessInstances = historyService
.createHistoryProcessInstanceQuery()
.processDefinitionId("ICL-1")
.orderAsc(HistoryProcessInstanceQuery.PROPERTY_STARTTIME)
.list();
或者单独的活动
List<HistoryActivityInstance> histActInsts = historyService
.createHistoryActivityInstanceQuery()
.processDefinitionId("ICL-1")
.activityName("a")
.list();
获得所有已经执行的节点列表
List<HistoryActivityInstance> histActInsts = historyService
.createHistoryActivityInstanceQuery()
.processInstanceId("ICL.12345")
.list();
上面的查询与通过execution id查询有一些不同。有时execution id和流程实例id是不同的, 当一个节点中使用了定时器,execution id中就会使用额外的后缀, 这就会导致当我们通过execution id查询时, 这个节点不会出现在结果列表中。
返回指定流程定义的所有流程实例并分页
List<ProcessInstance> results = executionService.createProcessInstanceQuery()
.processDefinitionId("my_process_definition")
.notSuspended()
.page(0, 50)
.list();
获得所有查询任务并分页
List<Task> myTasks = taskService.createTaskQuery()
.processInstanceId(piId)
.assignee("tension")
.page(100, 120)
.orderDesc(TaskQuery.PROPERTY_DUEDATE)
.list();
分享到:
相关推荐
jBPM4作为该系列的一个版本,提供了一套完整的流程管理和执行框架,允许开发者构建灵活的工作流应用,以实现业务流程自动化。本指南由胡奇编写,旨在为开发者提供一个全面的参考,帮助他们快速学习和掌握使用jBPM4...
jbpm4jbpm5是关于jbpm流程管理框架的专题,涵盖了jbpm4和jbpm5两个主要版本。jbpm是一个开源的工作流管理系统,用于帮助开发者实现业务流程自动化。以下是基于给定文件的信息,深入解析jbpm4和jbpm5的知识点: 1. *...
**jbPM4工作流示例jbpmDemo**是一款基于jBPM4的工作流管理系统实例,旨在帮助用户深入了解和掌握jBPM4工作流引擎的使用方法。jBPM4是一款强大的开源工作流管理系统,它提供了流程建模、执行以及监控等功能,广泛应用...
这个"jbpm4案例源码"包含了jbpm4系统的核心组件和示例代码,帮助开发者深入理解jbpm4的工作原理和实践应用。《jBPM4工作流应用开发指南.pdf》这本书则进一步阐述了如何利用jbpm4来构建工作流应用。 jbpm4的核心功能...
【JBPM4 Java源代码分包详解】 JBPM4是一个流行的开源工作流管理系统,它提供了一整套用于设计、执行和管理业务流程的工具。在深入研究JBPM4的源代码时,我们可以从其包结构中了解到框架的核心功能和设计理念。 1....
### JBPM4 表结构详解 JBPM (JBoss Business Process Management) 是一款开源的工作流管理系统,被广泛应用于业务流程管理领域。JBPM4作为其一个版本,具有丰富的功能及特性,尤其在流程管理和任务分配方面表现突出...
jbpm4是一款强大的工作流管理系统,它提供了流程定义、流程实例管理、任务处理以及流程监控等一系列功能。在“jbpm4流程提交及执行完整代码”这个压缩包中,包含了实现jbpm4流程提交和执行所需的若干关键文件。下面...
**JBPM4与Spring整合详解** JBPM4(Java Business Process Management 4)是一个开源的工作流管理系统,它提供了业务流程的建模、部署、执行和监控功能。Spring框架则是Java应用开发中的一个核心组件,主要负责依赖...
**JBPM4 开发文档详解** JBPM4(Java Business Process Management 4)是一个轻量级的开源工作流管理系统,基于J2EE架构,旨在帮助开发者实现复杂的业务流程自动化。该项目于2004年10月18日发布2.0版本,并随后成为...
**jBPM4完整例子详解** jBPM4是一个企业级的工作流管理系统,它提供了强大的业务流程管理和工作流实现能力。这个"jBPM4完整例子"是一个基于SSH(Struts2、Spring、Hibernate)框架集成jBPM4.4的请假流程应用,非常...
jbpm4是一个基于Java的企业级工作流管理系统,用于设计、执行和管理业务流程。这个“jbpm4 完整的请假流程”是一个示例项目,旨在帮助初学者理解和实践jbpm4在处理业务流程,尤其是请假申请流程中的应用。在这个项目...
【jbpm4的员工请假例子原码】是一个基于jbpm4流程引擎的示例项目,展示了如何在企业中实现一个简单的员工请假流程。这个Web项目是完全开源的,可以通过Eclipse这样的集成开发环境来打开和运行,对于学习和理解jbpm4...
### JBPM4 常用表结构及其说明 JBPM4是JBPM(Java Business Process Model)的一个版本,主要用于提供业务流程管理的功能。它通过一组数据库表来支持工作流的执行与跟踪。本文将详细介绍JBPM4中的常用表结构及其...
【jbpm4基本jar包】是企业级工作流管理系统Jboss Business Process Management Suite(简称jbpm)的一个核心组件集合。jbpm4是一个开源的工作流程管理框架,它提供了强大的业务流程建模、执行和监控能力,使得开发...
JBPM4是一个强大的工作流管理系统,专为Java开发者设计,具备高度的可扩展性。它完全用Java语言编写,确保了跨平台的兼容性和良好的编程体验。JBPM4的核心特性之一是采用了Hibernate作为其持久层框架,使得数据管理...
**JBPM4环境搭建** JBPM(Java Business Process Management)是一款开源的工作流管理系统,它提供了对业务流程的建模、部署、执行和监控的能力。在本文中,我们将深入探讨如何搭建JBPM4.4的开发环境,这对于理解...
### JBPM4 每张表对应的含义 JBPM(JBoss Business Process Management)是一款开源的工作流管理系统,广泛应用于各种业务流程管理场景中。JBPM4版本是该系列中的一个重要版本,其数据库设计反映了该系统的核心功能...
JBPM4,全称为JBoss Business Process Management Suite,是一个基于Java的开源工作流管理系统,它提供了全面的业务流程管理功能,包括工作流引擎和基于Eclipse的图形化流程设计工具。该系统允许开发者和业务分析师...
【jBPM4学习总结】 jBPM,全称为Java Business Process Management,是一个开源的、灵活且可扩展的业务流程管理框架,涵盖了业务流程管理、工作流和服务协作等多个领域。自2004年10月加入JBoss组织后,jBPM逐渐成为...