專利名稱:面向服務的基于業(yè)務規(guī)則引擎的業(yè)務規(guī)則設計方法
技術領域:
本發(fā)明屬于計算機圖形編輯器技術領域,特別涉及一種將業(yè)務規(guī)則進行圖形化描述并轉(zhuǎn)化為規(guī)則語言的方法。
背景技術:
業(yè)務規(guī)則引擎,是一種嵌入在應用程序中的組件,主要功能是根據(jù)業(yè)務規(guī)則做出業(yè)務決策?,F(xiàn)有的業(yè)務規(guī)則引擎有Dr00lS、IL0g、JesS等。在使用業(yè)務規(guī)則引擎時,IT團隊需要針對公司的業(yè)務專門開發(fā)一套業(yè)務規(guī)則設計工具,再交付給業(yè)務規(guī)則設計者使用。這種開發(fā)模式缺點其一通常類似這種業(yè)務規(guī)則設計工具的開發(fā)都是針對特定應用的,也就是說每一個特定的大型應用若想集成業(yè)務規(guī)則引擎,都必須專門為它開發(fā)一個業(yè)務規(guī)則設計工具,而缺乏一種通用的業(yè)務規(guī)則設計工具適合所有公司來設計他們的業(yè)務規(guī)則。其二 本質(zhì)上這種業(yè)務規(guī)則設計工具是某一種特定業(yè)務規(guī)則引擎(如ILog或Drools)的規(guī)則語言的設計器,而對于規(guī)則語言的語法格式方面,不同的業(yè)務規(guī)則引擎提供商基本上是各自為政,缺乏一種統(tǒng)一的標準,由此對于業(yè)務規(guī)則在規(guī)則語言層面上的描述還將受到具體的業(yè)務規(guī)則引擎的限制。
發(fā)明內(nèi)容
為解決現(xiàn)有業(yè)務規(guī)則缺乏通用性、受限于特定的業(yè)務規(guī)則引擎的約束的問題,本發(fā)明提供一種面向服務的基于業(yè)務規(guī)則引擎的業(yè)務規(guī)則設計方法,其實施方案如下面向服務的基于業(yè)務規(guī)則引擎的業(yè)務規(guī)則設計方法,包括下述步驟創(chuàng)建一個圖形編輯器;在圖形編輯器的工具欄中定義統(tǒng)一服務規(guī)則建模語言圖元庫,所述圖元庫中的圖元包括規(guī)則集標簽圖元、規(guī)則標簽圖元、條件標簽圖元、結(jié)果標簽圖元、服務標簽圖元、運算符容器標簽圖元、變量標簽圖元、運算符標簽圖元;從圖元庫中選取圖元到圖形編輯器的編輯區(qū)中,通過屬性視圖區(qū)編輯圖元屬性, 并且將圖元按照業(yè)務規(guī)則引擎結(jié)構(gòu)進行嵌套,實現(xiàn)業(yè)務規(guī)則的圖形化描述,所述將圖元按照業(yè)務規(guī)則引擎結(jié)構(gòu)進行嵌套的方法是規(guī)則集標簽圖元嵌套規(guī)則標簽圖元,規(guī)則標簽圖元嵌套條件標簽圖元和結(jié)果標簽圖元,條件標簽圖元嵌套服務標簽圖元、運算符容器標簽圖元和變量標簽圖元,運算符容器標簽圖元嵌套運算符標簽圖元,結(jié)果標簽圖元嵌套服務標簽圖元;將規(guī)則標簽圖元按優(yōu)先級順序連接;將編輯器中創(chuàng)建的對象生成統(tǒng)一服務規(guī)則建模語言代碼;將統(tǒng)一服務規(guī)則建模語言代碼轉(zhuǎn)換為規(guī)則語言代碼。上述方案中,將規(guī)則標簽圖元按優(yōu)先級順序連接,是指用帶箭頭的規(guī)則連線將規(guī)則標簽圖元進行順序連接,以確定規(guī)則之間的優(yōu)先級,其中優(yōu)先級值按箭頭所指方向遞減。作為本發(fā)明的優(yōu)選方案,本發(fā)明可作如下設計
使用基于Java的圖形化編輯框架GEF來創(chuàng)建所述圖形編輯器;使用XML來定義統(tǒng)一服務規(guī)則建模語言;所述統(tǒng)一服務規(guī)則建模語言與規(guī)則語言之間的映射關系使用XML來實現(xiàn),所述規(guī)貝1Ji吾言為Drools或ILog或Jess0GEF,Graphical Editor Framework ;上述XML,其全稱為Extensible Markup Language,中文含義為可擴展標記語言。本發(fā)明的目的是提出一種基于業(yè)務規(guī)則引擎的業(yè)務規(guī)則設計方法,使用該方法可以在SOA架構(gòu)的應用中設計業(yè)務規(guī)則。其特點是對設計不同的SOA應用的業(yè)務規(guī)則具有通用性,以及不受限于某種特定的業(yè)務規(guī)則引擎的約束。本發(fā)明方法由兩個過程構(gòu)成業(yè)務規(guī)則的圖形化設計和規(guī)則語言代碼的轉(zhuǎn)化。以下對本發(fā)明的原理作詳細介紹
統(tǒng)一服務規(guī)則建模語言為實現(xiàn)該方法,本發(fā)明提出一種基于XML的通用的規(guī)則設計語言,即統(tǒng)一服務規(guī)則建模語言,該統(tǒng)一服務規(guī)則建模語言在本發(fā)明中處于核心地位,它與業(yè)務規(guī)則引擎的規(guī)則語言在結(jié)構(gòu)上存在映射關系,該映射關系可以進行從統(tǒng)一服務規(guī)則建模語言代碼到規(guī)則語言代碼的單向轉(zhuǎn)化。統(tǒng)一服務規(guī)則建模語言的schema如
圖1所示。規(guī)則語言映射表為實現(xiàn)該方法,本發(fā)明提出一種存儲統(tǒng)一服務規(guī)則建模語言與規(guī)則語言(基于業(yè)務規(guī)則引擎)語法結(jié)構(gòu)上的對應關系的映射表,當要把統(tǒng)一服務規(guī)則建模語言代碼轉(zhuǎn)化成業(yè)務規(guī)則引擎的規(guī)則語言時,將以該映射表作為轉(zhuǎn)化的依據(jù)。針對不同的業(yè)務規(guī)則引擎可以開發(fā)相應的映射表。以下是針對Drools規(guī)則引擎開發(fā)的映射表實例的源代碼< xml version=" 1.0" encoding="UTF-8" > <!--定義規(guī)則文件映射關系-->
〈mappingxmlns:xsi=Mhttp://www.w3.org/2001/XMLSchema-instanceM
xsi:noNamespaceSchemaLocation=MD:\XML\mapping schema.xsd"〉 〈filename name="package"〉 <element>failurl</element> <attribute>name</attribute〉 <suffix>.drl</ suffix〉 〈/filename〉
〈declaration name="package"> <prefix>package</prefix> <blank/>
<attribute>name</attribute〉 <newline/> </declaration> <rule name="rule">
<rulename name="rule"> <prefix>rule</prefix〉 <blank/> <openquotation/> <attribute>name</attribute〉<closequotation/> <newline/> </rulename>
<mlepriority name="rule"> <prefix>salience</prefix> <blank/>
<attribute>priority</attribute〉 <newline/> </rulepriority> <rulecondition name="rule"> <prefix>when</prefix> <newline/>
<element>when</element> <newline/> </rulecondition> <ruleaction name="rule"> <prefix>then</prefix> <newline/>
<element>then</element> <newline></newline> </ruleaction> </rule>
〈/mapping〉業(yè)務規(guī)則的圖形化設計本發(fā)明提供一個MVC模式的設計器,能夠以圖形化編輯的方式設計業(yè)務規(guī)則,此過程設計出來的業(yè)務規(guī)則的代碼是基于統(tǒng)一服務規(guī)則建模語言的。統(tǒng)一服務規(guī)則建模語言的標簽與view層的圖元對應關系如表一所示表一
標簽名標簽類別圖元說明<ruleset>邏輯標簽Rs規(guī)則集
權利要求
1.面向服務的基于業(yè)務規(guī)則引擎的業(yè)務規(guī)則設計方法,其特征在于包括下述步驟 創(chuàng)建一個圖形編輯器;在圖形編輯器的工具欄中定義統(tǒng)一服務規(guī)則建模語言圖元庫,所述圖元庫中的圖元包括規(guī)則集標簽圖元、規(guī)則標簽圖元、條件標簽圖元、結(jié)果標簽圖元、服務標簽圖元、運算符容器標簽圖元、變量標簽圖元、運算符標簽圖元;從圖元庫中選取圖元到圖形編輯器的編輯區(qū)中,通過屬性視圖區(qū)編輯圖元屬性,并且將圖元按照業(yè)務規(guī)則引擎結(jié)構(gòu)進行嵌套,實現(xiàn)業(yè)務規(guī)則的圖形化描述,所述將圖元按照業(yè)務規(guī)則引擎結(jié)構(gòu)進行嵌套的方法是規(guī)則集標簽圖元嵌套規(guī)則標簽圖元,規(guī)則標簽圖元嵌套條件標簽圖元和結(jié)果標簽圖元,條件標簽圖元嵌套服務標簽圖元、運算符容器標簽圖元和變量標簽圖元,運算符容器標簽圖元嵌套運算符標簽圖元,結(jié)果標簽圖元嵌套服務標簽圖元;將規(guī)則標簽圖元按優(yōu)先級順序連接;將編輯器中創(chuàng)建的對象生成統(tǒng)一服務規(guī)則建模語言代碼;將統(tǒng)一服務規(guī)則建模語言代碼轉(zhuǎn)換為規(guī)則語言代碼。
2.根據(jù)權利要求1所述的面向服務的基于業(yè)務規(guī)則引擎的業(yè)務規(guī)則設計方法,其特征在于使用基于Java的圖形化編輯框架GEF來創(chuàng)建所述圖形編輯器; 使用XML來定義統(tǒng)一服務規(guī)則建模語言;所述統(tǒng)一服務規(guī)則建模語言與規(guī)則語言之間的映射關系使用XML來實現(xiàn),所述規(guī)則語言為 Drools 或 ILog 或 Jess。
3.根據(jù)權利要求1或2所述的面向服務的基于業(yè)務規(guī)則引擎的業(yè)務規(guī)則設計方法,其特征在于所述圖形編輯器的編輯區(qū)具有三個頁面,分別由三個子編輯器控制,所述三個子編輯器為Ruleset編輯器、Rule編輯器、XML編輯器,分別通過按鈕區(qū)中的Ruleset按鈕、Rule 按鈕、XML按鈕打開;所述規(guī)則集標簽圖元嵌套規(guī)則標簽圖元的方法如下用鼠標點擊Ruleset按鈕,打開 Ruleset編輯器的編輯區(qū)頁面,先將規(guī)則集標簽圖元從工具欄中用鼠標拖曳到編輯區(qū)中,再將規(guī)則標簽圖元從工具欄中用鼠標拖曳到規(guī)則集標簽圖元中;所述規(guī)則標簽圖元嵌套條件標簽圖元和結(jié)果標簽圖元的方法如下在Ruleset編輯器中用鼠標點擊待編輯的規(guī)則標簽圖元,再點擊Rule按鈕,打開Rule編輯器的編輯區(qū)頁面, 編輯區(qū)顯示出該待編輯的規(guī)則標簽圖元,先將條件標簽圖元和結(jié)果標簽圖元從工具欄中用鼠標拖曳到規(guī)則標簽圖元中,然后將服務標簽圖元、運算符容器標簽圖元和變量標簽圖元從工具欄中用鼠標拖曳到條件標簽圖元中,再將服務標簽圖元從工具欄中用鼠標拖曳到結(jié)果標簽圖元中;所述將編輯器中創(chuàng)建的對象生成統(tǒng)一服務規(guī)則建模語言代碼的方法如下用鼠標點擊 XML按鈕,在XML編輯器的編輯區(qū)頁面中即顯示流程圖生成的統(tǒng)一服務規(guī)則建模語言代碼; 所述將統(tǒng)一服務規(guī)則建模語言代碼轉(zhuǎn)換為規(guī)則語言代碼的方法如下用鼠標點擊圖形編輯器上設置的規(guī)則語言轉(zhuǎn)換按鈕,將統(tǒng)一服務規(guī)則建模語言代碼轉(zhuǎn)換為規(guī)則語言代碼并存放在計算機存儲器中。
全文摘要
一種面向服務的基于業(yè)務規(guī)則引擎的業(yè)務規(guī)則設計方法,屬于計算機圖形編輯器技術領域,解決了現(xiàn)有業(yè)務規(guī)則缺乏通用性的問題,包括下述步驟創(chuàng)建一個圖形編輯器;在圖形編輯器的工具欄中定義統(tǒng)一服務規(guī)則建模語言圖元庫;從圖元庫中選取圖元到圖形編輯器的編輯區(qū)中,通過屬性視圖區(qū)編輯圖元屬性,并且將圖元相互嵌套,實現(xiàn)業(yè)務規(guī)則的圖形化描述;將規(guī)則標簽圖元按優(yōu)先級順序連接;將編輯器中創(chuàng)建的對象生成統(tǒng)一服務規(guī)則建模語言代碼并轉(zhuǎn)換為規(guī)則語言代碼。本發(fā)明以統(tǒng)一服務規(guī)則建模語言作為中間語言,屏蔽了不同業(yè)務規(guī)則引擎在規(guī)則語言上的差異,不受限于某種特定的業(yè)務規(guī)則引擎的約束。
文檔編號G06F9/44GK102360291SQ20111029838
公開日2012年2月22日 申請日期2011年10月7日 優(yōu)先權日2011年10月7日
發(fā)明者尹子琴 申請人:云南愛迪科技有限公司