2008年8月22日星期五

BPMSuite_003:Oracle BPM Studio 10gR3 问与答

问题1 :如何在流程引擎配置时加入人员选择操作?
问题背景:**银行人员约束条件有两个维度:
(1) 人员所在部门(如“银行营运中心规划处”)
(2) 人员系统角色(如“处长”、“处员”)
角色A将文件传送到角色B中的其中一人,但在同一部门中具有角色B的人员共3名,流程提供选择列表,列表中体现具体人名,角色A通过列表选择其中一人,流程引擎仅路由到被选择用户,而其他两名用户不被路由。

回答:通过Activity的属性role,你可以找到该activity所属的角色;
通过角色你可以找到该角色的所有人员。PAPI提供了这些API,使用方法如下:
logMessage "Activity: "+activity.name+" in role "+Activity.role.name
for each p in Activity.role.participants
do
logMessage "Participant "+p.id+"("+p.name+")"
end
剩下的工作就是,你可以设计一个屏幕流的界面,把人员列表显示在上面。
选哪个人,就把该activty的owner 设为哪个人,其他人就看不到了。
但是activty没有owner这个属性,查了手册,发现了Participant.next。
帮助手册中,该参数说明如下:
If you set the attribute Participant.next , the Process Execution Engine assigns thecurrent instance to the specified participant.
This assignment takes effect whenthe instance arrives at the next activity in the process (after the instancecompletes the current activity).
This assignment is subject to permissionchecks: if the participant specified in Participant.nextis not assigned to the next activity's role -- or the next activity isnot Interactive -- then the instance remains unassigned.
因此,我们可以通过设置Participant.next来达到同样的目的。

问题2 :如何在流程中配置出人员多选操作,如何进行子流程激活父流程挂起等动作?
问题背景:同一部门中具有角色B的人员共3名,角色A将文件传送到该部门角色B中的其中两人,但需要两人分别办理,即其中一人发送后,流程状态不变化只有当第二个办理人发送后,流程状态才发生变化,流程引擎想下一节点进行路由。
提示:此处产生了子流程,一般情况下父流程被挂起,子流程激活,全部返回则子流程消亡,父流程被激活。

回答:可以用split/join 做2个并行的transition,对应于2个流程状态属性 在join节点上作如下逻辑判断:流程的2个状态属性是否都发生了改变,如果是,路由到下一节点,否则继续等待。

问题3 :如何增加流程干预?
问题背景:同一部门中具有角色B的人员共3名,角色A将文件传送到该部门角色B中的其中两人,但后续希望追加第三人,后续场景与问题2场景相同。
提示:此处出现流程干预操作,被挂起的父流程状态体现可以对子流程进行干预。引申出亦可主动使子流程消亡(强制收回)。

回答:因为人员数目不定,你可以使用Mutiple,它可以实现动态的分支个数,即根据人数来决定分支数。然后在join节点上作如下逻辑判断:
流程是否需要增加新的审批人,如果是,增加新的审批人,将流程的当前活动节点置为上一个节点,否则路由到下一节点。

问题4:发布流程到AIX,找不到某些Java类?

问题5:Project Variables中创建int/double变量时,range如何使用?

问题6:Organizational Unit用途?

问题7:Email的通知设置?

问题8:Split/Join为何产生多个instances?

问题9:用户选择终止某个Process时,能否通知?

问题10:1个应用对应一个WorkSpace,还是一个Project对应一个WorkSpace?

问题11:activity 能否做到多语言支持,中国人看到中文,美国人看到英文?

问题12:中文环境下,确定按钮显示不出来?

问题13:Activity Id 第一次保存后 无法再次更改?

问题14:条件Transition 无法设置?

问题15:屏幕流输入/输出参数设置完成之后无法修改。

问题16:一个Project中,多个Process中有同名的Activity。

问题17:界面开发中Label不能修改。

1 条评论:

匿名 说...

HW:
可以通过Engine Prefernces的Deployment的配置来解决该问题,不过实验中给的BPM软件该Deployment的delete按钮好像有些bug不能删除。
通过Generate Default View的list来选择By Process可以区分不同process的activity。