Butterfly API注意事项一

1.每当创建一个session的时候,不管有没有调用session.txBegin,最好最后用session.txClose 关闭下session,其次IDataCollection对象使用过后也要关闭。上述2种情况会造成数据库连接过多,可能造成死锁。

2.尽量不要使用retrieveAllObjects 方法很耗资源。

3注意jdk版本问题造成的语法问题。

4.新建sfo后,hs_summary为必填字段,所以如果你即使不用这个字段,也得随意附上一个值给这字段。

5.如果某个字段为 reference 类型,且Input style 为dropdown list 形式,那么用户第一次选择了这个字段的值后,以后每个transition里面碰到这个字段,都得在这个字段的

public IFieldValueList XXXXXX_SetReferenceList(IButterflyContext ctx, SFFieldEventArgs args)方法里面,把原来的值读出来,然后再return 给这个方法。否则前台就会显示

出 reference类型的所有bo或者sfo。

6. 如果一个字段为boolean 类型,必须用 setBooleanField 方法来设置其值,使用setField方法是不会起作用的,这个好像和API的说明有违背(API的说明上说只要是attribute类型都可)。最好少用setField方法(除了string类型)。

7.设置布尔值字段的时候尽量使用setbooleanfield 方法,反正我试了用setfield的时候有些没有起作用。还有set字段值之前最好add这个字段,即先addfield(),然后再setbooleanfield()。

8 获取sfo的状态的中文名称:

如果是在当前sfo中  IState state = sfo.getState();

String stateName = state.getDisplayName(ctx.getLocale().toString(), session);
其中:ctx.getLocale().toString()这个方法,在中文环境下是"zh_CN",在英文环境下是"en"
在非当前sfo中 举例 ctx.getStateflow("name", "PMSF").getStateByOID(bs.getStringField("hs_state")).getDisplayName("zh_CN", s);
 
9.针对sfo或者bo的查询,如果只查attribute 属性的field,可以用addfield 来节省查询资源,即只查自己想要的字段。但TMD发现要查multireference字段的时候,加addfield 这个字段,根本查不出来,然后发现 一个addfield不加就查出来了。(一个addfield也不加默认查出所有的字段,从数据库里面retrieve 整个BO对象,包括MR关系等)
 
10.一个sfo里面有2个Composite 字段 CA,CB 想要把 CA下面挂的 compositebo 转移到CB下面,做法:
不需要删除CA下面的compositebo,只需要用 sfo.getComposite 抓到CA下的compositebo,然后用sfo.addCompositeBO方法把 compositebo挂到CB下面就可以了,不需要remove掉CA下面的compositebo。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值