?????? 代碼生成現在已經逐漸成為軟件開發中的一種標準技術,在眾多的軟件領域都大大減輕了我們重復勞動的工作量。程序中總是存在著這樣那樣的隱蔽的關聯,它們無法在通用的程序語言框架下得到明確的表達,代碼生成是我們突破既定的語言和框架限制的一種重要手段。但是代碼生成也存在著嚴重的弊病,一方面一般的程序語言在設計時沒有考慮到和代碼生成工具的相互配合,因此生成代碼是一次性的,代碼生成工具無法以增量的方式修正已經生成的代碼。另一方面,程序的結構是復雜的,代碼生成工具一般基于某種簡化的通用的程序模型(例如CRUD)來產生代碼,它無法承載完整的程序結構,因此代碼生成后手工調整量仍然很大,有的時候甚至為了微小的界面調整,將生成的代碼修改的面目全非,無法發揮代碼生成的優勢。
?????? 在witrix平臺中主要使用meta generation而不是code generation. meta實際上是對一種定制模型(model)的描述,它在某種意義上可以看作是完整程序的簡化版本,但它本身并不意味著最終的程序結構。在witrix平臺各處meta的使用都是可選的, 特別是在多變的前臺頁面,我們可以選擇根據meta描述自動生成界面,也可以選擇通過<df:Field name="字段名"/>來引用單個字段的meta數據. 在witrix平臺中, meta可以看作是系統運行的內核, 它通過syncWithModel等屬性與設計工具發生耦合. 當設計模型修改之后, 這種修改能夠以增量的形式通過可控制(修改)的信道傳播到系統各處.
?????? 在witrix平臺中主要使用meta generation而不是code generation. meta實際上是對一種定制模型(model)的描述,它在某種意義上可以看作是完整程序的簡化版本,但它本身并不意味著最終的程序結構。在witrix平臺各處meta的使用都是可選的, 特別是在多變的前臺頁面,我們可以選擇根據meta描述自動生成界面,也可以選擇通過<df:Field name="字段名"/>來引用單個字段的meta數據. 在witrix平臺中, meta可以看作是系統運行的內核, 它通過syncWithModel等屬性與設計工具發生耦合. 當設計模型修改之后, 這種修改能夠以增量的形式通過可控制(修改)的信道傳播到系統各處.