5.3. 创建服务任务
服务任务是根据 Web 服务调用或 Java 类方法执行操作的任务。服务任务示例包括在执行这些任务时发送电子邮件和日志信息。您可以定义与服务任务关联的参数(输入)和结果(输出)。您还可以定义包含所有输入到单个对象中的嵌套参数。要定义嵌套参数,请使用 Wrapped': 'True
在数据分配中创建一个新的工作项目处理程序。Service 任务应该有一个进入的连接和一个传出的连接。
流程
- 在 Business Central 中,选择屏幕右上角的 Admin 图标,然后选择 Artifacts。
- 单击 Upload 以打开 Artifact 上传 窗口。
选择
.jar
文件并点击 。重要.jar
文件包含数据类型(数据对象)以及 web 服务和 Java 服务任务的 Java 类。- 创建一个要使用的项目。
-
进入您的项目 Settings
Dependencies。 -
单击 Add from repository,找到上传的
.jar
文件,然后单击 Select。 -
打开您的项目 Settings
Work Item Handler。 在给定字段中输入以下值:
-
Name -
Service Task
-
Value -
new org.jbpm.process.workitem.bpmn2.ServiceTaskHandler(ksession, classLoader)
-
Name -
保存项目。
创建 web 服务任务示例
BPMN2 规格中的服务任务的默认实现是 Web 服务。Web 服务支持基于 Apache CXF 动态客户端,它提供实现
WorkItemHandler
接口的专用服务任务处理程序:org.jbpm.process.workitem.bpmn2.ServiceTaskHandler
要使用 web 服务创建服务任务,您必须配置 web 服务:
- 创建业务流程。
- 如有必要,在屏幕右上角点击 Properties 图标。
- 点击 Imports 属性中的 打开 Imports 窗口。
单击 WSDL Imports 旁边的 +Add,以导入所需的 WSDL(Web 服务描述语言)。例如:
位置 :
http://localhost:8080/sample-ws-1/SimpleService?wsdl
位置指向服务的 WSDL 文件。
Namespace:
http://bpmn2.workitem.process.jbpm.org/
命名空间必须与 WSDL 文件中的
targetNamespace
匹配。
- 在进程设计器中,从工具面板选择 Activities 工具。
- 选择 Service Task。
- 点进程设计器的空白区域。
根据需要添加或者定义下表中列出的任务信息。
表 5.4. Web 服务任务参数 标签 描述 Name
service 任务的名称。您还可以双击服务任务形图来编辑名称。
Documentation
输入任务的描述。此字段中的文本包含在流程文档中。单击流程设计器左上角的 Documentation 选项卡,以查看流程文档。
实施
指定一个 Web 服务。
Interface
此服务用于实施脚本,如
CountriesPortService
。操作
接口调用的操作,如
getCountry
。分配
点击 添加本地变量。
adhoc Autostart
如果这是应自动启动的临时任务,请选择此项。adhoc Autostart 使任务能够在创建进程或案例实例时自动启动,而不是由启动任务启动。它通常用于管理。
is Async
选择 if should异步调用此任务。如果无法即时执行任务,则进行异步任务,例如由外部服务执行的任务。
是多个实例
如果此任务具有多个实例,请选择此项。
MI 执行模式
选择多个实例是否并行或按顺序执行。
MI Collection 输入
指定代表创建新实例的元素集合的变量,如
inputCountryNames
。MI 数据输入
指定传输到 web 服务的输入数据分配,如
Parameter
。MI Collection 输出
来自 web 服务任务返回的值的数组列表,如
outputCountries
。MI 数据输出
指定 web 服务任务的输出数据分配,它将保存在服务器上类执行的结果,如
Result
。MI Completion Condition(mvel)
指定每个完成实例上评估的 MVEL 表达式,以检查指定的多个实例节点是否可以完成。
On Entry Action
Java、JavaScript 或 MVEL 脚本,用于指定任务开头的操作。
在退出操作中
Java、JavaScript 或 MVEL 脚本,用于指定任务末尾的操作。
SLA 过期日期
服务级别协议(SLA)过期的日期。
元数据属性
添加要用于自定义事件监听程序的任何自定义元数据属性名称和值,例如在出现 metadata 属性时实施某些操作的监听程序。
Metadata Attributes 可启用对 BPMN 图表的新
metaData
扩展,并修改整个任务的行为。
创建 Java 服务任务示例
使用 Java 方法创建服务任务时,方法只能包含一个参数,并返回单个值。要使用 Java 方法创建服务任务,您必须将 Java 类添加到项目的依赖项中:
- 创建业务流程。
- 在进程设计器中,从工具面板选择 Activities 工具。
- 选择 Service Task。
- 点进程设计器的空白区域。
- 如有必要,在屏幕右上角点击 Properties 图标。
根据需要添加或者定义下表中列出的任务信息。
表 5.5. Java 服务任务参数 标签 描述 Name
service 任务的名称。您还可以双击服务任务形图来编辑名称。
Documentation
输入任务的描述。此字段中的文本包含在流程文档中。单击流程设计器左上角的 Documentation 选项卡,以查看流程文档。
实施
指定任务在 Java 中实施。
Interface
用于实施脚本的类,如
org.xyz.HelloWorld
。操作
接口调用的方法,如
sayHello
。分配
点击 添加本地变量。
adhoc Autostart
如果这是应自动启动的临时任务,请选择此项。adhoc Autostart 使任务能够在创建进程或案例实例时自动启动,而不是由启动任务启动。它通常用于管理。
is Async
选择 if should异步调用此任务。如果无法即时执行任务,则进行异步任务,例如由外部服务执行的任务。
是多个实例
如果此任务具有多个实例,请选择此项。
MI 执行模式
选择多个实例是否并行或按顺序执行。
MI Collection 输入
指定代表创建新实例的元素集合的变量,如
InputCollection
。MI 数据输入
指定转移到 Java 类的输入数据分配。例如,您可以将输入数据分配设置为
Parameter
和ParameterType
。ParameterType
代表Parameter
的类型,并将参数发送到 Java 方法的执行。MI Collection 输出
存储在 Java 类返回的值的数组列表中,如
OutputCollection
。MI 数据输出
指定 Java 服务任务的输出数据分配,它将保存在服务器上类执行的结果,如
结果
。MI Completion Condition(mvel)
指定每个完成实例上评估的 MVEL 表达式,以检查指定的多个实例节点是否可以完成。例如,
OutputCollection.size()<= 3
代表没有解决三个以上的人员。On Entry Action
Java、JavaScript 或 MVEL 脚本,用于指定任务开头的操作。
在退出操作中
Java、JavaScript 或 MVEL 脚本,用于指定任务末尾的操作。
SLA 过期日期
服务级别协议(SLA)过期的日期。
元数据属性
添加要用于自定义事件监听程序的任何自定义元数据属性名称和值,例如在出现 metadata 属性时实施某些操作的监听程序。
Metadata Attributes 可启用对 BPMN 图表的新
metaData
扩展,并修改整个任务的行为。
- 点击 Save。