金蝶EASBOS开发学习笔记

合集下载

BOS开发单据重要笔记.txt

BOS开发单据重要笔记.txt

BOS开发单据重要笔记.txt一、EditUI必须实现及很重要的方法:1、通过Factory返回月度付款计划接口(必须)protected ICoreBase getBizInterface() throws Exception { // TODO Auto-generated method stubreturn MonthlyPayPlanFactory.getRemoteInstance();}2、返回月度付款计划对象(非必须)Protected IObjectValue createNewData(){MonthlyPayPlanInfo info = new MonthlyPayPlanInfo();return info;}3、返回单据分录(必须)protected KDTable getDetailTable() {// TODO Auto-generated method stubreturn this.kdtEntries;}4、是否允许连续新增,框架默认为true(非必须)protected boolean isContinueAddNew() {return false;}二、ListUI必须实现及很重要的方法:1、通过Factory返回月度付款计划接口(必须)protected ICoreBase getBizInterface() throws Exception { // TODO Auto-generated method stubreturn MonthlyPayPlanFactory.getRemoteInstance();}2、返回编辑界面名称全路径,新增、查看数据时使用getEditUIName(必须)protected String getEditUIName(){return MonthlyPayPlanEditUI.class.getName();}3、初始化查询条件过滤界面(可修改界面)protected CommonQueryDialog initCommonQueryDialog() { CommonQueryDialog dialog =super.initCommonQueryDialog();try{dialog.setTitle("月度付款计划查询");}catch(Exception e){handUIException(e);}return dialog;}4、初始化时,是否进入查询条件过滤界面(默认false,当需要过滤界面时,重写,返回true)protected boolean initDefaultFilter() {// TODO Auto-generated method stubreturn true;}5、查询时,执行查询SQL前,自定义条件protected void beforeExcutQuery(EntityViewInfo ev) { SorterItemCollection coll=new SorterItemCollection();coll.add(new SorterItemInfo("number"));coll.add(new SorterItemInfo("entries.seq"));coll.addObjectCollection(ev.getSorter());ev.setSorter(coll);super.beforeExcutQuery(ev);}6、通用条件过滤界面增加自定义页签protected CommonQueryDialog initCommonQueryDialog(){dialog = super.initCommonQueryDialog();try{dialog.addUserPanel(getUsierPanel());dialog.setShowFilter(true);dialog.setShowSorter(true);dialog.setHeight(380);dialog.setWidth(500);dialog.setTitle(‘客户自定义过滤框’);}catch (Exception e){handUIException(e);}return dialog;}protected CustomerQueryPanel getUserPanel() throws Exception{if (erPanel == null)erPanel = new PurOrderQueryUI();userPanel.onLoad();return erPanel;}三、典型客户端代码1、动态调用UI界面private void makePurOrderUI(PurOrderInfo srcBillInfo) throws EASBizException, UIException,BOSException, Exception {String destBillEditUIClassName =“com.kingdee….PurOrderEditUI”;Map map = new UIContext(this);map.put("srcBillID", srcBillInfo.getId().toString());map.put(UIContext.OWNER, this);map.put("srcBillBOSTypeString",destBillInfo.getBOSType());IUIWindow uiWindow = null ;// UIFactoryName.MODEL 为弹出模式uiWindow =UIFactory.createUIFactory(UIFactoryName.MODEL).create(destBillEditUIClassName, map,null,OprtState.ADDNEW);//可对创建的ui进行操作//((CoreBillEditUI).uiWindow.getUIObject()).//setMakeRelations(btpResult.getBOTRelationCollection()) ;//开始展现UIuiWindow.show();}四、KDTABLE 隐藏其组件里自带的按钮//隐藏kdtable的按钮private void hidePanelButtons(KDTable table){Component c = table.getParent().getParent();if (c instanceof DetailPanel){DetailPanel panel = (DetailPanel) c;//获取btnComponent[] components = panel.getComponents();for(int i = 0; i < components.length; i++){Component component = components[i];if (component instanceof KDPanel){KDPanel kdPanel = (KDPanel) component;if("controlPanel".equals(kdPanel.getName())){panel.remove(kdPanel);}if("entryPanel".equals(kdPanel.getName())){Rectangle entryRect = new Rectangle(0, 0, table.getWidth(), table.getHeight() + 29);kdPanel.setBounds(entryRect);kdPanel.putClientProperty("OriginalBounds",entryRect);panel.add(kdPanel, newKDLayout.Constraints(KDLayout.Constraints.ANCHOR_TOP| KDLayout.Constraints.ANCHOR_RIGHT | KDLayout.Constraints.ANCHOR_LEFT|KDLayout.Constraints.ANCHOR_BOTTOM , entryRect));}}}}}1、如何获得当前单据的所有组织、用户信息;// 获得当前财务组织SysContext sys = SysContext.getSysContext();CompanyOrgUnitInfo orgUnit = sys.getCurrentFIUnit();boolean isBizUnit = orgUnit.isIsBizUnit();// 获得当前用户SysContext sys = SysContext.getSysContext();user = (UserInfo) sys.getCurrentUser();if(user!=null){this.prmtAuditor.setValue(user);}2、bos中如何将F7的控件的背景颜色设置为黄色import com.kingdee.bos.ctrl.swing.KDTextField;((KDTextField)PromptSupportedObj.getEditor()).setCustomBackground Color(new Color(16579551));3、其他控件设置背景色:1.// 文本框,类:com.kingdee.bos.ctrl.swing.KDFormattedTextField2.txtTest.setCustomBackgroundColor(newColor(220,255,255));3.4.// F7控件,类:com.kingdee.bos.ctrl.extendcontrols.KDBizPromptBox5.((KDTextField)prmTest.getEditor()).setCustomBackground Color(new Color(220,255,255));6.7.// 日期控件,类:com.kingdee.bos.ctrl.swing.KDDatePicker8.((BasicFormattedTextField)pkTest.getEditor().getEditor Component())<BR> .setCustomBackgroundColor(new Color(220,255,255));<BR>// 文本框,类:com.kingdee.bos.ctrl.swing.KDFormattedTextFieldtxtTest.setCustomBackgroundColor(newColor(220,255,255));// F7控件,类:com.kingdee.bos.ctrl.extendcontrols.KDBizPromptBox((KDTextField)prmTest.getEditor()).setCustomBackgroundCo lor(new Color(220,255,255));// 日期控件,类:com.kingdee.bos.ctrl.swing.KDDatePicker((BasicFormattedTextField)pkTest.getEditor().getEditorCo mponent()) .setCustomBackgroundColor(newColor(220,255,255));下拉列表框与它们不同,需要特殊处理Java代码1.// 要先写一个内部类,其中实现了ListCellRenderer接口。

EAS-BOS开发要点

EAS-BOS开发要点
20实体方法事务属性required与数据库相关的增删改supports查询requiresnew更新7联机调试设置1选择bim业务建模工具透视图2选中解决方案选择项目菜单选择属性选择解决方案测试设置选择测试帐套选择其他测试设置将元数据和资源文件支持热替换勾上3选中解决方案选择运行菜单选择启动测试菜单或快捷菜单启动完毕自动打开登录窗口4用户名输入administrator密码输入kdadmin进入主界面5选择系统菜单选择客户化菜单编辑菜单新增comkingdeeeassampleday4purorderclientpurorderlistui6重新登录7典型示例代码1listui列表界面常用代码tblmain作为框架为list列表界面中的kdtable绑定的变量通过它可以访问到列表上的每一行每一列可以做数据检查控制格式化行合并等操作
第(1)页,共(136)页
燕飞出品
9、修改编辑界面...................................................................................................................53 10、增加实体方法,ListUI 增加按钮,实现按钮调用实体方法 ....................................54 11、通过定义“属性”给表头编辑框增加 F7 关联基础资料功能 ...................................60 12、通过定义“事件”给表头 F7 编辑框增加值改变事件 ...............................................61 13、F7 选择值改变与 ListUI 列表界面查询联动(动态改变查询的过滤条件) ..........63 14、表格分录编辑框通过 F7 关联基础资料,日期格式设置、下拉列表绑定枚举(必须 通过编码实现).....................................................................................................................66 15、对新增的字段(控件)与元数据作绑定 ..................................................................... 67 16、对 UI 上的字段添加事件,并实现事件方法体 ...........................................................69 17、去掉 UI 上的“新增、修改、删除”等按钮 ...............................................................72 18、分录表格增加保存提交时的数据校验 ......................................................................... 72 19、分录表格数据项增加值改变事件 ................................................................................. 73 20、自定义查询过滤条件、排序字段、检索字段、获取查询结果集 .............................74 21 给 KDSpinner(上下选框)控件设置上下选择范围 .....................................................76 22、实体方法事务属性.........................................................................................................77 23、F7 选择支持多选,并取得 F7 的值..............................................................................77 24、给 F7 增加过滤条件.......................................................................................................78 5、层次数据结构 ComboTreeDetailListUI................................................................................79 6、查询统计开发步骤...................................................................................................................92

2022年金蝶BOS平台开发笔记入门实战篇

2022年金蝶BOS平台开发笔记入门实战篇

金蝶BOS平台开发笔记一、入门篇。

新建、修改一种主从表1.建主表➢第一步,在业务建模视图下,新建业务单元。

我们新建一种名为 MainChild_Demo旳单元,别名起为“主从表演示”。

➢点击下一步,创立方式选择“直接新建”,完毕。

生成旳主表如下图:系统自动创立了4个编辑字段(另有某些字段未在本界面显示,在此不做详述。

)2.新增单据体。

仍然在业务视图下,在生成旳“主从表演示”界面上右键,选择“单据信息”,点击“新增单据体”。

新增旳单据体即是从表。

3.字段管理在界面上右键选择“字段管理”,弹出字段管理界面。

➢新增主表字段:在左侧选择“主从表演示”,然后点击“新增字段”即可增长主表字段。

我们新增一种“mainfield1”,字段描述“主表字段1”。

如下图:➢新增从表字段:在左侧选择“第一种表体”,然后点击“新增字段”即可增长从表字段。

我们新增一种“childField1”,字段描述为“从表字段1”,如下图:4.点击保存5.查看新建单元所产生旳对象:打开业务设计视图。

在目录下找到本次新建单元产生旳所有对象。

见下图中选中部分:各扩展名结尾文献旳含义如下:Entity:实体对象。

Table:数据表。

Query:查询表。

Relation:实体关系表。

即实体间相应关系。

Ruleset:Ui:界面。

Bizunit:业务对象。

6.修改实体对象1)主表实体对象旳基本信息:双击打开MainChild_Demo.entity。

