BOS生成代码的说明
在BOS中可以为一个实体定义业务方法,其中业务方法分为两种一种为系统方法,一种为用户自定义方法。BOS在生成这些代码是采用Template Method Pattern,会为每个业务方法生成两个方法,在一般情况下用户只应该实现或者覆盖实现相关的抽象方法。在BOS定义的方法中约定:用户只能实现或覆盖实现前缀为_的方法。
系统方法
系统方法是不可修改的,如果用户修改了名称、参数或者为这个方法添加一个例外,那么BOS将认为这个方法是用户自定义方法,而不是系统方法。 BOS V31提供的系统方法一共有11个,如下:
public boolean exists(Context ctx,IObjectPK pk )throws BOSException ,RemoteException;
public AccountInfo getValue(Context ctx,IObjectPK pk )throws BOSException ,RemoteException;
public AccountInfo getValue(Context ctx,IObjectPK pk ,SelectorItemCollection selector )throws BOSException ,RemoteException;
public IObjectPK addnew(Context ctx,AccountInfo model )throws BOSException ,RemoteException;
public void addnew(Context ctx,IObjectPK pk ,AccountInfo model )throws BOSException ,RemoteException;
public void update(Context ctx,IObjectPK pk ,AccountInfo model )throws BOSException ,RemoteException;
public void delete(Context ctx,IObjectPK pk )throws BOSException ,RemoteException;
public IObjectPK[] getPKList(Context ctx)throws BOSException ,RemoteException;
public IObjectPK[] getPKList(Context ctx,FilterInfo filter ,SorterItemCollection sorter )throws BOSException ,RemoteException;
public AccountCollection getCollection(Context ctx)throws BOSException ,RemoteException;
public AccountCollection getCollection (Context ctx,EntityViewInfo view ) throws BOSException ,RemoteException;
系统方法生成规则
在BOS中,自动生成的系统方法都为强类型,但是由于在实体有继承情况下,getValue和getCollection方法如果生成强类型将编译不过,所以BOS在生成这两个方法是按照如下规则:
最顶层超类,这两个方法名不变叫getValue和getCollection.
子类中这覆盖实现这两个方法,方法名分别叫
getXXXValue和getXXXCellection
示例如下图
注意:由于AAACollection,BBBCollection和CCCCollection不是继承关系,所以在BBB类和CCC的实现类里面要做响应的类型转换。BOS为集合类的基类提供了一个cast方法,这样可以将一种集合类型转换为另一种集合类型,如在BBB的实现类里面需要覆盖实现getCollection方法并将BBBCollection转换为AAACollection;同理在CCC的实现类里面需要覆盖实现getBBBCollection,否则用户在方法这些方法时会抛出ClassCastException.示例代码如下,
BBBCollection bbbs =……;
AAACollection aaas = (AAACollection)bbbs.cast(AAACollection.class);
大家可以参考BOS生成的源代码来理解上面这个转换。
模板方法生成规则
在BOS的代码框架中,用户一般只能覆盖(Overwriting)实现_xxx方法,而不能覆盖不带下划线的方法。
模板方法都为弱类型,如果为强类型,那么生成的代码就是Override,而不是Overwrite,这样就违背了我们设计的本意,所以我们生成的模板方法都为弱类型。
BOS默认为系统方法的模板方法生成调用底层O/R Maping的代码,用户模板方法默认为空实现。不论是系统方法,还是用户方法如果是覆盖实现父类的方法,生成的调用代码都是调用父类的方法,下面是两个示例:
public IObjectPK addnew(Context ctx,AccountInfo model )throws BOSException
{
ServiceContext svcCtx = createServiceContext(new MetaDataPK("9c96887e-00f9-1000-e000-0010c0a8134b"),new Object[]{ctx,model});
invokeServiceBefore(svcCtx);
IObjectPK retValue = (IObjectPK)_addnew(ctx,model);
invokeServiceAfter(svcCtx);
return retValue;
}
protected IObjectPK _addnew(Context ctx,IObjectValue model )throws BOSException
{
return innerAddnew(ctx,model); //调用超类里面的O/R Mapping 实现
}
//update覆盖实现了父类的update方法
public void update(Context ctx,IObjectPK pk ,AccountInfo model )throws BOSException
{
ServiceContext svcCtx = createServiceContext(new MetaDataPK("9c96887e-00f9-1000-e000-0012c0a8134b"),new Object[]{ctx,pk,model});
invokeServiceBefore(svcCtx);
_update(ctx,pk,model);
invokeServiceAfter(svcCtx);
}
protected void _update(Context ctx,IObjectPK pk ,IObjectValue model )throws BOSException
{
super._update(ctx, pk, model); //调用父类的模板类方法
}
对子类模式的处理
BOS V31 SP2提供了对子类模式的支持,BOS支持normal和abstract两种模式,不支持final。
分享到:
相关推荐
金蝶 BOS开发的样例代码,客户端、中间层调研组件及使用说明
EAS-BOS常用代码、EAS-BOS常用代码客户端端常用代码
使用bos如何生成凭证
BOS开发不错的工具类,觉得有用的就收下吧~~~~
BOS代码二次开发FAQ 一.Coding的结构体系 1.代码目录结构 1.1目录com\kingdee\eas\sample\day4\PurOrder的类 1.2 目录com\kingdee\eas\sample\day4\PurOrder\app的类 1.3 目录...
1.14【摘要】:K/3 Cloud BOS开发平台的详细说明 5 1.15【摘要】:K/3 Cloud BOS运行时站点相关问题 5 1.16【摘要】:K/3 Cloud BOS注册开发商信息 5 1.17【摘要】:K/3 Cloud 下载BOS设计器和客户端问题 5 1.18...
BOS开发 KDTABLE 处理代码
金蝶EAS BOS V5.4客户端常用代码
金蝶K3/BOS开发示例及说明文档相关插件开发。。有代码有案例。欢迎讨论 金蝶K3/BOS开发示例及说明文档相关插件开发。。有代码有案例。欢迎讨论 金蝶K3/BOS开发示例及说明文档相关插件开发。。有代码有案例。欢迎...
金蝶bos万能工具类和开发工具类代码,java源代码打包,金蝶给用户使用时需要二次开发,因此需要一些类的说明。金蝶BOS是一个开放的集成与应用平台,是金蝶ERP解决方案、合作伙伴解决方案以及客户定制应用的技术平台...
1、 提交控制 1 ...3、 凭证生成前的控制 6 4、 生成凭证 7 5、 审核操作 8 6、 编码规则 9 7、 如何在服务端执行一段带参数的sql? 10 8、 如何在服务端用带参数的sql取得结果集? 11 9、 扩展开发 11
金蝶EAS BOS代码开发常用类.pdf 记录了金蝶EAS产品BOS开发常见的一些类及使用方法等等
金蝶BOS开发,写的比较详细,值得你一看额
金碟EAS BOS开发服务端常用代码,有兴趣的下载吧。
关于EAS Bos中的附件管理的开发,比较详细,实用。对于开发人员、实施人员有较好的帮助
BOS单据外部接口调用说明 1、BOS单据外部保存接口 '******************************************** '功能:BOS单据外部保存接口 '参数:lClassTypeID-BOS单据类型ID '******************************************** ...
自定义BOS单据 送货单,销售出库单下推生成送货单按照物料加单价合并发货
bos项目parent J2EE源代码 bos parent 父文件 不好含web 和dos
K3BOS教案(练习案例说明)希望对大家有帮助
EASBOS EASBOS EASBOS EASBOSEASBOS