呵呵,要看懂这些类,一定要好好看看它们后面对应的数据结构,首先MTable对应于好像AD_Table这个表,一个表对应一个Tab,几个Tab对应一个窗口,一个Tab里面有一个JTable,里面放的是MFiled,对应于AD_Field,还有一个AD_Column,没时间了,明天再说吧。

解决方案 »

  1.   

    compiere的主要思路是这样的,通过一个表的名字来在数据库中调用一个存储过程(表现为创建列这个process)。这个存储过程查找在数据库中的这个表中存在的字段而在AD_Column这个表中又没有的字段,并把这些字段赋一些默认值来来插入到AD_Column表中,也就是说AD_Column这个表是用来描述各个表的字段的。还有一个表叫AD_Table来存放表的。其中的灵魂就是MField类和AD_Field这个表,这个表中是描述一个窗口中的一个TAB页对应的表的各个字段,就是对AD_Column的进一步描述,一个AD_Column可能对应几个 AD_Field。它描述的是这个字段在这个Tab页中显示的是按钮还是编辑框,有效值是什么,有没有关联到什么逻辑,主要是一个界面属性。然后在Tab页中利用了一个卡片式布局管理器,一个是单行显示一个就是多行显示,多行显示是用了一个JTable,单行显示是一行数据的另外一种布局方式,基本上是最多两列,行数不限。可以简单调整的。
    在一般它的模型是MO方式对应的如MField对应于MFieldVO,后者主要处理数据库操作。
    布局管理器的处理主要是放到GridController.java里面的,大部分的C/S界面代码都在grid这个目录里面。
    也就是说基本上model里面是模型,grid里面是界面,控制器分散在两者之间。
    至于B/S界面用了同一套模型,只不过解释器不同,用的是apache的一套能生成html控件的类库,实现上有一些别扭得地方。
      

  2.   

    那Callout,CalloutEngine,以及扩展CalloutEngine的那些类主要是做什么用,是怎么实现的呢?
    说实话,看了几天,脑子里一团浆糊....
    还请赐教
     pentax我给你发了CSDN短信,希望你能帮帮忙
      

  3.   

    Well done pentax()! let me up you.