一方面展示旳是实体对象旳基本信息,见下图:➢父实体对象:是MainChild_Demo实体对象旳父类。

可以看到,它继承自com.kingdee.eas.framework.app.Database对象。

从这个对象继承过来旳对象,拥有数据库编辑方面旳功能。

➢相应表对象:这个是实体相应旳物理数据表,可以看到,它相应旳是com.kingdee.eas.xuehongtao.demo.app.CT_DEM_MainChild_Demo(蓝色部分是数据表途径,根据每个人新建单元时选择旳文献夹不同而不同)。

金蝶时期的那些笔记

金蝶时期的那些笔记

晚上睡不着,打开电脑翻到了一些当年在金蝶时写的笔记,还是让它们出来透透气吧,要不连我都忘记自己曾经写过这些东西了。

金蝶是我第一个东家,也是我技术能力提升最快的地方,真心祝福金蝶能高飞。

EAS开发环境部署一.开发环境的搭建由于现场开发环境与研发中心的差异,搭建环境会有差异,为了保证最后环境的搭建成功,我们分步骤进行搭建,以方便其中的一步如果出错,方便好定位问题1.1使用BOS启动客户端启动BOS,新建一个工程加载EAS Jar包(D:\kingdee\eas\server\lib\下的所有目录的jar包,有些麻烦,所以可以考虑把所有jar包拷贝到一个目录下)这里我把所有的jar包都拷贝到了我自己建的目录allJars然后BOS加载添加外部JAR设置JVM参数-DEAS_HOME=D:\kingdee\eas(EAS_HOME相当于JDK_HOME)-DEAS_SERVER=tcp://localhost:11034(服务端的IP)-Dlog4j.configuration=file:D:\kingdee\eas\client\deploy\client\log4j.properties( Log4j日志配置文件路径,可以没有这个参数)Ok,jar包加载了,启动参数设置了后还需要修改几个地方D:\kingdee\eas\client\deploy\client\vmoptions.properties增加客户端启动的元数据加载路径,这部非常关键OK,现在可以启动试试了OK,搞定(这只是万里长征的第一步)1.2部署自己的代码和元数据到环境中这一步也就是让你的代码和元数据要优先于EAS原有代码和元数据的加载代码优先的设置方法:虚拟W盘,命令:subst w:你要虚拟的目录(相应的去掉W盘的命令是subst w: /d)W盘建立好后,在W盘创建dev目录,并建立两个文件server-user.liblist和client-user.liblist这两个文件用于记录优先加载的目录是那些,因为我开发的代码都会编译到D:\MyCode\EAS_01\bin,所以我制定客户端优先加载这个目录,服务端是一样的道理然后我们设置元数据的优先加载方式客户端,修改D:\kingdee\eas\client\deploy\client\vmoptions.properties,修改部分见红线,因为我的元数据会发布到D:\kingdee\apusic\metas;,所以这里可以设置为优先加载服务端修改D:\kingdee\eas\server\bin\\common.pm这个文件,原理和客户端修改类&#20284;这个时候,基本都差不多了,我们尝试下看我们的单据是否能够被优先加载(这里有点文档思路写的有点跳跃,大家将就着看把,时间紧迫,顾不得字斟句酌了,J)1.3启动EAS,看我们的单据能否使用首先用administrator登陆增加到EAS菜单中去重新用用户登陆,可以看到我们的菜单项了EAS是MVC架构的么?2006年3月EAS是MVC架构的么?逐一分析,先看看EAS是否具备M、V、C这三个元素Modle--xxxControllerBean,在ControllerBean中除了定义了对实体的CRUD(addnew,getValue,update,delete)操作外,还包括实体相关的业务操作方法,如submit,audit,freeze等,应该算的上标准的Modle,下边是摘抄的一些对Model的定义模型(Model):就是业务流程/状态的处理以及业务规则的制定。

