搜档网
当前位置:搜档网 › 4.1Java文件及目录结构

4.1Java文件及目录结构

代码结构体系

目标:熟悉bos中通过元数据发布产生的代码框架中java类的分布结构及相互调用关系

1、代码结构

如下所示每个业务对象在bos中发布都会将代码发生成到下面的目录中

例如采购订单:

com\kingdee\eas\sample\day4\PurOrder

com\kingdee\eas\sample\day4\ PurOrder\app

com\kingdee\eas\sample\day4\ PurOrder\client

app目录下存放服务端类所有,client目录下存放客户端类,接口类存放在PurOrder目录下

在bos中的java视图中可以看到如图的结构:

以上图为例,对于一个实体对象如:采购订单

1.1目录com\kingdee\eas\sample\day4\PurOrder的类有:

PurOrderInfo.java值对象,扩展自map类用来存储ValueObject值对象

IPurOrder.java 实体对象的远程或本地接口,扩展自IORMModel 接口,由BOSObjectFactory.createBOSObject根据BOSObjectType创建的

object实现。屏蔽远程或本地操作的差异,使接口调用更简洁。

PurOrder.java 接口的实现类,对接口方法进行包装(无须关注)

PurOrderCollection.java 值对象集合,是多个PurOrderInfo的队列

PurOrderFactory.java Factory工厂类,用于创建实现IPurOrder接口的业务对象,所有的操作将通过该接口进行调用

例:

IPurOrder purOrder = PurOrderFactory. getRemoteInstance( );

purOrder.getXXX();开始调用实体或Fa?ade的具体方法;

1.2 目录com\kingdee\eas\sample\day4\PurOrder\app的类有:

AbstractPurOrderControllerBean 超类

PurOrderControllerBean 实现类实现PurOrderController 接口,是服务端用户代码所在的类

PurOrderController 接口扩展自BizController接口,方法由PurOrderControllerBean实现类实现

PurOrderControllerLocal 接口封装ejb远程、本地接口

PurOrderControllerLocalHome 接口封装ejb远程、本地接口

PurOrderControllerRemote 接口封装ejb远程、本地接口

PurOrderControllerRemoteHome 接口封装ejb远程、本地接口

批注:

在EJB2.0之前,所有的EJB对象,都采用的是远程接口,但通过远程接口来调用一个EJB里,由于需要处理远程调用和网络连接等一些额外伤务,效率会变的不理想。但在

很多时候,一个EJB对象的调用只需要一个本地调用,也就是在同一虚拟机就完成就可以了,为了减少这些不必要的性能损失,在EJB2.0引入了本地接口,通过本地接口的调用,可以实现高效的方法访问,就像对一般的非EJB对象的方法访问一样,大大提高率效?

在我们使用SessionFacase模式,其中的EnityBean往往都会用Local接口(这只是个例子),而SessionBean一般使用Remote接口。可以理解为国际长途和国内电话的区别:

国外的打进来,先经过国内总机(Localhome接口),总机再经过各省分机(local接口)找到要接通的电话(bean里的方法)。

国内的电话往来(相同的JVM)通过各省分机,国际间的电话往来(不同的JVM)通过国内总机。

国内的电话自然要省点啦。

1.2目录com\kingdee\eas\sample\day4\PurOrder\client的类有:

AbstractPurOrderEditUI 抽象类,由元数据生成,每次生成都会覆盖该类,不能在该类中做代码修改

AbstractPurOrderListUI 抽象类,由元数据生成,每次生成都会覆盖该类,不能在该类中做代码修改

PurOrderEditUI编辑界面实现类,由元数据生成,每次生成不会覆盖该类(在BOS中选择“覆盖生成”除外),可以修改或增加用户代码

PurOrderListUI列表界面实现类,由元数据生成,每次生成不会覆盖该类(在BOS中选择“覆盖生成”除外),可以修改或增加用户代码

AbstractPurOrderEditUI_l1.properties 为指定语言保留

AbstractPurOrderEditUI_l2.properties

AbstractPurOrderEditUI_l3.properties

AbstractPurOrderEditUI.properties 多语言支持

AbstractPurOrderListUI_l1.properties

AbstractPurOrderListUI_l2.properties

AbstractPurOrderListUI_l3.properties

AbstractPurOrderListUI.properties

Day4Resource_l1.properties

Day4Resource_l1.properties

Day4Resource_l1.properties

Day4Resource.properties 资源文件

常用类:

PurOrderEditUI

PurOrderListUI

Day4Resource.properties

2、类继承体系

以采购订单为例

IPurOrder

作为创建,更新及其他操作‘采购订单’实体对象的接口

PurOrderInfo

对于值对象,根据在bos中创建对象时选择的基类的不同而不同,本例是从billbase

继承创建,其中BillBaseInfo包含单据基本信息所需要的属性,

PurOrderInfo类添加了对于特定的实体对象的属性。如下图:

PurOrderFactory

作为辅助工具类(helper)屏蔽后台操作,提供静态方法,方便用户创建IPurOrder接口,该类继承自Object :

常用创建方法:

PurOrderFactory.getRemoteInstance();或取远程接口,实现远程操作

PurOrderFactory.getLocalInstance(ctx);或取本地接口

以上方法均返回接口IPurOrder ,通过该接口可以创建、更新、删除、查询‘采购订单’实体对象的值‘PurOrderInfo’

PurOrderControllerBean

作为‘采购订单’实体的实现类,在bos中设计的实体的方法都会反映在该类中,如果对于业务逻辑需要特殊的控制,那么需要在该类中对应的方法内进行编码

该继承关系有利于bos框架为‘实现类’提供更多的后台服务,在实现类中则专注于业务逻辑的实现

PurOrderEditUI

PurOrderListUI

用户界面类,包含客户端的业务逻辑控制代码

其继承如下:

Bos提供的客户端服务代码封装在AbstractPurOrderEditUI , AbstractBillEditUI中

编辑界面类与界面上绑定的editData紧密结合,用户在客户端编辑界面上的数据在保存时都会由应用框架统一回填到editData中,并由此构建Info值对象提交

到服务器,由PurOrderControllerBean 完成对数据库的操作

3、关于代码调用过程的描述

在采购订单例子中,例如新增一条‘采购订单’信息,

Step1:

用户打开‘采购订单编辑界面’(系统调用PurOrderEditUI.class)

Step2:

录入相关信息

Step3:

保存,PurOrderEditUI先进行合法性校验

Step4:

调用PurOrderEditUI的storeFields方法将值填入editData (回填过程由超类完成)

Step5:

应用框架调用PurOrderFactory类创建IPurOrder 接口

Step6:

应用框架调用IPurOrder接口以editData 值对象为参数调用addNew远程方法

Step7:

应用框架调用PurOrderControllerBean的addNew方法,完成新增操作

具体可参考《服务端常用代码.doc》、《客户端常用代码.doc》

以上介绍的是代码分布、目录结构、主要的常用类及功能、代码调用的层次结构

相关主题