Butterfly API 注意事项二

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.判断字段不为空,代码如下:

 IFieldFilter ff= dq.createFieldFilter("T_hiddenNum",SATConstants.SQL_OP_IS_NULL, null);  
ff.setNot(true);
dq.addFilter(ff);
 
SATConstants.SQL_OP_IS_NOT_NULL 这个接口的常量 不要用 ,因为有BUG,似乎mysql和 oracle得出的结果不一样,但绝对是bug。
 
8. String l_date = week_start_date_Long.toString() + "," + week_end_date_Long.toString();
  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种方法可以。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值