现在假设存在这样一个流程:
首先需要进行复杂的鉴权,而且可能随着需求的变化而变化,这导致鉴权的流程也是时刻可能变化的。而只有当鉴权成功以后,才能执行实际的交易操作,例如向外部系统发送请求报文获取某些交易的数据。
这时,可以考虑将鉴权流程独立做成一个子流程,然后将其嵌入到主流程中去,适应局部流程变化而无需修改全局流程的问题,在子流程与主流程之间实际要做的就是约定数据的交换协议,即确定数据在子流程与主流程之间的流入与流出。
下面通过一个实际例子来说明并实践。
首先,定义主流程。
主流程包含鉴权的子流程,鉴权通过之后,收集鉴权过程中获取到的交易必需的数据,组装请求报文,流程定义如图所示:
对应的流程定义文件main-process.jpdl.xml,如下所示:
上面,sub-process-key="SubCheckProcess"表示一个嵌入主流程中的鉴权子流程。通过流程定义文件内容,可以看到,在主流程与子流程之间交换数据,是通过变量myRequest来实现的:
<parameter-in>元素表示从主流程MainProcess中流入到子流程SubCheckProcess中变量为myRequest,而var="myRequest"表示在主流程中变量名称,而subvar="myRequest"表示在子流程中可以通过获取到myRequest变量从而得到数据。同理,<parameter-out>元素表示从子流程SubCheckProcess中流出到MainProcess中,将数据又传回主流程中,继续后续流程的操作。