osworkflow中的角色问题就是在流程流转的过程中,如何将指定的步骤传到具体的某个人那里。。。。(有点山药蛋的味道。。。)
我们这里的流程其实有两种情况(现在意识的):
1.平级的流程流转
2.上下级的流程流转
对于平级的情况,可能存在split和join的情况,在owf中可以通过split将请求转到其他的多个节点,实例:
<unconditional-result old-status="Finished" status="Underway" split="1"/>
对应的split 1就是:
<splits>
<split id="1">
<unconditional-result old-status="Finished" status="Underway" owner="${assistant}" step="2"/>
<unconditional-result old-status="Finished" status="Underway" owner="${assistant}" step="3"/>
<!-- <unconditional-result old-status="Finished" status="Underway" owner="${assistant}" step="2"/>-->
</split>
<split id="2">
<unconditional-result old-status="Finished" status="Underway" owner="${assistant}" step="3"/>
</split>
</splits>
这里尽管我们转到step 2和3的是同一个owner,我们可以指定多个owner来实现不同的用户转向不同的环节。
对于join的情况,我们继续看这个例子,在step 2和3的result中都指向同一个join:
<results>
<unconditional-result old-status="Finished" join="1" />
</results>
<joins>
<join id="1">
<conditions type="AND">
<condition type="beanshell">
<arg name="script"><![CDATA[
"Finished".equals(jn.getStep(2).getStatus()) && "Finished".equals(jn.getStep(3).getStatus())
]]></arg>
</condition>
</conditions>
<unconditional-result old-status="Finished" status="Underway" owner="${academician}" step="4"/>
</join>
</joins>
上面的代码就实现了,在一个节点处分成多个流,每个流(这里确切的说是一个步骤)都完成一件独立的事件,然后再所有这些流都完成的情况下汇总到一个下个节点。
上下级之间的转换就比较简单了。。。。
p.s:据说split和join不能再以一个split或join作为result了,切记,切记!!