金蝶EAS_BOS开发平台培训体系.docx

上传人:小飞机 文档编号:1889241 上传时间:2022-12-24 格式:DOCX 页数:35 大小:886.46KB
返回 下载 相关 举报
金蝶EAS_BOS开发平台培训体系.docx_第1页
第1页 / 共35页
金蝶EAS_BOS开发平台培训体系.docx_第2页
第2页 / 共35页
金蝶EAS_BOS开发平台培训体系.docx_第3页
第3页 / 共35页
金蝶EAS_BOS开发平台培训体系.docx_第4页
第4页 / 共35页
金蝶EAS_BOS开发平台培训体系.docx_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《金蝶EAS_BOS开发平台培训体系.docx》由会员分享,可在线阅读,更多相关《金蝶EAS_BOS开发平台培训体系.docx(35页珍藏版)》请在三一办公上搜索。

1、 EAS BOS 开发平台培训体系1 EAS BOS 框架结构简介1.1 学习内容1.1.1 概述什么是金蝶EAS BOSBOS,Business Operation System,业务操作系统,是金蝶融合多年的企业应用软件的经验以及MDA理念研发新一代技术平台,是金蝶公司全新的管理软件开发工具和管理集成平台。金蝶BOS提供了基于模型驱动架构(MDA)的开发模式和相关的工具,成功的解决了企业应用软件在开发、实施和维护过程中的质量、周期、成本、风险等方面的问题,并使企业应用软件能够满足企业管理行业特性、企业个性化和持续完善的要求,对于企业应用软件在行业应用开发和维护、实施带来了全新的应用模式和革

2、命。金蝶EAS BOS提供的集成管理平台,使企业应用可以集企业门户(Portal)、办公自动化(OA)、企业资源管理(ERP)、工作流(Workflow)以及业务重组(BPR)于一体,对于企业的团队协作、业务支持、管理控制、决策分析、商务智能以及企业信息实时化提供全面的支持。金蝶EAS BOS,集中体现了金蝶公司对中国特色化企业管理和国际先进管理思想领域的孜孜不倦的探索和追求,融合了金蝶公司在企业应用软件领域十多年的行业经验和软件开发经验,对产品不断的发展与完善,为企业用户带来高效、灵活、柔性以及功能强大的企业管理系统,帮助企业用户在激烈的市场竞争中赢得先机并获得前所未有的高回报。金蝶EAS

3、BOS应用框架金蝶EAS BOS技术特性全面的模型驱动架构金蝶EAS BOS在面向业务分析的基础上提炼出一个业务元数据描述的抽象层(对象构造模型)。这个抽象层是整个系统运行的基础,包括了业务对象结构、数据结构、交互界面、系统部署、系统接口等全方位的信息。并且通过内置的集成开发环境,可以不断地将获取及更新的业务知识补充到这个模型中,支持业务能力的持续改进。通过灵活的架构及专业的工具,业务专业人员可以专心于业务的分析及业务的逻辑处理,然后通过集成开发环境将其专业能力分析的内容轻松地加入到系统中,迅速提升系统的业务处理能力,大大降低了实施成本。 示例:基于模型技术实现的IDE开发平台功能平台级的技术

4、控制能力Apusic应用服务器 Apusic应用服务器是严格遵循J2EE等工业技术标准的企业应用平台,是国内第一个商业J2EE应用服务器产品。通过对应用服务器平台技术的自主控制,金蝶EAS BOS能够充分挖掘平台技术潜力,提供给用户高效、高可靠的产品。多技术平台支持 在基于Internet的企业级应用软件的技术领域中,国际上主流的技术平台存在着Microsoft.NET和J2EE两大技术架构。这两种技术架构代表着平台架构技术的最新发展,两者互有优势,目前已经部署或将要部署的企业信息平台绝大多数都从两者中选择其一。金蝶本着帮助顾客成功的产品研发理念,凭借多年积累的技术实力,通过金蝶BOS平台无关

