解构金蝶EAS 开发工具

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

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

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

根目录下级目录文件后缀
BOSModularboscommon/eclipse/plugins/com.kingdee.bos.metadata_6.1.0/schema.exsd
BOSModularboscommon/eclipse/plugins/com.kingdee.bos.toolcommon_6.1.0/schema.exsd
BOSModularwfdesigner/eclipse/plugins/com.kingdee.bos.workflowdesigner_6.1.0/schema.exsd
BOSModularrcs/eclipse/plugins/com.kingdee.bos.rcs_6.1.0/schema.exsd
BOSModularwebbim/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 内存的组合,还能应付本机产品数据库和开发工具一起跑)。再就是,避免发布和标准产品表名称、字段名称一样的数据库表,防止冲突。有什么不懂的,在缺乏文档的情况下面,先研究标准产品的源代码。:)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值