一个成熟的工作流管理系统,其引擎对于子流程功能的支持必然是不可少的,这好比是一门编程语言支持函数那么普遍一样。在当前Workflow, BPM, EAI产品的建模工具中,对于子流程/子过程的应用如家常便饭一样,无处不在——是的,随着流程建模工具的日益强大、企业业务过程的日趋复杂及集成要求的不断增长,把相似的“过程”封装成一个个可调用的过程“函数”已经是一个不可缺少的功能了。
下面的内容,主要就以在工作流引擎系统中子流程功能的设计展开。注意:这里父流程指的是主动调用的流程;子流程指的是被动被调用的流程;由XPDL作为建模示范。
建模设计——父流程中描述子流程的XPDL片段及解释
1、子流程(SubFlow)作为父流程中的一种特殊的活动出现。
2、子流程活动的执行(Implementation)节点描述了子流程的同步异步策略以及父流程向子流程提供的实际输入参数(实参)。
实参匹配规则:
如果实参与形参(子流程定义的参数)的数量和类型完全匹配,则不应用特殊规则
如果实参数量大于形参数量,则多出的实参按照前后顺序被忽略
如果实参数量小于形参数量,则引擎抛出“流程设计异常”,并明确提示用户
如果实参和与之对应的形参类型不匹配,则引擎“尝试”进行智能类型转换,如果无法转换(如String型“ok”转换为Boolean型),则引擎抛出“工作流转型异常”,并明确提示用户
子流程活动扩展属性(ExtendedAttributes)参见普通人工活动的扩展属性定义。
XPDL:











