最近上手了金蝶 EAS 的二次开发,工作之余也顺带研究了一下结构,便于日后排查,这个研究仅针对 EAS 7.5 , 即 BIM 6.1.0 。我们重点关注BOS Modular 的基本结构、整个 EAS 源代码的功能是怎么分布的、以及反向整理 EAS 报告异常的格式。

  BOS Modular 其实由一个 eclipse ganymede ,和多个制作成 eclipse 插件的金蝶插件组成。所以我会从业务建模和 设计视图这两个透视图的源码,结合金蝶自身的 xml schemas 来排查,使用时的各种看不懂的报错是什么意思。

  目前(7.5)版本的开发工具,不放在 jar 包里面的 schemas 文件,,一共有5个,罗列在下面的表格就比较方便阅读了:

根目录 下级目录 文件后缀
BOSModular boscommon/eclipse/plugins/com.kingdee.bos.metadata_6.1.0/schema .exsd
BOSModular boscommon/eclipse/plugins/com.kingdee.bos.toolcommon_6.1.0/schema .exsd
BOSModular wfdesigner/eclipse/plugins/com.kingdee.bos.workflowdesigner_6.1.0/schema .exsd
BOSModular rcs/eclipse/plugins/com.kingdee.bos.rcs_6.1.0/schema .exsd
BOSModular webbim/eclipse/plugins/com.kingdee.bos.metadatareleasebridge_6.1.0/schema .exsd

  还有在翻找各个插件模块的源码时,发现了BOSModular/boscommon/eclipse/plugins/com.kingdee.bos.common_6.1.0 目录里面的这几个宝贝,其中的 Context 类包含了完整的用户操作/ 登陆的信息:

根目录 类的名称 文件后缀
/common.jar/com/kingdee/bos/ Context .class
/common.jar/com/kingdee/bos/ Context2 .class
/common.jar/com/kingdee/util/ BaseException .class

  关于与之相关的 ,BOSModular/boscommon/eclipse/plugins/com.kingdee.bos.metadata_6.1.0 下面的 /metadata.jar/com.kingdee.bos/ConetxtUtils.class,我后面再作说明;先来看一下 BaseException 类里面一个方法,在单据提交和校验 UI 文件的时候经常会看到这些提示:

private Throwable replaceCause(Throwable oldEX){if (oldEX == null) {return null;}if ((oldEX instanceof SQLException)){SQLException oldEX1 = (SQLException)oldEX;Throwable newEX = oldEX1.getNextException();if (newEX != null) {return newEX;}}return oldEX;}

  观察了代码之后,我们可以发现,BaseException 类在这里会输出两种异常,分别是 SQLExceptionThrowable ,也就是在调用单据查询和插入时发生
还有这个,经常在校验元数据时提示类似的信息

public String getMessage(){if (!this.hasCause) {return super.getMessage();}return super.getMessage() + "\nCaused exception message is: " + (this.hasSer ? this.causeMessage : this.cause.getMessage());}

  比方说 ,校验之后,校验信息显示 nullCaused exception message is: null。最后需要研究的就是BOSModular/bosstudio/eclipse/plugins/com.kingdee.bos.newstudio_6.1.0 目录下面的 newstudio.jar, 关于各种控件的 schemas 定义、和开发工具界面绑定的 Action 类都在这里。等会儿就搞个大新闻。

  还有些不成文的解决思路,比如运行或者发布代码时 IDE 挂掉了,先看看自己的磁盘和内存够不够(我一般用 500G 硬盘和 8 G 内存的组合,还能应付本机产品数据库和开发工具一起跑)。再就是,避免发布和标准产品表名称、字段名称一样的数据库表,防止冲突。有什么不懂的,在缺乏文档的情况下面,先研究标准产品的源代码。:)

