方舟 陳陽 李銳 馬超


摘? 要:為了提高復雜軟件服務系統的構建效率,文章提出了一種基于擴展Petri網的軟件服務模型設計方法。首先,該方法將注冊的軟件服務轉換成Horn子句,并將用戶需求轉換為Horn子句的事實和目標,接著通過邏輯推理來構建完整的軟件服務流程,將得出的Horn子句映射至擴展Petri網上,構建出滿足用戶需求的抽象服務集,最后通過案例驗證了該方法的可行性。
關鍵詞:軟件服務模型;Petri網;Horn子句;抽象服務集
中圖分類號:TP18? ? ? ? ?文獻標志碼:A? ? ? ? ?文章編號:2095-2945(2020)05-0087-02
Abstract: A service model design method based on extended Petri nets is proposed in this paper. First, the registered service is converted into a set of Horn clauses, and the input and output parameters provided by the user are converted into a set of facts and goals in the Horn clause. Then, this paper constructs a complete service process by logical reasoning, maps the Horn clauses obtained to the extended Petri network, and constructs an abstract service set that finally meets user expectations. Finally, a case is given to verify the feasibility of the method.
Keywords: software service model; Petri net; Horn clause; abstract service set
隨著用戶需求的個性化程度的提升,軟件服務系統的構建難度日益增加[1-2]。用戶除了關心功能性方面的可滿足性外,對非功能性發方面的可滿足度也越加關注。針對這一問題,本文提出了一種基于擴展Petri網[3]的軟件服務模型設計方法,利用Petri網直觀的圖形建模方式,以及異步和并發的特點,將其運用至服務組合[4]問題上,并結合Horn子句和T-不變量對軟件服務組合過程中的過程進行邏輯推理,最終構建出一組滿足用戶期望的抽象服務集。
1 基于擴展Petri網的軟件服務模型
該模型架構分為三層,查詢層、抽象層和具體層,如圖1所示。查詢層是用戶層,在該層將用戶的輸入轉換為機器可識別的語義軟件服務,它由提供給用戶一個表達和提交查詢語句到軟件服務接口的關系集合組成,可使用一種從XML文檔中抽取數據查詢語言規范XQuery來構造。然后根據用戶的輸入和輸出請求的合成服務轉換為Horn子句的事實和目標,從而進行邏輯推理推算出可能的抽象服務。
抽象層負責將軟件服務的非功能約束擴展到經由Petri網轉化的抽象服務流程中,構建一套含有非功能性約束的抽象服務流程。具體層存在著與抽象層對應的各個具體的服務,可以實現用戶的實際功能。這些服務由一些服務提供者或者是服務生產廠商提供。他們將開發后的具有某一功能的服務發布到服務注冊中心中,供需求者遠程調用。
2 抽象服務流程構建
2.1 Horn子句邏輯推理
Horn子句可以接受用戶輸入的標準化參數,將非關系語句轉換為數學上的邏輯推理問題,Horn子句有三種描述形式規則、事實、和目標,推理流程如圖2所示。通過這三種規則,Horn子句每次最多接受一組分析數據,每次的到一個關聯關系,一個規則化的Horn子句如式(1)所示。
其中,Pi和Q都表示著邏輯上的命題,∧和->表示著數學上的邏輯連接符,它們分別代表歸并和推出關系。在這個式子中,如果所有的命題P都被滿足的話,就可以推出結論Q為真。
2.2 Petri網的Horn子句推理
在Horn子句網Petri網上的轉化中,先通過算法1求解與Horn子句相互兼容的T-不變量集和。然后根據算法1結果,通過算法2求解最終的Petri網模型PNcs。
輸入:服務組合對應的Petri網關聯矩陣C,T-不變量Xi∈XSc.
輸出:Xi對應的合成服務的Petri網模型PNcs.
Step1. 刪除關聯矩陣C中除Xi中不變0的變遷所對應的行以外的其他行,得到一個新的矩陣,記為C''.
Step2. 刪除矩陣C''中元素全是0的那些列,得到矩陣C''.
Step3. 根據矩陣C''',我們可以得到一個Petri網模型PN''',并用每個變遷對應的規則的部分附屬參數
Step4. 合并網PN'''中那些標記一樣的變遷(表示這些變遷代表同一個軟件服務),即將PN'''中所有標記一樣的變遷用一個新變遷表示。該新變遷的前集和后集分別是所有原變遷的前集和后集的并集,新變遷的標記不變。將新的Petri網模型標記為PNcs.
3 案例分析
根據上述的模型,我們模擬了一個服務組合案例,在該案例中,我們模擬了7個可用的軟件服務和該用戶對該場景下的輸入參數請求,這7個軟件服務均會接收對應的輸入參數,輸入正確的參數后會產生一個輸出的參數。每一個服務都會有相應的行為約束。
通過上面的建模方法,我們建立一個包括10條Horn子句的子句集:
根據這10條Horn子句,構建出Horn子句集的Petri網模型如圖3所示。
利用上面提到Horn子句集到Petri網的轉換程序,我們可以得到該子句的Petri網模型關聯矩陣。上述子句集對應的Petri網模型如圖4所示。
通過提出的模型與算法,最終構建出了一套符合用戶期望的抽象服務集,驗證了方法的可行性。
參考文獻:
[1]王寧.基于Web的領域知識圖譜構建平臺的研究與實現[D].北京郵電大學,2019.
[2]Xu X, Motta G, Tu Z, et al. A new paradigm of software service engineering in big data and big service era[J]. Computing, 2018,100(4):353-368.
[3]韓敏,孫國慶,鄭丹晨,等.一種基于時變Petri網的服務組合質量檢驗方法[J].軟件學報,2019,30(08):2453-2469.
[4]宋航,王亞麗,劉國奇,等.基于改進多目標蜂群算法的軟件服務組合優化方法[J].東北大學學報(自然科學版),2019,40(06):777-782.