5、性的设计,实现了对.NET和J2EE这两种技术架构的支持。使得顾客在平台选择上有了完全的自主能力,用户可以根据企业自身信息化发展的状况来决定如何部署技术平台,充分保障了既有投资及未来的发展。而且,基于金蝶EAS BOS的技术平台,为客户提供了一种途径,使得企业原有分属于不同技术架构体系的应用系统可以实现整合。通过对Web Service的广泛支持,异种技术平台间可以自由通信,相互集成。 多种数据库支持 翻译引擎支持多种大型数据库,业务系统可自由选择任意数据库产品作为数据承载平台,基于BOS开发的业务系统如果需要运行于新的数据库平台上,只需要在BOS上扩展新的数据库翻译引擎子集即可,原有业务系统

6、无需重新开发。金蝶EAS BOS的数据库翻译引擎提供了两个子功能层,分别实现多种SQL版本的语义翻译和异种数据库访问连接。SQL语义翻译引擎 虽然所有大型数据库都支持大部分的标准SQL语法,但是每个厂商提供的数据库产品都有各自特性的SQL语法子集,这些特性子集的存在造成了业务系统不能够直接在多个数据库产品之间迁移的障碍。金蝶EAS BOS提供的SQL语义翻译引擎,可以使不同的数据库产品都能够正确理解和处理来自业务系统发出的操作请求。异种数据库访问引擎每一种数据库都有各自的访问处理方式从数据库支持的网络协议库到数据库访问的授权到数据库连接的建立都各自不尽相同。金蝶EAS BOS提供的异种数据库访

7、问引擎,可以使业务系统透明的访问任何一种数据库,而无需了解数据库的产品厂商差异以及所运行的平台差异。EAS BOS 开发B/S结构EAB BOS 开发B/S程序时,产生的后台代码EJB,前台代码是JSF和EXT;后台的EJB代码发布在Apusic这个应用服务器上,前台JSF和EXT代码也是运行在apusic应用服务器上。JSF操作数据时,就需要访问EJB的方法来对数据进行增、删、改和查。EAS BOS开发C/S结构EAB BOS 开发C/S程序时,产生的后台代码EJB,前台代码是swing;后台的EJB代码发布在Apusic这个应用服务器上,前台swing代码也是运行在客户机上。swing操作

8、数据时,就需要访问EJB的方法来对数据进行增、删、改和查。EAS BOS访问流程1.1.2 参考资料资料BOS框架BOS开发指南_应用框架.doc资料BOS框架EASBOS框架入门.pptx资料BOS框架应用框架编程指南.doc1.2 学习目标2 EAS BOS 开发环境学习2.1 学习内容2.1.1 概述BOSModular是什么BOS Modular是一个在eclipse上的一个插件,在bos Modular中,可以直接托拉控件生成界面。BOS Modular的目录结构如下:BOSModular 点“BOSModular_zh_CN.bat”这个批处理就可以启动开发工具了。BOSModul

9、ar怎么打开各个窗口视图1:在菜单中选择“窗口”菜单,然后选择“显示视图”子菜单,如下图:2:再选择“其它”菜单,弹出如下窗口,我们可以在窗口中选择随意窗口: BOS BIM视图1:如上图点“金蝶BOS业务建模”,在BOSModular中就会显示业务建模视图如下:在业务建模视图中,我们主要是建业务单据,发布业务单据。BOS设计视图1:如上图点“金蝶BOS设计模式”,在BOSModular中就会显示业务建模视图如下:在设计视图下,主要是设计界面,给界面控件邦定数据,修改各种元数据大纲窗口视图数据邦定窗口视图 属性窗口视图BOS JAVA视图1:如上图点“java视图”,在BOSModular中就

10、会显示java视图如下:在JAVA视图中,我们修改JAVA代码,新增逻辑。2.1.1.1 行业版开发环境搭建1.导入解决方案。2.选择方案-转换为行业解决方案(业务建模视图中)3.删除工程中 basemetas 文件夹中(除 bos eas bim_templates.zip)的文件和文件夹4.开发完成后 选择 基线化行业解决方案(设计开发工具中)5在工程目录下 将 exporttemp 文件夹中的 内容复制到 deployed_metas 文件夹中2.1.2 参考资料资料环境4.安装bosmodular安装bosmodular.swf资料环境5.导入license及解决方案导入license