解构金蝶EAS 开发工具相关推荐

  1. 金蝶EAS开发 第一弹:了解开发工具与基本使用(上)

    毕业前夕,我来到了一家物流公司实习,为本公司做系统.我被分配的是用金蝶做财务系统的二次开发,没有文档的帮助真的让我头皮发麻,还好同事很热心,一直在帮助我,不然要上手这玩意还真的很有难度.入职已经两个星 ...

  2. 金蝶EAS开发 第二弹:了解开发工具与基本使用(下)

    承接上一篇:金蝶EAS开发 第一弹:了解开发工具与基本使用(上) ,我们继续! 3.3. client目录是客户端相关的:里面可以配置各种功能的UI: 3.3.1. UI配置文件: 3.3.2. UI ...

  3. 【Windows 应用程序开发详解】三.Windows开发工具配置与使用(一)

    [Windows 应用程序开发详解]三.Windows开发工具配置与使用 一.Visual C/C++ 我们都知道在应用程序开发的时候都是要依赖于开发工具的,Windows主机应用程序绝大多数都是使用 ...

  4. 金蝶EAS开发 第三弹:按钮变灰无法点击怎么办(包教包会)

    从第三弹开始我准备写一些开发过程中遇到的一些问题该如何解决. 一.问题描述: 当在UI界面放置了一个按钮,已经为它绑定了action(事件),甚至都已经完成了事件代码的编写,但是在测试过程中按钮无法点 ...

  5. 金蝶EAS开发笔记(理论篇)

    1.界面介绍 1. 新建业务单位,若无需求,默认选用财务组织. 2. 在项目路径下的\metadata\com\kingdee\eas\custom\bill 可改单据名称. 3. 标准:默认先在用户 ...

  6. 金蝶EAS开发认证考试

    金蝶BOS考试 https://wenku.baidu.com/view/81c8a65465ce050877321391.html WAFII 帮助系统 http://waf2.kingdee.co ...

  7. 金蝶EAS开发认证考试2

    1d 2B 3D 6C 7B 8C 9C 10B 11E 12D 14B 15D 16C 17D 18D 19A 20A 21A B 22AB 23ABC 24CDE 31对 32错 33 错 34 ...

  8. 解构金蝶 Apusic 中间件

    接触 J2EE 也有些时间了.最近打算自己写一个 EJB 容器,琢磨了一下,打算就着技术书籍和 Apusic 的源码来搞个小研究. 先在这开个坑,毕竟每天在家,除了上班准点报道,下班又准点报道,周末连 ...

  9. 金蝶BOS开发中Edit编辑界面和List叙事薄界面需要写的代码

    本人刚开始从事金蝶EAS开发,对于这个也是刚刚解除,下面是一些学习整理, EditUI中的代码 public class MyBillEditUI extends AbstractMyBillEdit ...

最新文章

  1. mpvue 转uniapp 导航栏样式错乱问题修复 tabbar 样式修复
  2. 独家 | 我们扒出了这家中国创业公司,竟比苹果iPhone X早两年推出黑科技,还不用借助深度摄像头
  3. 计算机网络---个人笔记整理
  4. 077_访问者的信息
  5. python从入门到精通pdf-跟老齐学Python从入门到精通完整版PDF_Python教程
  6. Bootstrap-按钮
  7. 「专题训练」k-Tree(CodeForces Round #247 Div.2 C)
  8. gigabyte计算机主板图解,技嘉主板BIOS如何设置及进入 技嘉主板BIOS设置图解教程(2)...
  9. python 网络监控系统手机版下载_云视通网络监控系统手机版下载_云视通下载手机版-太平洋下载中心...
  10. 如何裁剪动态图片?教你三步快速裁剪GIF
  11. 网络共享显示网络设备没有其他计算机,Win10如何寻找同一网络下的其他设备 网络发现功能无法使用怎么办...
  12. 【考研】计算机考研复试之智力题测试
  13. centos7图形化分区和ks文件分区的配置
  14. [USACO]完美的牛栏
  15. 字符串匹配——朴素算法Brute-Force(布鲁特-福斯算法)
  16. 浅析2D横版过关游戏关卡制作要点
  17. 基于openstack的云桌面开源框架
  18. 关于netty的IllegalReferenceCountException refCnt: 0, decrement: 1
  19. 2015年App Store审核被拒的23个理由
  20. 机器学习有哪些应用?可以用来做什么?

热门文章

  1. 在50户人家的狗中寻找病狗数量的趣味题目(详细解释)
  2. Zookeeper详解(五):通过JMX查看Zookeeper信息
  3. 2019前端开发面试问题及答案整理
  4. 低值易耗材料管理系统
  5. laydate设置只选择年月
  6. crypto-j(攻防世界)
  7. html5制作波浪,技能get:用HTML5实现波浪效果
  8. 05、解决chunk-elementUI.3d5a4739.js 过大导致网页打开慢
  9. 开源数库最佳实践-「3306π」社区北京站
  10. 让电脑键盘L键变成锁定计算机怎么办,教你电脑键盘按键错乱怎么恢复