1. 有2个字段为级联关系。即字段A改变,字段B的可选值也会跟着改变。记住,字段A的SetDependentValue域脚本会覆盖字段B的SetReferenceList脚本。
打个比方,字段A的SetDependentValue域脚本里面设置了字段B的可选值范围[A-S],且可选值范围都为false(即都没有选择),字段B的SetReferenceList脚本也是设置了字段B的值(有一个可选值不在 [A-S]中),最终的结果是只会出现 可选值范围[A-S]
2. args.setcancel 方法后面的代码似乎还会继续执行,所以后面加个return
3. 用DataQuery 方式查BO,如果不加addfield 会retrieve 整个对象,包括multireference 。如果你用了 addfield 方法就查不出multireference 了,这时候要使用jointable 才能查的出来。
4.代码自动流转居然是beforetransition 和 aftertransition 这2个函数都会执行
5.用Dataquery查询,一定记得是否要加hs_is_deleted = 0||1 的过滤器
6.查询用getStringField("xxxx") 如果 xxxx 字段数据库里面为null,看了下butterfly源代码,取出的是"" 。不过建议最好还是判断null 和“”的情况。毕竟2种类型不一样。
7.判断字段不为空,代码如下:
ff.setNot(true);
dq.addFilter(ff);
query.addFilter("occurred_date", SATConstants.SQL_OP_BETWEEN, l_date);
从这2句可以看出,要写between 的方法 ,过滤器 between 的后面 的值是 A,B 的形式(中间逗号隔开的)
9.beforetransition 里面不要写 sfo.save(s) (本sfo(即当前流程这个sfo),非本sfo 的save方法可用) . beforetransition函数段里面应该会自动save的。试着写了下发现有死锁的情况发生。
10.用了 session.txCommit ,就一定要在之前写 session.txBegin ,否则会报 illegal state 的错误,报多了日志相当地大。
11. 获取项目 ctx.getProjectByName(arg0) 这个方法用了次好像不管用,每次都报错说找不到project。 还是用ctx.getProject("oid", sfo.getProjectOID()); 或者ctx.getProject("name", “XXXXX”); 这2种方法可以。