唐朝勝 +劉世洪 段玉聰



摘要:在已知決策支持系統(DSS)模型表達形式的基礎上,探索其計算機實現過程中的自動化。針對目前模型驅動工程中有關DSS模型的研究集中于領域模型構建機制及平臺的搭建,而對模型復合及求解等生成機制方面的研究關注不足,本研究提出了一種基于WF工作流等技術來完成DSS模型從創建到復合運行的自動化策略,并實現了相應的框架原型。該框架提供了人性化的模型生成環境,所有實現細節對模型研究者而言均為黑盒抽象,使用者無需編程即可完成模型的生成。此策略為DSS模型構建的工程化、智能化提供了一種新的思路。
關鍵詞:決策支持系統(DSS)模型;模型驅動;WF工作流;框架
中圖分類號: TP311.52;S126文獻標志碼: A
文章編號:1002-1302(2016)12-0397-05
收稿日期:2015-10-16
基金項目:國家自然科學基金(編號:61363007)。
作者簡介:唐朝勝(1975—),男,湖南資興人,副教授,主要從事軟件工程、作物信息化研究。E-mail:tcsjk@163.com。
通信作者:劉世洪,研究員,主要從事農業信息化研究。E-mail:liushihong@caas.cn。
決策支持系統(Decision Support System,DSS)是以計算機技術為基礎的對決策支持的知識信息系統,用于處理決策過程中的半結構化和非結構化問題[1]。一般而言,決策者使用DSS不是直接依靠數據進行決策,而是依靠模型庫中的模型進行決策,所以DSS是由“模型驅動”的[2]。因此有關模型的表達、存儲及執行等模型生成方面的研究顯得尤為重要。良好的模型生成環境有助于高質量DSS模型的構建及運行,如通過配置Hadoop云環境,可實現模型的并行計算[3];或以面向服務為架構,設計作物模型區域應用Web服務組合框架等來解決作物模型與GIS集成環境問題[4]。
近年來,將模型驅動工程等新興開發方法應用于DSS模型綜合生成環境的研究成為新熱點。如有學者提出基于問題求解的模型表示方法[5]、定性定量相結合的綜合集成模型構造方法[6]、基于模型驅動開發理論的設計流程建模工具[7]或作物生長模型可視化設計工具[8],以及綜合作物系統模擬技術、知識工程及自適應軟件開發方法,運用系統分析和知識建模手段,采用模型描述腳本功能構建作物生長模型來設計智能化作物集成建模輔助系統[9]。
模型驅動工程的優點是采用相關領域的建模語言,構建可視化模型,使領域專家和設計人員專注于業務邏輯而無需過早考慮平臺相關的實現細節。然而領域模型構建后,最終還需要通過自動(半自動)的層層轉換完成從設計到實現的過渡。雖然采用模型驅動工程開發方法將有助于構建領域模型PIM(平臺無關模型),但目前針對將PIM轉化為PSM(平臺相關模型)的代碼框架構建以及模型的復合和運行方面的研究仍顯不足。從系統的計算機實現角度看,仍存在模型轉換過程中過度依賴于程序代碼等現象,缺乏自動化和智能化、面向建模人員的模型構建、復合及運行的系統環境。
由于微軟的WF提供了良好的工作流建模環境,可以在此平臺上進行二次開發,內嵌的WF工作流引擎可完成工作流的解析,因此設想DSS子模型的復合和求解過程即為一個工作流模型構建及運行的過程:(1)DSS子模型可視為一個包含求解算法的活動;(2)子模型的復合即為在工作流平臺下將多個活動按照規則構建工作流模型的過程;(3)復合模型的運行則是這些活動在工作流引擎的調度下完成的運算。
為此,本研究在已知模型表達形式的基礎上,提出一個面向建模人員、無需編程即可覆蓋模型從構建到復合運行過程的模型自動生成策略,并采用WF工作流及動態編譯等技術實現相應的原型框架。最后以作物生長模型為例,對模型的生成過程進行了驗證。
1系統總體設計
1.1系統設計策略及流程
模型自動生成策略的基本思想是首先提供一個模型構建環境,支持多種算術表達式符號的創建;其次完成模型運算的自動解析及存儲表達;最后創建WF自定義工作流設計器,實現模型程序集的構建、導入、復合和運行。綜合以上思路,得到如下設計流程圖(圖1)。
[TPTCS1.tif]
1.2系統架構
本框架設計主要包括系統架構設計以及模塊設計兩大部分。架構設計是基礎,模塊設計是核心。體系架構設計的目的是根據設計目標,確定總體結構中各模塊的分工、任務邊界以及協作機制。根據設計流程,確定整體架構3個層次:(1)獨立開放的模型創建環境;(2)自動快捷的模型文件轉換環境;(3)操作簡便的模型復合及運行環境。
1.3模塊設計
模塊是從用戶需求角度,對體系結構功能和任務有機地劃分。模塊設計時,需根據各模塊任務、邊界和工作流程,構建清晰的數據結構,完成模塊菜單以及人機交互界面設計,同時完成模塊的輸入輸出等功能[10]。結合框架的核心功能,設計了模型創建模塊、模型解析模塊、模型轉換模塊、模型復合及運行模塊等4個模塊。模塊之間可獨立運行,但又相互協作,無縫銜接,貫穿整個生成周期。
1.3.1模型創建模塊
微軟的VS2010開發環境下,結合第三方控件MathMLControl實現模型創建模塊。建模用戶可借助其數學公式編輯功能以及可視化工具箱,有效地完成較復雜的數學表達形式。保存后自動將模型表達轉換為符合MathML語法格式的XML類型文件。
1.3.2模型解析模塊
針對文檔數學公式中所涉及的MathML各種符號表達,如標志符、操作符、數字、文本等,模塊將依據后述的文法規則,采用遞歸下降語法和語義分析方法,結合標準的C#函數將其解析成C#中間代碼。解析程序使用的核心類(圖2)對應算術和代數運算符、分式和根式運算符、上下標等符號的表示以及相應的語義解析。
1.3.3模型轉換模塊
該模塊提供將C#中間代碼轉化為標準XAML工作流文件的轉換環境。為實現轉換過程的通用化,采用了VS2010中的T4文本模板。所設計的模板可以根據模型公式左右兩邊的變量自動生成輸入及輸出參數。最后采用動態編譯執行技術將包含模型參數及運算流程的中間代碼序列化為XAML文件。
1.3.4模型復合及運行模塊
此模塊提供工作流文檔復合和運行的環境,其核心就是一個內嵌WF工作流引擎[11]、能獨立運行、界面友好的可承載自定義流程設計器。包括如下功能:
(1)模型導入。模型導入的過程即為動態加載工作流文件的過程,其實質是將帶自定義輸入參數的XAML文檔進行反序列化,并將文件中的對象轉換為工作流活動實例,最后以圖形方式呈現在設計器畫布中。
(2)模型保存。模型保存過程是將設計器中的工作流定義序列化為XAML文件。這些已序列化的定義內容可以重新加載以便編輯或檢測,也可以傳遞給生成系統以供編譯,加載并調用。
(3)模型動態編譯和復合設計。模塊具備動態編譯當前已加載的工作流模型并保存為程序集的功能。進行模型復合設計時,設計者可以將多個模型程序集加載至活動工具箱,并結合WWF內置的Flowchart、Sequence、Parallel等活動一起完成工作流程的設計。
(4)模型運行。一旦模型復合設計完畢,內置的WF工作流引擎將根據設計的流程運行。
2系統關鍵問題及實現
2.1模型表達及轉換
生成過程的不同階段,模型的表達形式有所不同。因此,如何將不同階段模型的表達形式進行轉換是系統框架設計中優先考慮的問題。
2.1.1模型符號表達及存儲
在模型構建環境中,引入了第三方控件MathMLControl。它是一個數學公式可視化控件,不僅包含了大量的數學相關符號,如算術運算符號、導數符號、積分符號等,還提供了強大的數學公式編輯功能,可有效進行諸如上標、下標等形式的組合,從而完成較復雜的數學表達形
[FK(W20][TPTCS2.tif]
式。此外,模型存儲采用了基于XML標準的MathML(MathMarkupLanguage,數學標記語言)作為模型存儲形式,主要基于:(1)XML作為一種標準的、可擴展的、半結構化的標記語言,目前已經成為許多領域內常見的數據表示和交換的標準,為模型系統功能的擴展提供支持。(2)MathML作為計算機之間交換數學信息的一種標準,是由W3C(萬維網聯盟)在XML的基礎上制定而成的。利用它可以解決同一數學模型在不同平臺的差異性。由于它提供一個可視化的模型構建環境,幫助我們顯示、操作和共享數學表達式,有力地支撐了模型的集成與開發,降低了統一管理各領域模型的難度[12]。其正則文法公式如下所示:
Exp→Term{BinocularOp Term}|
BinocularOp→
LogicMo→Not
DualMo→Abs|Lb|Rb
Term→Factor{BinocularOp Factor}|
Factor→
BiMark→
通過分析,可以發現XML文件內部不僅包含了基本模型符號的表達,也包含了模型數值或邏輯運算符號的組織形式,是模型表達的結構形式與模型運算推理過程的有機結合。
2.1.2工作流模型表達
工作流文件XAML(eXtensible Application Markup Language,可擴展應用程序標記語言)是微軟為構建應用程序用戶界面而創建的一種新的描述性語言,提供了一種便于擴展和定位的語法來定義和程序邏輯分離的用戶界面,用戶可在創建過程中添加代碼,同時也可將文件保存到數據庫中。在實際運行時利用工作流引擎對文件所包含的工作流活動進行解析。在模型復合及運行階段,包含模型運算過程的XAML文件既能被可承載的自定義工作流設計器所識別和解析,也能快捷地轉換為模型程序集,方便模型的復合。
2.1.3不同模型表達形式的轉換
由于XML文件不能直接轉為XAML格式,必須借助一種中間過渡形式完成轉換。由于MathML符合上下文無關文法,當給定一個表達式句子,就可以得到一棵相應的語法樹,這也為MathML的數學語義轉換(如映射到其他數學系統中的表達式)、解析以及動態編譯提供了方便。因此首先將MathML語法結構解析轉化為包含C#運算函數的程序代碼,然后采用T4模板以及動態編譯技術將該中間代碼形式轉換為包含程序執行流程的工作流文件。其中所有的轉換細節均采用黑盒抽象,對建模用戶而言是透明的,實現了轉換過程的自動化。
2.2WF工作流設計器構建
為了方便創建、修改、監視工作流以及動態生成和加載程序集,設計器需解決如下問題:(1)可創建一個空的應用程序作為宿主;(2)提供GUI環境,包括工作流設計、工具箱和屬性等窗格,滿足良好的人機交互,即一旦將工具箱中的活動拖動到設計畫布上時,屬性網格可根據突出顯示的活動進行更新,從而保證了呈現于不同窗口中的活動類、活動類實例對象以及對象屬性之間的聯動;(3)內嵌WF工作流引擎。
2.3模型程序集編譯、復合運行
雖然DSS子模型對應的XAML文件可以在不被編譯成為程序集的情況下動態地被加載和運行,但我們更希望模型能夠以程序集的形式被包含,以方便更多的應用程序共享和使用(尤其在模型的復合階段)。此外,模塊還可以導入已有的程序集,加載其中包含模型的工作流活動類至活動工具箱。這樣DSS模型的復合也變成了按需將這些自定義的活動拖拽至設計器形成復合鏈的過程。
復合模型的運行一般離不開模型之間數據的交換。為解決參數數據的傳遞問題,即讓一個模型的輸出成為另一個模型的輸入,在最初設計模型工作流參數類型時將它們定義為輸入/輸出雙向類型。由于設計器內嵌的WF工作流引擎支持運行時動態創建新的雙向參數,這樣可將原本運行于不同進程之間相互隔離的模型參數通過這些中間參數串接起來,從而實現了數據的交流。
3框架應用案例
3.1作物模型特征及模型選取
作物生長模擬模型簡稱作物模型,是作物科學中引進系統分析方法和應用計算機后興起的新型研究領域[13]。它是對作物生長發育生理生態過程基本規律及其相互關系的量化表達,因此具有基礎性、量化性及一般性的特征[14]。已知影響作物產量重要的因素之一是凈光合率(作物生長率)[15]。包含如下子模型:
(1)總有效光吸收模型
[JZ]Iabs=0.5·(1-ρ)·I0·(1-e-k·L);
(2)CO2總同化量模型
[JZ]Ag=E·Iabs;
(3)維持呼吸消耗量模型
[JZ]Rm=TC·MC·W;
(4)溫度校正系數TC
[JZ]TC=Q10[JB([][SX(]T-Tref10[SX)][JB)]];
(5)凈光合率-作物生長率
[JZ][SX(]dwdt[SX)]=CVF·[JB((][SX(]3344[SX)]·Ag-Rm[JB))]。
3.2模型生成過程驗證
根據設計流程,這些作物模型對應的工作流活動應由前述的4個模塊相互協作共同完成。以總有效光吸收模型為例,模型從創建、解析、轉換以及活動生成的整個過程如圖3所示。其他模型活動的生成過程類似,這里不再贅述。
活動創建后,下一步就是構建工作流模型,即如何組織這些活動形成有效的工作流程。工作流的定義方式一般可采用腳本語言(如ESP、ECA規則)、圖形(擴展的Petri-net)以及混合模式等[16]。如有學者采用ESP規則定義了DSS模型集成過程[17],或采用ECA規則[18]描述企業工作流過程,以及利用ECA規則和模糊Petri-net來定義工作流異常流程等[19]。我們采用了ECA規則與WF-net混合形式對工作流模型進行定義以及實現(限于篇幅,另文詳述)。通過模型公式可以看出,總有效光吸收模型Iabs輸出結果為CO2總同化量的輸入,構成串行順序。同理,溫度校正系數TC的輸出為維持呼吸消耗量的輸入參數之一,它們之間也是串行關系。兩條串行線運行的結果分別又作為凈光合率的兩個參數輸入,且由于它們之間相互獨立,故又構成并行關系(圖4)。輸入相關參數值后,工作流模型運行結果如圖5所示,與預期結果一致。
4結論
基于已知模型的表達形式,通過建模控件完成模型的創建,將模型的運算過程轉化為可處理的工作流模型,并在模型實例化和復合階段為模型動態創建數據交換所需的輔助參數,最后完成模型的執行。從模型工程的角度看,側重于PIM的物理實現,其框架原型具備了良好的智能性和可擴展性,經過實踐檢驗,其最大特點是:
(1)人機界面友好。提供了方便、人性化的模型創建以及運行環境,具備豐富的數學符號表達以及支持拖拽功能來完成模型的復合。
(2)通用性強。采用了通用的XML文件作為存儲中介,并能方便地轉化為工作流專用文件XAML。
(3)自動化程度高。模型參數類型及個數能自動識別。能在復合階段動態地創建輔助參數。
(4)透明性好。建模過程不依賴于程序代碼,避免了建模者與程序代碼的直接接觸。
除了進一步優化集成系統框架外,還需從以下幾個方面進行探索:①支持更復雜的模型復合以及求解算法的改進;②模型的持久化及數據庫的管理;③有效地將PIM設計與實現對接;④支持網絡服務應用的擴展。
[HS2*2]參考文獻:
[1]Er M C. Decision Support Systems:a summary,problems and future trends [J]. Decision Support Systems,1988,4(3):355-363.
[2]張治. DSS模型庫管理系統設計[J]. 河南科技大學學報:自然科學版,2004,25(5):38-42.
[3]趙青松,陳林,孫波,等. 基于Hadoop 的云環境下作物生長模型算法的實現與測試[J]. 農業工程學報,2013,29(8):179-184.
[4]姜海燕,茅金輝,胥曉明,等. 基于面向服務架構和 WebGIS 的小麥生產管理支持系統[J]. 農業工程學報,2012,28(8):159-166.
[5]胡東波. 模型驅動的決策支持系統研究[D]. 長沙:中南大學,2009.
[6]陳雪龍. 面向復雜決策問題的模型構造與管理方法研究[D]. 大連:大連理工大學,2008.
[7]唐文煒,沈備軍,陳德來. 模型驅動的業務流程建模工具[J]. 計算機工程,2009,35(24):262-264.
[8]趙鑫. 基于ECore的作物生長模型構建及模型設計工具研究[D]. 南京:南京農業大學,2013.
[9]姜海燕. 基于生長模型的智能化作物集成建模輔助系統研究[J]. 中國農業科學,2008,41(3):695-703.
[10]張維理. 智能化海量空間信息分析與地圖制圖軟件包IMAT設計及構建[J]. 中國農業科學,2014,47(16):3250-3263.
[11]Bukivics B. Pro WF:Windows workflow in .net 4[M]. Apress,2010.
[12]王晨亮. 基于工作流的資源環境建模框架的設計與實現[D]. 濟南:山東科技大學,2010.
[13]高亮之. 農業模型學基礎[M]. 香港:天馬圖書有限公司,2004.
[14]薛林,鄭國清,戴廷波. 作物生長模擬模型研究進展[J]. 河南農業科學,2011,40(3):19-24.
[15]曹衛星,羅衛紅. 作物系統模擬及智能管理[M]. 北京:高等教育出版社,2003.
[16]Chen L,Li M L,Cao J,et al. An ECA rule-based workflow design tool for shanghai grid[C]//2013 IEEE international conference on services computing. IEEE Computer Society,2005:325-328.
[17]劉松. 事件和參數雙因素驅動的智能模型集成機制[J]. 計算機工程與應用,2012,48(8):28-31.
[18]Yongchareon S,Liu C,Yu J,et al. A view framework for modeling and change validation of artifact-centric inter-organizational business processes [J]. Information Systems,2015,47:51-81.
[19]Ye Y,Jiang Z,Diao X,et al. Extended event-condition-action rules and fuzzy Petri nets based exception handling for workflow management [J]. Expert Systems with Applications,2011,38(9):10847-10861.