jbpm4.4用户手册(6)

2019-05-18 12:56

taskService.completeTask(taskId, outcome); taskService.completeTask(taskId, outcome, variables); 这些API允许提供一个变量map,它在任务完成之前作为流程变量添加到流程里。 它也可能提供一个“外出outcome”,这会用来决定哪个外出转移会被选中。 逻辑如下所示:

如果一个任务拥有一个没用名称的外向转移:

? ? ? ?

taskService.getOutcomes() 返回包含一个null值集合,。 taskService.completeTask(taskId) 会使用这个外向转移。

taskService.completeTask(taskId, null) 会使用这个外向转移。 taskService.completeTask(taskId, \会抛出一个异常。 如果一个任务拥有一个有名字的外向转移:

? ? ? ? ?

gtaskService.getOutcomes() 返回包含这个转移名称的集合。

taskService.completeTask(taskId) 会使用这个单独的外向转移。 taskService.completeTask(taskId, null) 会抛出一个异常(因为这里没有无名称的转移)。

taskService.completeTask(taskId, \会抛出一个异常。 taskService.completeTask(taskId, \会根据给定的名称使用转移。

如果一个任务拥有多个外向转移,其中一个转移没有名称,其他转移都有名称:

?

taskService.getOutcomes() 返回包含一个null值和其他转移名称的集合。

taskService.completeTask(taskId) 会使用没有名字的转移。 ? taskService.completeTask(taskId, null) 会使用没有名字的转移。 ? taskService.completeTask(taskId, \会抛出异常。 ? taskService.completeTask(taskId, \会使用名字为'myName'的转移。

?

如果一个任务拥有多个外向转移,每个转移都拥有唯一的名字:

? ? ? ? ?

taskService.getOutcomes() 返回包含所有转移名称的集合。

taskService.completeTask(taskId) 会抛出异常,因为这里没有无名称的转移。

taskService.completeTask(taskId, null) 会抛出异常,因为这里没有无名称的转移。

taskService.completeTask(taskId, \会抛出异常。 taskService.completeTask(taskId, \会使用名字为'myName'的转移。

任务可以拥有一批候选人。候选人可以是用户也可以是用户组。 用户可以接收自己是候选人的任务。 接收任务的意思是用户会被设置为被分配给任务的人。 在那之后,其他用户就不能接收这个任务了。

人们不应该在任务做工作, 除非他们被分配到这个任务上。 用户界面应该显示表单,并允许用户完成任务, 如果他们被分配到这个任务上。对于有了候选人,但是还没有分配的任务, 唯一应该暴露的操作就是“接收任务”。 更多的任务见第 6.2.6 节 “task” 。

5.8. HistoryService历史服务

在流程实例执行的过程中,会不断触发事件。 从那些事件中,运行和完成流程的历史信息会被收集到历史表中。 HistoryService提供了 对那些信息的访问功能。

如果想查找某一特定流程定义的所有流程实例, 可以像这样操作:

List historyProcessInstances = historyService .createHistoryProcessInstanceQuery() .processDefinitionId(\ .orderAsc(HistoryProcessInstanceQuery.PROPERTY_STARTTIME) .list(); 单独的活动流程也可以作为HistoryActivityInstance 保存到历史信息中。 List histActInsts = historyService .createHistoryActivityInstanceQuery() .processDefinitionId(\ .activityName(\ .list(); 也可以使用简易方法avgDurationPerActivity和 choiceDistribution。 可以通过javadocs获得这些方法的更多信息。

有时,我们需要获得指定流程实例已经过的节点的完整列表。 下面的查询语句可以用来获得所有已经执行的节点列表:

List histActInsts = historyService .createHistoryActivityInstanceQuery() .processInstanceId(\ .list(); 上面的查询与通过execution id查询有一些不同。有时execution id和流程实例id是不同的, 当一个节点中使用了定时器,execution id中就会使用额外的后缀, 这就会导致当我们通过execution id查询时, 这个节点不会出现在结果列表中。

5.9. ManagementService管理服务

管理服务通常用来管理job。可以通过javadocs获得这些方法的更多信息。 这个功能也是通过控制台暴露出来。

5.10. 查询 API

从jBPM 4.0开始,一个新的API被介绍使用查询系统, 可以覆盖大多数你可以想到的查询。开发者需要编写企业特定查询时 当然也可以使用Hibenrate。但是对大多数用例来说, 查询API是不足够的。 查询可以写成同ideas方式,用于主要的jBPM概念: 流程实例,任务,发布,历史流程,等等。 比如:

List results = executionService.createProcessInstanceQuery() .processDefinitionId(\ss_definition\ .notSuspended() .page(0, 50) .list(); 这个例子返回指定流程定义的所有流程实例, 流程定义不是暂停的。结果支持分页,第一页的前50条数据 会被我们获得。 查询任务也可以使用相同的方式完成:

List myTasks = taskService.createTaskQuery() .processInstanceId(piId) .assignee(\ .page(100, 120) .orderDesc(TaskQuery.PROPERTY_DUEDATE) .list(); 这个查询会获得指定流程实例,分配给John的所有任务,也使用分页,对duedate进行逆序查询。

每个服务拥有操作这些统一查询的功能(比如,查询job通过

ManagementService,查询完成的 流程实例通过HistoryService。 可以参考服务的javadoc了解这些查询API的所有细节。)

第 6 章 jPDL

这章将会解释用来描述流程定义的 jPDL文件格式。jDPL是jBPM的突出的流程语言。jPDL的目标 是尽量精简和尽可能的开发者友好,在提供所有你期望 从BPM流程语言中获得功能的同时。

jPDL的schema文件包含了比这个文档中更多的属性和元素。 这个文档解释了jPDL中稳定的被支持的部分。 试验性的、不支持的jPDL特性可以在开发者指南中找到。

下面是一个jPDL流程文件的例子:

6.1. process流程处理

顶级元素(element)是流程处理定义。 表 6.1. process流程处理的属性 属性 name名称 类型 文本 默认值 是否必须 必须 描述 在与用户交互时, 作为流程名字显示的一个名字或是标签。 key键 用来辨别不同的流程定字母如果省略,key中义。 拥有同一个key的流或数的非字母和非数可选程会有多个版本。 对于所字,下字的字符会被替(optional) 有已发布的流程版本,划线 换为 下划线。 key-name这种组合都必须是 完全一样的。 比已部署的key相同的流程版本号高1, 如果还没有与之相同的可选 key的流程被部署,那么版本就从1开始。 version整型 版本 流程的版本号 表 6.2. process流程的元素

元素 description描述 个数 0个或1个 描述文本 流程中会有很多活动, 至少要有1个是启动的活动。 描述 activities活动 至少1个 6.2. 控制流程Activities活动

6.2.1. start启动

说明一个流程的实例从哪里开始。 在一个流程里必须有一个开始节点。 一个流程必须至少拥有一个开始节点。 开始节点必须有一个向外的流向,这个流向会在流程启动的时候执行。


jbpm4.4用户手册(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2012年度安全生产工作计划(厂级)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: