| 在Human Task的配置界面中,可以定义此Human Task所关心的参数(Parameter)。注意,这里仅仅只是类型的声明,真正在此Human Task绑定到bpel流程中的时候,才会需要设置参数的值来源,下一节将会介绍。 Human Task Parameters(参数)的声明
在Human Task的配置界面中,可以定义此Human Task所关心的参数(Parameter)。注意,这里仅仅只是类型的声明,真正在此Human Task绑定到bpel流程中的时候,才会需要设置参数的值来源,下一节将会介绍。
参数的类型可以是简单类型,也可以是复杂类型。
这些参数主要是用于“界面的实现”。如果采用自动生成Display Form,则会依据这些Parameter来生成表单上的元素。
Human Task参数与流程变量的映射
在Human Task中的参数,到底初始数据来源自哪里,这是在 BPEL中定义的。如下图所示: 
上图中表示:ApplyUser这个参数值,来自于变量“client:VacationApplyProcessForm”中的Apply_User元素,而ApplyReason这个参数值,则来自于上一个Human Task所提交的任务信息数据中的ApplyReason元素。
在流程中获取Human Task任务提交后的数据
对Oracle BPEL来讲,每个human task任务在提交后,都会产生一个task message返回给引擎。而表单中的数据,就包含在task message中。主要是在“/task:task/task:payload”这个元素下。
首先,看一下在worklistapp中,表单中的数据元素如下:
|
<input name="_sl_ns0_cl_task_sl_ns0_cl_payload_sl_ns0_cl_ApplyUser"
type="text" value="jcooper" disabled dataType="string">
|
为了从task message提取数据,写入流程变量中,或者其他地方。一般会在Human Task之跟一个Assign活动,负责数据提取和转换。如下图所示。
此处需要注意的是,在图形化的编辑中,无法显示“/task:task/task:payload”下子节点,会报告如下错误:
但是,可以通过手工指明Xpath来制定要获取的真实元素,比如“/task:task/task:payload/task:ApplyUser”。当然这种手工输入带来的问题是比较麻烦的。
 |