金蝶EAS BOS工作流开发

金蝶EAS BOS工作流开发

金蝶EAS BOS工作流开发1. 流程配置基本知识及示例1.1. 重要概念1.1.1.流程变量流程变量是工作流引擎和业务系统的数据交互的桥梁。

工作流承载业务,驱动业务流程,但是不会执行业务。

工作流中的业务执行,全部都会委托给具体的业务模块执行。

那么,这些被工作流分割的业务功能,在工作流中被调用执行的时候,如何保证做操作的数据的一致性?通过流程变量,在每一步的业务功能执行的过程中,将业务数据保存在流程变量中,那么整个流程的后续活动中,都可以引用该流程变量,来完成业务功能,保证业务数据的一致性。

例如:在凭证的审批流程中,新增凭证审批,审批的时候为什么可以正确定为到刚刚提交的那张凭证,而不是别的凭证?流程变量起到了重要的作用。

在凭证新增之后,将可唯一标示凭证的ID保存到流程变量中,在审批的时候将流程变量中的值传递给凭证,就可以根据这个ID获取到一张凭证了。

流程变量在流程实例的生命周期内都是有效的。

1.1.2.任务输入输出任务输入:在业务发生之前,有工作流传递给业务的数据。

以凭证的过账为例,某个用户收到一条凭证过账的消息,双击消息处理。

在双击之后、凭证的界面弹出之前,工作流会把定义的入口参数变量中的值传递给凭证,凭证根据这个值来展现特定的单据,展现特定的功能。

任务输出:在业务发生之后,由业务系统传递给工作流,需要保存在流程变量中的数据。

仍以凭证过账为例,在用户操作完凭证过账之后,工作流继续流转之前,如果流程定义中定义了任务的输出,那么,就会将凭证对应的属性的数据,保存在流程变量中。

已备在后续的流程活动中使用。

1.2. 注意事项l 绘画工作流图之前一定要先将业务流整理清楚,分析业务流的特性,提取可以抽象出来公用的东西,分析是否可以进行优化等,好的业务流程可以直接映射为工作流流程。

l 利用“流程变量”的威力,建立单据和流程之间数据交换的桥梁。

输入输出参数用来在流程和单据之间进行数据的传递。

输入输出参数和流程变量搭建了流程和单据之间的数据联系通道。

金蝶EASV8.0_BOSWeb平台培训_总体篇03

金蝶EASV8.0_BOSWeb平台培训_总体篇03
支持的浏览器
IE 8+
推荐的浏览器
IE 11
Chrome 23+
Chrome 28+
Safari 5+
Safari 5+
响应式布局-自适应各种分辨率,推荐:1280*1024/1024*768
P9
Web安全性
1、身份安全
EAS统一身份认证 CA认证支持
2、通讯安全
数据传输加密 https支持
②机密信息 严禁泄露
P26
Web应用组件
Web组件体系
– 显示及/或处理逻辑的一 个片段
组件 描述
列表显示组件
通用查询组件 DAP组件 工作流组件 BOTP组件 打印套打组件 附件管理组件 引入引出组件 通用F7组件 各种基础F7组件
根据Query进行列表显示及操作
浮动 生成凭证/删除凭证,生成/删除管理凭证 审核、反审核、流程图 推/拉生成、联查单据、上查、下查 多附件文件的上传、存储处理 导入或导出Excel文件数据 组织/物料/客户/供应商/科目/职员/…
模块A 后台服务 模块B 后台服务 模块C 后台服务 模块D 后台服务 模块… 后台服务 模块… 后台服务 模块… 后台服务
P18
显示风格 CSS3
业务事件逻辑 JS 基础控件 JQUERY
Remote Local Remote Local
权限 License HTTP缓存处理
Remote Local
基础服务
服务注入
Remote Local
②机密信息 严禁泄露
基础服务及功能组件
统一身份认证 License
App Server
权限服务
功能权限 字段权限 BOS基础服务引擎