11、及解决方案.swf2.2 学习目标3 EAS BOS开发一个完整的业务单据3.1 学习内容3.1.1 概述开发流程(业务建模方式):1. 倒入解决方案。2. 新建业务单元。3. 菜单管理。4. 发布业务单据。5. 编写java代码。开发流程(设计工具方式):1. 倒入解决方案,或者自己新建项目。2. 新建元数据。3. 发布元数据。4. 编写java代码。客户端-服务端客户端:1.获取界面数据。(EditUI可以通过框架自动将界面控件中的值绑定到editData中);也可以通过控件直接获取值。2.获取远程调用接口。XXXFactory.getRemoteInstance()。Icurrency

12、icurrency = Icurrency Factory.getRemoteInstance(); /获取币别的远程调用接口3.通过接口调用后台组件(方法)。icurrency.save(editData); /调用服务端保存方法服务端:4.获取客户端的数据,实现业务逻辑。5.根据需要,通过对象或者直接写KSQL操作数据库。界面控制一般在界面的onLoad 方法 或者onShow 方法中控制界面一些属性。例如:隐藏一个控件。public void onShow()txtName. setVisible(false); /设置txtName控件不可见3.1.2 参考资料资料开发流程BOS V6

13、.2开发指南_Studio.pdf资料开发流程EAS开发流程.doc资料开发流程视频6.BIM币别Currency.swf3.2 目标4 BOS元数据及代码结构4.1 学习内容4.1.1 概述一:关系(一)实体和实体关系1 实体(Entity)与实体之间存在联系时,需要建立关系(Relation)。2 实体可以导出数据表(Table)。3 新建查询(Query)必须选择实体。4 ListUI(UI)界面需要绑定查询,其显示的数据要是通过查询获得。5 EditeUI(UI)界面需要绑定实体,界面中的空间和实体的属性绑定进行值传递。(二)实体和代码关系实体和UI 发布会生成对应的Java代码1.

14、实体ZTTest(Entity)发布生成的类2. 用户界面(UI)发布生成的类二:在什么地方加代码来实现一些功能1.所有的抽象类我们不能修改。2.在开发中我们需要修改的java类主要包括*ControllerBean,*EidteUI,*ListUI 结尾的非抽象类。3*ControllerBean 主要是编写服务端的代码逻辑(新增,修改,删除等功能)。例如:在该类中我们可以重写_save()方法。这个方法主要是实现保存,我们就可以在该方法中添加自己代码逻辑。4.*EditeUI 类是客户端编辑界面对应的类。5.*ListUI 类是客户端叙事簿界面对应的类。4.1.2 参考资料资料BOS V6

15、.2开发指南_元数据介绍.pdf资料通用Query查询开发指南.doc资料BOS Studio开发指南(元数据).ppt4.2 目标5 EAS BOS 常用功能5.1 学习内容5.1.1 常用功能总结5.1.1.1 客户端环境工具类工具类:mon.client.SysContext 作用:静态存储用户当前登录信息,登录的当前组织信息(ContextUtil在服务端使用)SysContext.getSysContext().getCurrentFIUnit() /获得财务组织SysContext.getSysContext().getCurrentUserInfo() /取得用户信息5.1.1.

16、2 获取菜单参数作用:该方法返回的是一个Map,里面存放菜单的一些参数。例如菜单名称,路径等。getUIContext().get(UIClassParam)5.1.1.3 获取当前组织的常用方法。1. CompanyOrgUnitInfo company = ContextUtil.getCurrentFIUnit(ctx); /服务端2. CompanyOrgUnitInfo company = ContextHelperFactory.getLocalInstance(ctx).getCurrentCompany(); /服务端3. CompanyOrgUnitInfo company

17、= ContextHelperFactory.getRemoteInstance().getCurrentCompany();/客户端5.1.1.4 接口方法的访问方式1 客户端访问ICurrency c = CurrencyFactory.getRemoteInstance();/建立实体对象c. getCurrencyCollection();/方法调用2 服务端访问ICurrency c = CurrencyFactory. getLocalInstance (ctx);/建立实体对象c. getCurrencyCollection();/方法调用5.1.1.5 数据库工具用法总结1Db

