教程地址:http://edocs.bea.com/albsi/docs60/tutorial/index.html
1.
问题: 在进行到Activity3处时,启动引擎后,找不到要发起的流程定义。而且提示“没有进程。。联系管理员。。”之云云。
原因: 在Activity 3处定义BPM Object时,有2个Time类型的属性submitDate和 item.date,studio编辑后易产生错误,应该是studio编辑器的原因。
在studio“记录查看程序”视图处选择“[严重性]------[是]-------[调试]”,然后点击“应用过滤器"会找到相关错误日志。
java.lang.ClassFormatError: Illegal field name "TIME$2007_11_08_21_45_48+08_00" in class xobject/ExpenseComponents/ExpenseRepor
办法: 暂时在这个BPM Object里先不用这两个属性吧。。。。
启示: 若“应用程序”处没有显示期望的要发起的流程定义,则该流程定义可能定义有误,可在studio中“记录查看程序”视图处查看有无错误日志。
2.
问题: 在进行到Activity4时,启动引擎,并创建流程完成Create Expense Report活动后,发现无论total数值是多少,均执行Accepted and Preapproved连接弧。
原因: 初步判断就是Create Expense Report中人工填写的BPM Object的数值没有传递到流程中,后通过下述办法证实。
办法 :在Check Company Policy的实现方法里增加调试语句logMessage "Load report.total=【"+report.total+"】"
执行活动后,在studio中“记录查看程序”视图选择“[消息]------[以....开始]-------[]”,然后点击“应用过滤器"可找到产生的日志。
日志内容的确显示report.total的数值始终为0。
经试验,完成下面两个步骤后解决问题,原理是XPDL规范中流程定义有输入形式参数的规则。(顺便感觉ALBPM对众多实参形参的映射设置较繁琐,似乎6.0有提高,但感觉可以做的更好)
(1)在开始节点的“参数映射BeginIn”中增加实例变量report与参数(随便建一个)的对应,
(2)在Create Expense Report的“属性”-“一般”tab页处,选择上一步建好的目标集。
启示:
开发ALBPM PBL语言时,可通过logMessage日志调试程序。经测试,这招在流程定义和屏幕流的自动节点所定义的方法处均有效。
3
问题: ALBPM默认似乎有缓存、队列机制,有时你不敢相信自己的眼睛,调整程序后还反复出现同一个错误,比如不当的屏幕流定义。
办法: 通过更改名称,如更改屏幕流的唯一标识,然后查看错误日志,确认是否是缓存的原因。
一般重新启动一下ALBPM、执行studio菜单“项目-清理"可清除缓存。