解构金蝶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个,罗列在下面的表格就比较方便阅读了:

根目录 下级目录 文件后缀
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,金蝶,开发工具)