18、Util用法。com.kingdee.eas.util.app.DbUtil(1)查询操作StringBuffer sql = new StringBuffer(); sql.append(select fid from t_cas_ztdemo);/返回结果集,结果集的取值和JAVA ResultSet 相同 IRowSet rowSet = DbUtil.executeQuery(ctx, sql.toString();(2) 增加、删除、修改操作调用 DbUtil. Execute().2. IFMIsqlFacade用法。mon.IFMIsqlFacade;IFMIsqlFacade

19、fMIsqlFacade = FMIsqlFacadeFactory.getRemoteInstance();客户端IFMIsqlFacade fMIsqlFacade = FMIsqlFacadeFactory.getLocalInstance(ctx);服务端StringBuffer sql = new StringBuffer();sb.append( select a.fid from T_BD_Acct_Contorl a);sb.append( inner join t_org_company c on a.FDestCompanyID = c.fid);sb.append( wh

20、ere a.FAccountTableID = ? and a.FIsDefaultForRefer = 0);/其中 new Object 传递的参数,可以是多个用逗号分开IRowSet rs = fMIsqlFacade.executeQuery(sb.toString(), new Object accountTableId);5.1.1.6 期间工具工具类:com.kingdee.eas.basedata.assistant.PeriodUtils作用:该工具类中包含很多关于期间处理的方法,涉及到关于期间的问题可以在该类中查找相应的方法。提供静态方法可获取期间,进行期间运算、比较等功能

21、例:/根据日期、组织获得期间对象。/date 为日期,companyInfo 为组织PeriodInfo periodInfo = PeriodUtils.getPeriodInfo(date, companyInfo);/ 根据期间ID获得期间对象 periodId为期间IDPeriodInfo periodInfo = PeriodFactory.getLocalInstance(ctx).getPeriodInfo(new ObjectUuidPK(BOSUuid.read(periodId);/根据期间ID 获得对应期间的下一期间 periodId为期间IDPeriodInfo per

22、iodInfo = PeriodUtils.getNextPeriodInfo(ctx, new ObjectUuidPK(BOSUuid.read(periodId);/判断该期间是否为调整期periodInfo.isIsAdjustPeriod() /获取期间对应的开始日期、结束日期。Date endDate = periodInfo.getEndDate();Date beginDate = periodInfo.getBeginDate();/日期转换public static Timestamp getTime() Timestamp createtime;Date date = n

23、ew Date();long time = date.getTime();Calendar d = Calendar.getInstance();d.setTime(new Timestamp(time);d.set(Calendar.MILLISECOND, 0);createtime = new Timestamp(d.getTime().getTime();return createtime;t_pm_mainmenuitem 菜单表5.1.1.7 日期帮助工具工具类:mon.DateHelper作用: 日期帮助类,主要提供与日期相关的方法,例如计算指定日期的前一天、日期所在月的第一天等

24、例:DateHelper.getFirstDayOfCurMonth() /获取当前月的第一天DateHelper.getEndDayOfCurMonth() /获取当前月的最后一天5.1.1.8 对象查询IAccount_Control acctCtrl = Account_ControlFactory.getLocalInstance(ctx);EntityViewInfo evi=new EntityViewInfo();FilterInfo filter=new FilterInfo();evi.setFilter(filter);/添加所需要查询的对象evi.getSelector(

25、).add(accountTableID);evi.getSelector().add(availDataFrom);evi.getSelector().add(availDataTo);evi.getSelector().add(accountPeriodType);/设置过滤条件 / FilterItemInfo参数含义 FilterItemInfo(arg1,arg2,arg3);/ arg1: 过滤对象名/ arg2: 值(和过滤对象做比较)/ arg3: 对象与值的比较方式.值为空时,默认为等于 CompareType 获取比较方式filter.getFilterItems().ad

26、d(new FilterItemInfo(accountTableID, QkvFqwEXEADgAD1sChkaBhdpjm0=);filter.getFilterItems().add(new FilterItemInfo(isDefaultForRefer, new Integer(0);/根据 EntityViewInfo 对象为条件 获取查询结果,返回的值是一个集合Account_ControlCollection acctCtrlCols = acctCtrl.getAccount_ControlCollection(evi);5.1.1.9 根据主键(id)查询1查询主键对应的所

27、有数据。IAccount_Control acctCtrl = Account_ControlFactory.getLocalInstance(ctx);String id = 123; / 要查询对象的idAccount_ControlInfo acctCtrInfo = acctCtrl.getAccount_ControlInfo(new ObjectUuidPK(id);2. 查询主键对应的指定的数据。IAccount_Control acctCtrl = Account_ControlFactory.getLocalInstance(ctx);String id = 123; / 要

28、查询对象的id/ 添加所需要查询的对象SelectorItemCollection selector = new SelectorItemCollection();selector.add(accountTableID);selector.add(accountPeriodType);Account_ControlInfo acctCtrInfo = acctCtrl.getAccount_ControlInfo(new ObjectUuidPK(id), selector);5.1.1.10 消息提示框工具类:com.kingdee.eas.util.client.MsgBox该工具类拥有多

29、个方法,根据不同的需要调用方法,只能在客户端使用。例子:1. MsgBox.showInfo(YES);2. MsgBox.showConfirm2(YES);3. MsgBox.showConfirm3(YES);4. MsgBox.showConnectionError(YES);5. MsgBox.showConfirm3a(YES, error);5.1.1.11 资源文件引用工具类:com.kingdee.eas.util.client.EASResource com.kingdee.eas.util.ResourceBase常用方法:EASResource. getString(S

30、tring resClassName, String resName)resClassName:资源文件resName:资源文件中的属性名例:MsgBox.showInfo(this, EASResource.getString(com.kingdee.eas.fi.cas.CasResources,CheckAccount);ResourceBase.getString(com.kingdee.eas.fi.gl.GLAutoGenerateResource,974_GLAccountRefContrastProcess, ctx.getLocale();5.1.1.12 BigDecima

31、l类型的使用方式工具类:java.math.BigDecimal作用:金额、单价的值需要付值为BigDecimal类型BigDecimal amounts1 = new BigDecimal(String.valueOf(3.00);BigDecimal amounts2 = new BigDecimal(String.valueOf(2.00);/相加amounts1.add(amounts2);/相减amounts1.subtract(amounts2);5.1.1.13 F7控件付值public void initF7Acct( IUIObject owner, KDBizPromptB

32、ox f7, CompanyOrgUnitInfo company) if(company.getAccountTable()=null) return; /为F7控件设置Query f7.setQueryInfo(com.kingdee.eas.basedata.master.account.app.F7AccountViewQuery); EntityViewInfo evi = new EntityViewInfo(); FilterInfo filterInfo = new FilterInfo();/设置过滤条件 evi.setFilter(filterInfo); filterIn

33、fo.getFilterItems().add(new FilterItemInfo(isLeaf, 1); filterInfo.getFilterItems().add(new FilterItemInfo(companyID.id, company.getId().toString(); filterInfo.getFilterItems().add(new FilterItemInfo(accountTableID.id, company.getAccountTable().getId().toString(); f7.setEntityViewInfo(evi); f7.setDis

34、playFormat($number$-$name$); f7.setEditFormat($number$); f7.setCommitFormat($number$); f7.setEditable(true);/ f7Acct.setSelector(new AccountPromptBox(owner, company, filter, false, true);/此句不增加,将在第一次查询设置的条件不生效f7.getQueryAgent().resetRuntimeEntityView();5.1.1.14 通用过滤ListUI界面中的几个方法。/可以设置通用过滤所包含的界面prot

35、ected CommonQueryDialog getQueryDlg() throws Exception CommonQueryDialog dialog = super.getQueryDlg();dialog.setShowFilter(false); /是否显示自定义页签dialog.setShowSorter(true); /是否显示排序页签return dialog;/获取用户自定义界面(条件页签)public FMFilterBaseUI getFilterUI() throws Exception if (filterUI = null) filterUI = new Fun

36、dsMoveBillFilterUI();return filterUI;/添加自定义界面public CommonQueryDialog initCommonQueryDialog()CommonQueryDialog conditionDialog = super.initCommonQueryDialog();/设置固定查询界面try CustomerQueryPanel userPanel = getFilterUI();if(userPanel != null)conditionDialog.addUserPanel(userPanel); catch (Exception e) s

37、uper.handUIException(e);return(conditionDialog);/处理自定义查询页签界面protected CommonQueryProcessor getQueryProcessor() /FundsMoveBillProcess 要继承 monquery.client.CommonQueryProcessorreturn new FundsMoveBillProcess(this);在CommonQueryProcessor(查询界面自定义查询页签中属性的处理类)及其子类中,获取CommonQueryPanel,以及用户自定义界面(*FilterUI.jav

38、a)。方 法:CommonQueryPanel commonQueryPanel = (CommonQueryPanel)get(COMMON_QUERY_PANEL); commonQueryPanel.getCustomerQueryPanel().get(i);/获取用户自定义界面(条件页签)。 Object editor = get(CURRENT_EDITOR); /获取自定义页签比较值对应的控件。 String field = (String) get(CURRENT_FIELD_PROP); /获取自定义页签过滤条件属性名5.1.1.15 SysUtil.abort方法工具类:c

39、om.kingdee.eas.util.SysUtil;作 用:停止当前UI的所有操作,或终止服务端方法SysUtil. abort()5.1.1.16 常用F7 Query1科目F7com.kingdee.eas.basedata.master.account.app.F7AccountViewQuery2科目表com.kingdee.eas.basedata.master.account.app.AccountTableQuery3客户F7com.kingdee.eas.basedata.master.cssp.app.F7CustomerQuery4供应商F7com.kingdee.ea

40、s.basedata.master.cssp.app.F7SupplierQuery5客商统一码F7com.kingdee.eas.basedata.master.cssp.app.F7BizAnalysisCodeQuery6物料F7com.kingdee.eas.basedata.master.material.app.F7MaterialQuery7辅助核算F7com.kingdee.eas.basedata.master.auxacct.app.F7AsstAccountQuery8币别F7com.kingdee.eas.basedata.assistant.app.F7Currenc

41、yQuery9辅助核算类型F7com.kingdee.eas.basedata.master.auxacct.app.F7AsstActTypeQuery10汇率F7com.kingdee.eas.basedata.assistant.app.F7ExchangeRateQuery11银行账户F7com.kingdee.eas.basedata.assistant.app.F7AccountBankQuery12银行F7com.kingdee.eas.basedata.assistant.app.F7BankQuery13用户F7com.kingdee.eas.base.permission.

42、app.F7UserQuery14银行F7com.kingdee.eas.basedata.assistant.app.F7BankQuery If not exists (select * from KSQL_USERCOLUMNS where KSQL_COL_NAME =FTransportTypeID and KSQL_COL_TABNAME=T_ST_BalanceBaseType)alter table T_ST_BalanceBaseType add FTransportTypeID VARCHAR(44);5.1.1.17 获取状态1主要是获取该EditUI的状态 public

43、 static final String STATUS_ADDNEW = ADDNEW; 新增 public static final String STATUS_EDIT = EDIT; 修改 public static final String STATUS_VIEW = VIEW; 查看public String getOprtState() return this.oprtState; / 获取状态 public void setOprtState(String oprtType) this.oprtState = oprtType; this.uiParam.put(oprtStat

44、e, oprtType); 5.1.1.18 手动调用BOTPIBTPManager iBTPManager = BTPManagerFactory.getLocalInstance(ctx);IBOTMapping botMapping = BOTMappingFactory.getLocalInstance(ctx);/ 查询是否存在此botp规则 EntityViewInfo ev = new EntityViewInfo();FilterInfo filter = new FilterInfo();ev.setFilter(filter);filter.getFilterItems().add(new FilterItemInfo(name,ST_Weigh-Sample(Pur);BOTMappingCollection /获取对应的botp规则botMappingC

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号