金蝶EAS_BOS开发平台培训体系

金蝶EAS_BOS开发平台培训体系

1. 倒入解决方案。 2. 新建业务单元。 3. 菜单管理。 4. 发布业务单据。 5. 编写 java 代码。
开发流程(设计工具方式):
1. 倒入解决方案,或者自己新建项目。 2. 新建元数据。 3. 发布元数据。 4. 编写 java 代码。
客户端-----服务端
客户端: 1.获取界面数据。(EditUI 可以通过框架自动将界面控件中的值绑定到 editData 中);
例如: 在该类中我们可以重写_save()方法。这个方法主要是实现保存,我们就可以在该方法中 添加自己代码逻辑。 4.*EditeUI 类是客户端编辑界面对应的类。
5.*ListUI 类是客户端叙事簿界面对应的类。
4.1.2 参考资料
资料\BOS V6.2 开发指南_元数据介绍.pdf 资料\通用 Query 查询开发指南.doc 资料\BOS Studio 开发指南(元数据).ppt
//获取币别的远程调用
界面控制
一般在界面的 onLoad 方法 或者 onShow 方法中控制界面一些属性。 例如:隐藏一个控件。 public void onShow(){
txtName. setVisible(false); //设置 txtName 控件不可见 }
3.1.2 参考资料
资料\开发流程\BOS V6.2 开发指南_Studio.pdf 资料\开发流程\EAS 开发流程.doc 资料\开发流程\视频\6.BIM 币别\Currency.swf
EAS BOS 开发平台培训体系
1 EAS BOS 框架结构简介
1.1 学习内容
1.1.1 概述
什么是金蝶 EAS BOS
BOS,Business Operation System,业务操作系统,是金蝶融合多年的企业应用软件的经验以及 MDA 理念研发新一代技术平台,是金蝶公司全新的管理软件开发工具和管理集成平台。金蝶 BOS 提供了基于模 型驱动架构(MDA)的开发模式和相关的工具,成功的解决了企业应用软件在开发、实施和维护过程中的 质量、周期、成本、风险等方面的问题,并使企业应用软件能够满足企业管理行业特性、企业个性化和持 续完善的要求,对于企业应用软件在行业应用开发和维护、实施带来了全新的应用模式和革命。

EAS系统初始化培训笔记(1)

EAS系统初始化培训笔记(1)

六和集团金蝶EAS系统初始化培训笔记初始化步骤维护组织单位---建部门---建职位---建职员---权限维护(即建用户)---细化科目---辅助项目---金额录入---正常使用管理单元(即组织单元):先用管理员进入系统,维护组织单位、建部、建职位、建职员、赋权限,维护以上内容必须是管理员才有权限;维护组织单元时先维护“行政属性”和“财务属性”。

行政属性中维护“上级行政组织”、“组织单元类型”、“库存委托组织”行政组织中的组织单元类型选公司(此为针对公司组织单元架构的,当定义部门组织单元架构时此选项就选部门了);财务属性中行业为零售行业,财务实体组织打勾,本位币核算;采购属性中“实体库存组织”添加、“采购实体组织”打勾、“上级采购组织”维护、“记账委托组织”维护、“行政组织”中添加公司所有部门(此操作需要在建部门后再回来添加);销售属性同上;库存属性中注意“业务状态”为正常使用;“成本中心”和“利润中心”为虚体组织,注意“实体组织”栏不打勾;HR组织默认不维护;以上所有部门都设“行政组织”;建部门:建部门时只定义“行政组织”和“责任中心-成本中心”、“责任中心-利润中心”三个项目,“行政组织”属性中“组织单元类型”选为“部门”(在此就可以看到与公司组织单元架构的区别了),“责任中心-成本中心”属性中的“类型”根据单元属性选择;部门流水号建议用公司编码+部门编码(流水号,两位即可);建职位、职员、用户:职位编码用:公司编码+部门编码+流水号;注意要在各个部门下建设职位,即鼠标点部门图标后再点新增;各部门首次建的职位为本部门的“负责人职位”,此选项会自动打勾,本部再建人员的上级职位为本部门主管,注:各部门只有一个“负责人职位”选项可打勾;建职员时候选中该职员所属职位在点击新增进行,注:定义职员时“编码”不用填,为自动形成;EAS有两类用户:“管理员”和“普通用户”。

“管理员”负责维护管理单元、建立用户和设置权限,管理员不能做业务操作;“普通用户”可以维护组织单元、基础数据以及执行各项业务操作。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

金蝶EAS BOS开发学习笔记一.环境准备先把需要用到的透视图和相应的视图打开,在后面的练习中需要用到。

导入eas包后的结构如上图所示。

BOS透视图下常用到的窗口如上图所示,这些必须打开。

项目属性配置如下图所示:下面是Java透视图中的配置。

EAS 项目的配置数据中心配置调试Config二.需要用到的热键CTRL+SHIFT+R 打开资源CTRL+SHIFT+T 打开类型三.制作第一个列表查询界面打开“金蝶BOS设计开发工具”透视图1.打开eas/metadata/com/kingdee/eas/demo 节点说明:app目录下一般存放实体、表、查询等元数据;Client目录下一般存放ui,即界面数据;其他公共对象,如枚举、异常等通常放在与app、client同级目录中。

2.在app文件夹下新建实体XueLi(学历),父实体选择com.kingdee.eas.framework.app.DataBase3.右击XueLi.entity,在弹出菜单中选择“实体导出表”,保留默认值,名称为T_DE_XueLi4.打开T_DE_XueLi.table,修改主键名称,避免因为重名导致建表错误5.右击T_DE_XueLi.table,选择“导出...”,在弹出窗口中选择“导出数据表”6.打开管理控制台,在“数据中心”选择使用的数据中心,再打开“数据库管理”,把生成的CreateTable.sql中的内容COPY进去,点击工具栏的“执行(F5)”,最后“提交”。

7.在app文件夹下新建查询XueLiQuery,实体选择XueLi.entity8.打开查询XueLiQuery,选择字段标签页,选择“导入”,将要查询的字段添加进来,并调整各字段顺序。

还应该在“其它”页中定义排序和主键字段。

9.在client文件夹下新建UI,父对象选择com.kingdee.eas.framework.client.ListUI(列表界面),BO对象选择XueLiQuery.query,其他用默认值即可。

(W:\apusic\metas)10.单击鼠标右键,在弹出菜单中选择“编辑表信息”,选择ID列,把hide属性值修改为true,以隐藏不希望在列表中显示的列。

注意:ID列不管是否需要显示,必须要存在于列表中,否则会出现后文所述的错误。

四.发布列表界面,查看效果1.建立Java发布目录:D:\gmis310_src\demo\dev\src2.选择包的根节点eas,右键选择属性,在弹出窗口中选择Solution发布方案信息,新增一个发布方案,命名为demo3.Java发布目录输入前面建立的目录,J2EE发布目录及元数据发布目录输入与其他发布方案相同的目录W:\apusic\metas4.选择app目录下XueLi.entity,单击右键,选择发布;发布方案选择demo,完成后察看“校验信息”视图,发现有错误提示,直接双击,打开错误5.在逻辑键信息中增加CoreBase.id,保存6.清除校验信息视图中的内容,再点击工具栏上的“清除元数据缓存”,否则有可能会导致再次发布失败7.再次发布XueLi.entity,成功。

8.选择demo文件夹,右键,选择“发布”,将前面建立的所有元数据(.table,.entity,.query,.ui)全部选中,再次进行发布。

9.切换到Java透视图。

10.选择bs_dio节点,单击鼠标右键,刷新,让新建立的demo文件夹显示出来。

11.选择bs_dio节点,单击鼠标右键,“构建路径”->“配置构建路径”,将"demo/dev/src"添加进来,在自动构建完成之后,可以在D:\gmis310_src\bin\com\kingdee\eas\demo 看到编译好了的class文件12.重新启动gmis_server服务器,然后用administrator用户登录13.打开“系统->客户化菜单编辑”,新增菜单,UI对象为com.kingdee.eas.demo.client.XueLiListUI14.保存后重新登录,进入系统后可以看到此菜单,但此时双击报错,查看控制台日志,可知是有抽象类方法没有实现15.在Java透视图中打开XueLiListUI.java文件,此时可以看到有错误提示,点击鼠标,自动实现接口类的框架代码。

此时可以看到项目已经不再报错了。

进入系统后,发现点击“新增”按钮时报错。

16.按CTRL+SHIFT+T,查找DiplomaListUI,打开DiplomaListUI.class文件(这是系统中已有的学历窗体)。

17.在XueLiListUI.java中,参考DiplomaListUI实现getEditUIName和getBizInterface方法。

protected ICoreBase getBizInterface() throws Exception { return XueLiFactory.getRemoteInstance();}protected String getEditUIName() {return"com.kingdee.eas.basedata.hraux.client.DiplomaEditUI";}至此,列表UI已可正常执行,但新增界面调用的是系统原有的DiplomaEditUI。

接下来再实现我们自己的EditUI。

五.制作对应的编辑界面1.切换到BOS设计视图,在Client下新建UI,命名为XueLiEditUI,父对象为com.kingdee.eas.framework.client.EditUI(编辑界面),BO对象选择XueLi.entity,绑定控件时只保留需要用户输入的控件。

2.发布此UI,发布方案选择demo3.切换到Java透视图,刷新/bs_dio/demo/dev/src 目录,让新加的UI出现在树中,此时会自动构建,提示有错误4.打开XueLiEditUI.java,查看错误信息,发现是有未实现的抽象方法,生成它5.打开DiplomaEditUI的JAVA类,将createNewData和getBizInterface方法的代码COPY到XueLiEditUI.java中,并做相应修改。

6.打开XueLiListUI.java,修改getEditUIName方法,返回值改成com.kingdee.eas.demo.client.XueLiEditUI7.重新运行代码,可以看到现在已可以调出新做的编辑窗口,增加二条数据,可以成功保存。

8.返回到ListUI,点击各条记录时,发现提示"没有定义正确的keyField,请重载getKeyFileedNmae()方法"。

(如果前面步骤严格按照截图中操作,则不会出现此错误,因此不需要后面的这几步)9.经比较,发现在查询对象中没有定义主键ID。

因此,打开XueLiQuery.query,在字段页中增加id字段,在其它页中增加id字段的主键定义。

10.问题还不在这里。

打开XueLiListUI,重新绑定XueLiQuery.query,把ID列加入到表格中,然后设置此列为隐藏。

11.保存后重新发布,再在java视图中刷新,重新构造应用。

12.重启Server,然后起动应用,测试成功。

六.需要注意的问题1.关于发布的问题只要是更改了app下的对象,一定要重新发布。

由于app的发布目录是在W:\apusic\metas\com\kingdee\eas\demo\app目录下,这是服务器的目录,因此发布之后必须要重启服务器才能生效。

如果更改了client下的对象,由于只是在客户端的,因此发布后只需重启应用即可。

2.关于查询时的过滤条件问题如下图所示,在查询时,过滤条件中没有可供选择的内容。

解决方法是打开列表界面的查询对象,如上图所示,在扩展属性中加入通用查询条件即可。

注意此扩展属性是针对每个字段进行设置的。

3.EditUI中数据保存前,对数据进行合法性校验的问题通常有二种方法。

一种是重载actionSubmit动作,在代码中进行处理。

此种方法需要先在EditUI中生成Action事件,以便在发布后超类中有相应的虚方法,如此在继承类中才可以重载方法。

public void actionSubmit_actionPerformed(ActionEvent e) throws Exception{//名称是否可为空if (txtName.getText() == null || txtName.getText().trim().length() == 0) { MsgBox.showError(this, "请输入名称!");this.txtName.requestFocusInWindow();return;}//编码是否为空if (txtNumber.getText() == null || txtNumber.getText().trim().length() == 0) {MsgBox.showError(this, "请输入编码!");this.txtNumber.requestFocusInWindow();return;}s uper.actionSubmit_actionPerformed(e); }此种方法较繁琐。

另一种方法较简单。

打开基类的EditUI.class,可以看到有verifyInput方法是空的,在保存之前基类会调用此方法。

因此,只需要在继承类中重载实现此方法即可。

在大多数情况下,推荐使用此种方法进行数据合法性校验。

protected void verifyInput(ActionEvent e) throws Exception {super.verifyInput(e);//名称是否可为空if (txtName.getText() == null || txtName.getText().trim().length() == 0) { MsgBox.showError(this, "请输入名称!");this.txtName.requestFocusInWindow();SysUtil.abort();}//编码是否为空if (txtNumber.getText() == null || txtNumber.getText().trim().length() == 0) {MsgBox.showError(this, "请输入编码!");this.txtNumber.requestFocusInWindow();SysUtil.abort();}}七.第二个DEMO:制作一个主从表示例1.在app文件夹下新建实体OrderSheet (订单)2.。

相关文档
最新文档