日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

信息系统开发平台OpenExpressApp - 应用模型ApplicationModel

發(fā)布時(shí)間:2023/12/2 windows 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 信息系统开发平台OpenExpressApp - 应用模型ApplicationModel 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

  下圖為OpenExpressApp的系統(tǒng)架構(gòu)圖,其中在應(yīng)用模型是作為一種元數(shù)據(jù)貫穿于整個(gè)架構(gòu),應(yīng)用模型運(yùn)行在OpenExpressApp框架之上。應(yīng)用模型是OEA的核心,理解好應(yīng)用模型才能更好的使用OEA。

應(yīng)用模型貫穿于整個(gè)架構(gòu)層

模型關(guān)注what

  OEA希望從重復(fù)的技術(shù)工作中脫離出來(lái),在經(jīng)過(guò)大量實(shí)踐基礎(chǔ)之上對(duì)一些常用功能進(jìn)行抽象,整理和總結(jié)出一些通用模型,在基于模型的描述下,我們更加關(guān)注的是what,而不是how。OpenExpressApp平臺(tái)建模工具計(jì)劃支持企業(yè)架構(gòu)建模(EA)、界面建模(UI)、命令擴(kuò)展(Command)、領(lǐng)域建模(Domain)、規(guī)則建模(Rule)、報(bào)表模型(Report)和工作流模型(Workflow)。目前OEA的應(yīng)用模型主要有UI模型和Command模型。

  模型可以通過(guò)多種方式定義,如代碼、屬性標(biāo)識(shí)和建模等,目前OEA支持類(lèi)屬性標(biāo)識(shí)生成應(yīng)用模型,這個(gè)一般用在簡(jiǎn)單應(yīng)用軟件中,計(jì)劃加入建模工具,那時(shí)就不需要在類(lèi)庫(kù)中標(biāo)識(shí)UI模型了。

ApplicationModel

  既然我們使用模型來(lái)開(kāi)發(fā),那么必然會(huì)有一個(gè)存放模型的地方,在OEA中UI模型和Command模型都統(tǒng)一放置在ApplicationModel靜態(tài)類(lèi)中。

Code
????? ///?應(yīng)用程序模型
??????public?static?class?ApplicationModel
????{
??????? ///?應(yīng)用程序中所有的命令對(duì)象
??????? public?static?readonly?CommandCollection?Commands?=?new?CommandCollection();
??????? ///?默認(rèn)的所有業(yè)務(wù)對(duì)象模型集合    public?static?readonly?ObservableCollection<BusinessObjectInfo>?DefaultBusinessObjectInfos?=?new?ObservableCollection<BusinessObjectInfo>();
??????? ///?查找指定類(lèi)型對(duì)應(yīng)的業(yè)務(wù)對(duì)象模型元數(shù)據(jù), 如果沒(méi)有查找到,則生成并存儲(chǔ)一個(gè)新的。
????????public?static?BusinessObjectInfo?AddBusinessObject(Type?boType)
????????{
????????????BusinessObjectInfo?info?
=?null;
????????????BusinessObjectInfoDict.TryGetValue(boType,?
out?info);
????????????
if?(info?==?null)
????????????{
????????????????info?
=?new?BusinessObjectInfo(boType);
????????????????BusinessObjectInfoDict.Add(boType,?info);
????????????????
if?(info.IsDefaultObject)
????????????????{
????????????????????DefaultBusinessObjectInfos.Add(info);
????????????????}
????????????}
????????????
return?info;
????????}
?????? public?static?BusinessObjectInfo?GetBusinessObjectInfo(Type?boType)
????????{
????????????BusinessObjectInfo?info?
=?null;
????????????BusinessObjectInfoDict.TryGetValue(boType,?
out?info);
????????????
if?(null?==?info)
????????????{
????????????????info?
=?AddBusinessObject(boType);
????????????}
????????????
return?info;
????????}
????}
應(yīng)用模型中有三個(gè)重要的類(lèi):
  • BusinessObjectInfo:業(yè)務(wù)對(duì)象信息,通過(guò)ApplicationModel.AddBusinessObject調(diào)用
  • BusinessObjectPropertyInfo:屬性信息,在BusinessObjectInfo構(gòu)造函數(shù)中生成
  • BusinessObjectsPropertyInfo:子對(duì)象屬性信息,在BusinessObjectInfo構(gòu)造函數(shù)中生成
  • Code
    ??public?BusinessObjectInfo(Type?boType)
    ????????{
        ? ...
    ??????????? foreach?(PropertyInfo?item?in?boType.GetProperties())
    ????????????{
    ????????????????
    if?(item.HasMarked<EntityPropertyAttribute>())
    ????????????????{
    ????????????????????BOPropertyInfos.Add(
    new?BusinessObjectPropertyInfo(item,?this));
    ????????????????}
    ????????????????
    if?(item.HasMarked<AssociationAttribute>())
    ????????????????{
    ????????????????????AssociationAttribute?attr?
    =?item.GetSingleAttribute<AssociationAttribute>();
    ????????????????????BOsPropertyInfos.Add(
    new?BusinessObjectsPropertyInfo(item,?attr,?this));
    ????????????????????
    if?(attr.ShowInTree)
    ????????????????????{
    ????????????????????????TreeChildPropertyInfo?
    =?item;
    ????????????????????}
    ????????????????}
    ????????????}
    ????????}

    UI模型

    信息系統(tǒng)開(kāi)發(fā)平臺(tái)OpenExpressApp - 內(nèi)置支持的屬性編輯方式

    信息系統(tǒng)開(kāi)發(fā)平臺(tái)OpenExpressApp - 內(nèi)置支持的列表編輯方式

    信息系統(tǒng)開(kāi)發(fā)平臺(tái)OpenExpressApp - 理解核心元素ObjectView

    信息系統(tǒng)開(kāi)發(fā)平臺(tái)OpenExpressApp - AutoUI自動(dòng)生成界面

    Command模型

    信息系統(tǒng)開(kāi)發(fā)平臺(tái)OpenExpressApp - Command擴(kuò)展機(jī)制

    更多內(nèi)容: 開(kāi)源信息系統(tǒng)開(kāi)發(fā)平臺(tái)之OpenExpressApp框架.pdf

    ?

    歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明:轉(zhuǎn)載自周金根 [ http://zhoujg.cnblogs.com/ ]

    轉(zhuǎn)載于:https://www.cnblogs.com/zhoujg/archive/2009/11/16/1603824.html

    總結(jié)

    以上是生活随笔為你收集整理的信息系统开发平台OpenExpressApp - 应用模型ApplicationModel的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。