供稿人:许庆洋
流程审批中的决定性意见,是一种路径选择的快捷方式,比如“同意”时,则跳出某几条路径(或者自动选择某条路径),而当“不同意”的时候,则跳出另外的路径(或自动选择某条路径);同时,用户选择的决定性意见也可以保存到数据库中(Task 的 decisiveOpinion 属性中),参与业务计算。
在 BroBPM 中,决定性意见的配置包括:
- 环节属性决定性意见(decisiveOpinions):多个决定性意见之间用分号分割,每个决定性意见长度不超过20个字
- 路径属性decisiveOpinion:多值以分号分隔。当环节配置有多条决定性意见、且提交方式为“统一”或者“平铺分组”时可用。
- 环节属性 sendbackDecisiveOpinions:自动生成的“退回上一环节”路径的决定性意见
- 环节属性 sendbacktodrafterDecisiveOpinions:自动生成的“退回起草人”路径的决定性意见
环节上设置决定性意见属性:decisiveOpinions,多个决定性意见之间用分号分割,每个决定性意见长度不超过20个字:
<task-node decisiveOpinions="同意;不同意"></task-node>
提交时,显示界面如下所示:

提交方式必须是分组(submitMode='group)',只有选择了决定性意见后才能显示路径,分组的多条路径上至少有一条需要配置决定性意见属性,否则选择后出来的还是所有路径,例如:
<task-node decisiveOpinions="同意;不同意" submitMode="group" sendback="true" sendbacktodrafter="true">
<transition to="部长审批" />
<transition to="科长会签" />
</task-node>
或:
<task-node decisiveOpinions="同意;不同意" sendback="true" sendbacktodrafter="true"
submitMode="group|协助办理=/会签$/;通过=/^((?!(退回|会签)).)*$/;不通过=/^退回/" >
<transition to="部长审批"/>
<transition to="科长会签"/>
</task-node>
如果路径上不配决定性意见属性,选择"同意"或“不同意”均显示如下:

指向环节的路径、或指向网关的路径上,设置对应的决定性意见属性,多个意见之间用分号分割。
指向环节的路径:
<task-node decisiveOpinions="同意;不同意">
<transition to="部长审批" decisiveOpinion="同意"/>
<transition to="不同意并送科长审批" decisiveOpinion="不同意" />
</task-node>
选中上图中的"同意"后显示如下:

而选中“不同意”后,则仅显示路径“不同意并送科长审批”。
指向网关的路径:
注意只能在网关的入口路径(下面代码的to="部长审批")上配置决定性意见,配置在网关的出口路径上(即下面gateway中的路径上)不生效。
<task-node decisiveOpinions="同意;不同意">
<transition to="部长审批" decisiveOpinion="同意"/>
</task-node>
<gateway name="部长审批">
<transition to="需求调研人员审批" />
<transition to="OA系统开发科科长审批" />
<transition to="起草人反馈"/>
</gateway>
选中“同意”的决定性意见后,“提交路径”中仅显示路径“部长审批”。
如果路劲上没有配置决定性意见属性,则默认和环节上的决定性意见一致,即选中各个决定性意见后都会出现该条路径:
<task-node decisiveOpinions="同意;不同意" submitMode="group" sendback="true" sendbacktodrafter="true">
<transition to="部长审批" decisiveOpinion="同意" />
<transition to="科长会签" decisiveOpinion="不同意"/>
<transition to="起草人反馈"/>
</task-node>
则不论是选择同意还是不同意,路径“送起草人反馈”都会出现在“提交路径”的列表框中。
由于默认的"退回上一环节"、"退回起草人"的路径可以直接在环节上配置出来的(不需要在图上画连接线),因此环节上会有 sendbackDecisiveOpinions、sendbacktodrafterDecisiveOpinions 这两个属性用来配置各自属于哪种决定性意见:
<task-node decisiveOpinions="同意;不同意" submitMode="group" sendback="true" sendbacktodrafter="true"
sendbackDecisiveOpinions="不同意" sendbacktodrafterDecisiveOpinions="不同意">
<transition to="部长审批" decisiveOpinion="同意" />
<transition to="科长会签" decisiveOpinion="同意"/>
</task-node>
选择“不同意”后,显示如下:
