金蝶时期的那些笔记 联系客服

发布时间 : 星期二 文章金蝶时期的那些笔记更新完毕开始阅读86f76d1dff00bed5b9f31d36

}

public static String ADDNEW = "ADDNEW"; public static String VIEW = "VIEW"; public static String EDIT = "EDIT";

public static String COPYADDNEW = "COPYADDNEW"; public static String EXITING = "EXITING"; }

CoreUIObject

处理一些UI底层的功能,类似与JDK中的Component 比如:

列表界面体系

EAS框架(CoreUI,EditUI,CoreBillEditUI)实现了一些最基本的功能 AbstractXXXUI做了什么事情呢? 1.构造界面的代码 2.构造事件 3.构造事务

4.让实现更单纯化

一个单据的编辑界面主要的几个方法: 1.onLoad() 2.loadField() 3.Action....

DAO模式在EAS中的应用

2006年5月

DAO(Data Access Object):

为什么使用DAO:通过这种模式将底层数据访问操作与高层业务逻辑分离开。 底层数据访问操作包括那些:如创建、更新或者删除数据 下图IORMappingDAO为EAS定义的DAO 接口

看下DAO模式下的一个时序图

EAS中DAO接口(IORMappingDAO)的实现只有一个ORMappingDAO,它实现了对数据对象和数据库层间的增删改查的底层业务操作

数据对象的操作并没有封装在数据对象内,而是通过DAO对象来完成的,这样可以避免不同的数据对象都实现类似的数据访问操作.

关于数据对象,有不同的定义方式,有如下的把数据属性以类变量的形式出现的 public class Customer implements java.io.Serializable { // member variables int CustomerNumber; String name;

String streetAddress; String city; ...

// getter and setter methods... ... }

但EAS做法不是这样的,EAS把数据对象封装到数据Info中,数据Info实际上是封装了一个Map,通过这个Map来管理数据对象中所有类别的数据,当然获取数据和修改数据的方式还是通过setter和getter,只不过内部的实现是一个Map的数据修改和数据获取

DAO接口定义数据操作的方法,然后有具体的子类来根据不同的需要实现,可以是JDBC方式的DAO,也可以是通过O/R Mapping工具的DAO

EAS学习-EAS类的体系架构 2007年12月

一个实体会生成下边几个类

业务实现: com.kingdee.eas.fi.mipe.HouseForRent 业务接口: com.kingdee.eas.fi.mipe.IHouseForRent

值对象: com.kingdee.eas.fi.mipe.HouseForRentInfo

值对象集合: com.kingdee.eas.fi.mipe.HouseForRentCollection 控制器: com.kingdee.eas.fi.mipe.app.HouseForRentController

控制器Bean: com.kingdee.eas.fi.mipe.app.HouseForRentControllerBean 控制器Home: com.kingdee.eas.fi.mipe.app.HouseForRentControllerRemoteHome(已经作废)

控制器LocalHome:com.kingdee.eas.fi.mipe.app.HouseForRentControllerLocalHome(已经作废)

控制器Remote: com.kingdee.eas.fi.mipe.app.HouseForRentControllerRemote(已经作废) 控制器Local: com.kingdee.eas.fi.mipe.app.HouseForRentControllerLocal(已经作废) 其中,开发人员真正需要实现的类是com.kingdee.eas.fi.mipe.app.HouseForRentControllerBean 我们这里首先看下各个类的体系架构

1.业务实现: com.kingdee.eas.fi.mipe.HouseForRent

HouseForRent继承于IHouseForRent,为客户端和服务端所共有,相当于一个字典,记录着服务端那些方法可以被调用

2.业务接口: com.kingdee.eas.fi.mipe.IHouseForRent 见1

3.值对象: com.kingdee.eas.fi.mipe.HouseForRentInfo

实际上Info是EAS构造的一个类似于HashMap的东东,用于记录Key-Value,Info和数据库表的字段有相应的对应

比如:在HouseForRent实体中定义了一个number字段,在HouseForRentInfo中就会有 /**

* Object:房产项目(出租)'s 编码property */

public boolean getNumber() {

return getString("number"); }

public void setNumber(String item) {

setBoolean("number", item); }

4.值对象集合: com.kingdee.eas.fi.mipe.HouseForRentCollection Info的集合

5.控制器: com.kingdee.eas.fi.mipe.app.HouseForRentController ControllerBean的接口

6.控制器Bean: com.kingdee.eas.fi.mipe.app.HouseForRentControllerBean 真正的业务实现是在这个里边的

7.控制器Home: com.kingdee.eas.fi.mipe.app.HouseForRentControllerRemoteHome(已经作废)

8.控制器LocalHome:com.kingdee.eas.fi.mipe.app.HouseForRentControllerLocalHome(已经作废) 9.控制器Remote: com.kingdee.eas.fi.mipe.app.HouseForRentControllerRemote(已经作废)

10.控制器Local: com.kingdee.eas.fi.mipe.app.HouseForRentControllerLocal(已经作

废)

EAS典型的服务端SQL语句 2005年9月

private void freezeCustomerOtherInfo(Context ctx, String customerId) throws BOSException {

Connection conn;

String updateCompanySql; Statement statement; conn = null;

updateCompanySql = ""; String updateSaleSql = ""; statement = null; try {

conn = super.getConnection(ctx); statement = conn.createStatement();

updateCompanySql = "update T_BD_CustomerCompanyInfo set FIsTicketFreezed = 1,FFreezeOrgUnitID = '" + ContextUtil.getCurrentOrgUnit(ctx).getId().toString() + "' where FCustomerId = '" + customerId + "'"; statement.addBatch(updateCompanySql);

String updateSaleSql = "update T_BD_CustomerSaleInfo set FIsFreezeOrder = 1,FIsFreezeDelivery = 1,FConsignFreezeOrgUnitID = '" + ContextUtil.getCurrentOrgUnit (ctx).getId().toString() + "',FOrderFreezeOrgUnitID = '" + ContextUtil.getCurrentOrgUnit(ctx).getId().toString() + "'" + " where FCustomerId = '" + customerId + "'";

statement.addBatch(updateSaleSql); statement.executeBatch(); }

catch(SQLException exc) { throw new BOSException("Sql execute exception : " + updateCompanySql, exc); }

SQLUtils.cleanup(statement); SQLUtils.cleanup(conn);

break MISSING_BLOCK_LABEL_222; Exception exception;