亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于映射機制的業(yè)務規(guī)則生成系統(tǒng)*

        2015-07-10 01:11:38李偉超周興社楊亞磊
        計算機工程與科學 2015年2期
        關鍵詞:引擎定義規(guī)則

        李偉超,周興社,楊 剛,楊亞磊

        (西北工業(yè)大學計算機學院,陜西 西安 710129)

        1 引言

        隨著企業(yè)功能的日益龐大化、經(jīng)營環(huán)境的日益復雜化,及時調(diào)整業(yè)務來應對瞬息萬變的市場需求在企業(yè)生存發(fā)展中顯得尤為重要。規(guī)則引擎系統(tǒng)是完成業(yè)務邏輯快速變換的理想方案,它將業(yè)務邏輯的表達與執(zhí)行相分離,業(yè)務邏輯以業(yè)務規(guī)則的形式表示,業(yè)務流程以業(yè)務規(guī)則的執(zhí)行來完成,使業(yè)務邏輯的改變不會相應引起系統(tǒng)本身的修改,從而滿足業(yè)務快速調(diào)整的實際需求。業(yè)務邏輯在部署執(zhí)行前,業(yè)務人員要使用規(guī)則引擎解釋執(zhí)行的規(guī)則描述語言將其描述成特定格式并存入規(guī)則庫。然而,由于在業(yè)務規(guī)則領域缺少相應的標準,不同的規(guī)則引擎提供了不同的規(guī)則描述語言,例如Drools[1]使用SRL描述規(guī)則,而Jess[2]使用Lisp描述規(guī)則。這種差異性導致了同一企業(yè)環(huán)境中很難使用不同的規(guī)則引擎,當信息系統(tǒng)依賴的規(guī)則引擎需要升級更新或轉(zhuǎn)化到其他供應商提供的規(guī)則引擎時,需要采用新的規(guī)則描述語言將已部署的業(yè)務規(guī)則重新刻畫描述,這嚴重影響業(yè)務規(guī)則實施的效率,降低了系統(tǒng)的靈活性和可維護性。因而,尋求一種獨立于具體規(guī)則引擎的業(yè)務規(guī)則描述和表示方法是亟待解決的難題。

        基于以上需求,本文在分析業(yè)務規(guī)則特點及現(xiàn)有業(yè)務規(guī)則生成工具的基礎上,設計并實現(xiàn)了獨立于具體規(guī)則引擎的基于映射機制業(yè)務規(guī)則生成系統(tǒng)UniBRGS:設計了非技術性的近似英語語法的業(yè)務規(guī)則描述語言,便于業(yè)務人員便捷準確地描述規(guī)則;采用XML定義了一套獨立于具體規(guī)則引擎的中間業(yè)務規(guī)則,根據(jù)規(guī)則間元素的映射關系,實現(xiàn)了元規(guī)則與中間規(guī)則、中間規(guī)則與具體規(guī)則引擎可識別業(yè)務規(guī)則之間的互相轉(zhuǎn)換,從而實現(xiàn)了不同規(guī)則引擎間業(yè)務規(guī)則的互相轉(zhuǎn)換。論文最后的實驗表明該系統(tǒng)具有一定的可行性及靈活性。

        Figure 1 UniBRGS system framework圖1 UniBRGS系統(tǒng)結(jié)構(gòu)圖

        2 相關工作

        業(yè)務規(guī)則是用于指導業(yè)務活動的規(guī)則或策略,廣泛存在于企業(yè)的信息系統(tǒng)中。業(yè)務規(guī)則組織(Business Rule Group)[3]給出的定義包含兩個層面的意思:從企業(yè)業(yè)務角度來看,業(yè)務規(guī)則是支持企業(yè)決策、影響或控制企業(yè)業(yè)務行為的指導;從信息系統(tǒng)角度來看,業(yè)務規(guī)則是一條語句,它定義或約束業(yè)務的某些方面,其目的是為了斷言業(yè)務結(jié)構(gòu)、控制或影響業(yè)務的行為。業(yè)務規(guī)則滿足典型的一階邏輯模式,形如“條件-動作”,即當某種條件滿足時,執(zhí)行規(guī)定的動作。業(yè)務規(guī)則表述形式可描述為IF 〈Conditions〉 THEN 〈Actions〉。

        目前關于業(yè)務規(guī)則表示及開發(fā)方面有很多的研究。RuleML[4]是基于XML的通用規(guī)則描述語言,通過XSLT轉(zhuǎn)換器可將其表示的規(guī)則轉(zhuǎn)化到其他語言表示的規(guī)則,從而實現(xiàn)不同規(guī)則系統(tǒng)之間的互操作。然而,XSLT轉(zhuǎn)換器只能實現(xiàn)XML表示的規(guī)則之間的轉(zhuǎn)換,不具有通用性。Drools是由JBoss和Red Hat支持開發(fā)的開源項目,包含規(guī)則編輯、管理和執(zhí)行等一系列工具。它定義了類似于Java語法的規(guī)則描述語言DRL,并且提供了圖形化規(guī)則編輯器Drools Guvnor。Jess是一款小巧靈活的Java規(guī)則引擎,它提供了類Lisp的規(guī)則語言和基于XML的規(guī)則語言,但其規(guī)則語言語法結(jié)構(gòu)繁雜,形式化程度較高,適合具有編程經(jīng)驗的技術人員。同時,Drools和Jess沒有提供任何規(guī)則互相轉(zhuǎn)換的工具,不利于系統(tǒng)的可操作性和移植性,無法實現(xiàn)信息系統(tǒng)在各規(guī)則引擎間的無縫遷移。

        3 基于映射機制的業(yè)務規(guī)則生成系統(tǒng)

        本文描述的UniBRGS系統(tǒng)采用分層體系架構(gòu)設計,系統(tǒng)結(jié)構(gòu)如圖1所示。UniBRGS分為三個層次:表現(xiàn)層、中間層及轉(zhuǎn)換層。其中,表現(xiàn)層提供了基于向?qū)У腉UI規(guī)則編輯環(huán)境,業(yè)務人員可以使用定義的類自然語言定義業(yè)務規(guī)則,同時也可套用現(xiàn)有的規(guī)則模板,加速規(guī)則的開發(fā)。中間層根據(jù)定義好的業(yè)務規(guī)則描述語言以及業(yè)務對象所屬關系,對業(yè)務人員定義好的元規(guī)則進行詞法、語法以及語義解析,將解析信息實時上傳至表現(xiàn)層,同時根據(jù)映射關系將元規(guī)則轉(zhuǎn)換成基于XML定義的中間業(yè)務規(guī)則。轉(zhuǎn)換層根據(jù)規(guī)則引擎可解釋執(zhí)行的目標規(guī)則語法結(jié)構(gòu),構(gòu)建中間業(yè)務規(guī)則到目標規(guī)則的映射關系及映射器,完成中間業(yè)務規(guī)則到目標規(guī)則的相互轉(zhuǎn)換,從而實現(xiàn)目標業(yè)務規(guī)則之間的互相轉(zhuǎn)換。

        3.1 業(yè)務規(guī)則描述語言設計

        業(yè)務規(guī)則描述模型定義了描述業(yè)務規(guī)則的語法結(jié)構(gòu)與規(guī)范。業(yè)務分析人員深刻了解企業(yè)業(yè)務策略以及運行過程,但他們難以直接將業(yè)務策略轉(zhuǎn)變?yōu)樾问交潭容^高的目標業(yè)務規(guī)則。為此,面向業(yè)務人員設計了一套近似英語語法的業(yè)務規(guī)則描述語言UniRL,部分語法如下所示(采用巴科斯范式描述)。

        〈RuleDef〉∷=IF 〈BoolExpr〉THEN 〈Action〉

        〈BoolExpr〉∷=〈BoolExpr〉AND 〈BoolExpr〉|

        〈BoolExpr〉OR〈BoolExpr〉|

        NOT 〈BoolExpr〉|

        〈Expr〉[is] 〈RelationOp〉〈Expr〉

        〈RelationOP〉∷=greater than|less than|equal to|…

        〈Expr〉∷=〈Expr〉〈Op〉〈Expr〉| [〈Qualifier〉] 〈Object〉

        〈Object〉∷=ObjName|ObjName’s ObjName|Const|…

        〈Op〉∷=add|minus|multiply| divide

        〈Qualifier〉∷=a|an|the|its|…

        〈Action〉∷=〈ActionSt〉| 〈Action〉; 〈ActionSt〉

        〈ActionSt〉∷=[〈Object〉] 〈Method〉[〈ParameterList〉]

        〈ParameterList〉∷=〈Object〉| 〈ParameterList〉, 〈Object〉

        3.2 中間業(yè)務規(guī)則生成的設計與實現(xiàn)

        (1)中間業(yè)務規(guī)則設計。

        中間業(yè)務規(guī)則是目標業(yè)務規(guī)則互相轉(zhuǎn)換的中間橋梁,是系統(tǒng)框架的核心。中間業(yè)務規(guī)則形式獨立于形式化程度較高的目標規(guī)則,本文采用XML刻畫中間業(yè)務規(guī)則,其用XML Schema定義的部分語法結(jié)構(gòu)如下所示:

        〈xs:element name="rule" type="rule:ruleType"/〉

        〈xs:complexType name="ruleType"〉

        〈xs:sequence〉

        〈xs:element maxOccurs="unbounded" minOccurs="0" ref="rule:attribute"/〉

        〈xs:element maxOccurs="unbounded" minOccurs="0" ref="rule:parameter"/〉

        〈xs:element ref="rule:lhs"/〉

        〈xs:element ref="rule:rhs"/〉

        〈/xs:sequence〉

        〈xs:attribute name="name" type="xs:string" use="required"/〉

        〈/xs:complexType〉

        元素rule是一個復雜類型節(jié)點,包含name名字屬性和attribute、parameter、lhs和rhs四個元素。attribute表示規(guī)則的屬性,如描述信息、優(yōu)先級和有效期等。parameter表示規(guī)則的輸入?yún)?shù),每個參數(shù)有唯一的標識符并與加載到工作內(nèi)存中的事實對象或全局變量相對應。lhs元素標記規(guī)則的前條件,包含多個condition元素, rhs元素標記規(guī)則的執(zhí)行動作,包含多個consequence元素,每個consequence元素表示一個對事實對象的操作。

        (2)中間業(yè)務規(guī)則生成。

        針對UniRL文法,采用LEX工具構(gòu)建詞法解析器,將元規(guī)則分解成單詞序列;采用遞歸下降分析方法構(gòu)建構(gòu)造語法解析器,根據(jù)單詞序列構(gòu)造成抽象語法樹AST;語義解析器根據(jù)AST以及業(yè)務對象關系,分析元規(guī)則是否符合業(yè)務對象的依賴關系;構(gòu)造UniRL文法元素與中間業(yè)務規(guī)則標簽元素之間的一一映射關系,并由此將元規(guī)則轉(zhuǎn)換成中間業(yè)務規(guī)則。同時,詞法、語法及語義解析過程中的錯誤信息傳至表現(xiàn)層以及時提醒用戶。

        3.3 基于映射表的目標規(guī)則轉(zhuǎn)換

        現(xiàn)有規(guī)則引擎種類繁多,其對應的目標業(yè)務規(guī)則也千差萬別。為適用于不同規(guī)則引擎,UniBRGS系統(tǒng)針對每種目標規(guī)則語言提供了與之對應的專用轉(zhuǎn)換器,負責中間業(yè)務規(guī)則到一種目標業(yè)務規(guī)則的互相轉(zhuǎn)換。分析目標業(yè)務規(guī)則的語法元素,將中間業(yè)務規(guī)則與其元素間可以通過映射直接互相轉(zhuǎn)換的提取成映射規(guī)則(例如中間業(yè)務規(guī)則到Drools和Jess規(guī)則的部分映射關系表1所示),其他元素的轉(zhuǎn)換用專用轉(zhuǎn)換器以硬代碼實現(xiàn),從而提高轉(zhuǎn)換器的靈活性。當需要引入新的目標業(yè)務規(guī)則時,只需添加對應的轉(zhuǎn)換器即可,提高了系統(tǒng)靈活性和擴展性。通過中間業(yè)務規(guī)則實現(xiàn)目標規(guī)則間的互相轉(zhuǎn)換,降低了底層規(guī)則引擎與上層信息系統(tǒng)的耦合性。

        Table 1 Mapping for element transformation between intermediate rule and targeted rule

        4 實驗及結(jié)果

        基于以上設計方案,采用Jess和Drools作為目標規(guī)則引擎實現(xiàn)UniBRGS原型系統(tǒng),并以表2中的打折規(guī)則為例驗證系統(tǒng)設計的可行性。

        Table 2 A discount rule for some market

        具體實驗過程如下:

        (1)針對給出的某商場打折策略,在基于向?qū)У腉UI規(guī)則編輯環(huán)境中采用UniRL語法結(jié)構(gòu)正確對其刻畫描述。

        IF

        a customer’s type is GOLDEN and its purchase is greater than 500 or

        a customer’s type is SILVER and its purchase is greater than 1 000 or

        a customer’s type is BRONZE and its purchase is greater than 2 000

        THEN

        set discount 0.12 ; print it;

        (2)將驗證無誤的UniRL描述的規(guī)則通過UniBRGS轉(zhuǎn)化成面向Drools規(guī)則引擎的目標規(guī)則,如下所示:

        import com.custrule.Customer

        rule "customerRule"

        when

        cust:(Customer(type=="GOLDEN", purchase>500) or

        Customer(type=="SILVER", purchase>1 000) or

        Customer(type=="BRONZE", purchase>2 000) )

        then

        cust.setDiscount(0.12);

        System.out.println(cust);

        end

        創(chuàng)建1 000個顧客事實對象,按會員等級平均分成三類,每類顧客的消費額為0到3 000之間的隨機數(shù)。構(gòu)建Drools規(guī)則引擎環(huán)境,加載上述面向Drools的業(yè)務規(guī)則,向工作內(nèi)存添加創(chuàng)建的事實對象,執(zhí)行業(yè)務規(guī)則。規(guī)則執(zhí)行結(jié)果與預期相同。

        (3)不依賴于任何輸入,通過UniBRGS生成與上述業(yè)務規(guī)則對應的面向Jess的目標規(guī)則,如下所示:

        (import com.custrule.Customer)

        (deftemplate Customer (declare (from-class Customer)))

        (defrule customerRule

        (Customer{(purchase>500 && type=="GOLDEN")‖

        (purchase>1 000 && type=="SILVER")‖

        (purchase>2 000 && type=="BRONZE")

        }(OBJECT ?cust))

        =>

        (?cust setDiscount 0.12)

        (printout t (?cust toString) crlf))

        同樣地,構(gòu)建Jess規(guī)則引擎環(huán)境,加載面向Jess的業(yè)務規(guī)則,向工作內(nèi)存添加同(2)一樣的事實對象,執(zhí)行業(yè)務規(guī)則。其執(zhí)行結(jié)果同(2)中Drools規(guī)則執(zhí)行結(jié)果一樣。

        通過上述實驗可得,UniBRGS可以快速準確地完成業(yè)務規(guī)則的定義與轉(zhuǎn)化。通過引擎無關的中間規(guī)則,用戶可直接實現(xiàn)已生成的目標規(guī)則到另外一種規(guī)則的轉(zhuǎn)換,從而實現(xiàn)信息系統(tǒng)在規(guī)則引擎間的無縫移植。同時,UniBRGS并不只面向Drools和Jess,通過動態(tài)添加目標規(guī)則與中間規(guī)則元素間的映射關系,可支持更多規(guī)則引擎的業(yè)務規(guī)則。

        5 結(jié)束語

        當前企業(yè)通過完成應用系統(tǒng)與規(guī)則引擎的集成來統(tǒng)一定義、存儲、管理和部署運行業(yè)務決策,從而降低企業(yè)應用的復雜性,適應萬變的市場需求。本文針對目前業(yè)務規(guī)則語言繁多而造成的信息系統(tǒng)難于升級或遷移等問題,提出了基于映射機制的業(yè)務規(guī)則生成系統(tǒng),使不同規(guī)則引擎所識別的業(yè)務規(guī)則之間可以互相轉(zhuǎn)換,從而使上層應用可以不依賴于具體供應商的規(guī)則引擎,降低了企業(yè)應用系統(tǒng)與規(guī)則引擎的耦合性,提高了系統(tǒng)的靈活性和可移植性。本文UniBRGS原型實現(xiàn)是針對Drools和Jess的,未來工作將考慮支持更多主流的規(guī)則引擎,如OpenRules,同時研究規(guī)則間轉(zhuǎn)換的完備性問題。

        [1] JBoss Community. Drools—The business logic integration platform [EB/OL].[2013-05-07].http://www.jboss.org/drools/.

        [2] Sandia National Laboratories.Jess,the rule engine for the Java platform[EB/OL].[2013-05-24].http://www.jessrules.com.

        [3] Business Rule Group[EB/OL].[2013-06-13].http://www.businessrulesgroup.org/defnbrg.shtml.

        [4] RuleML.The rule markup initiative[EB/OL].[2013-08-14].http://www.ruleml.org/.

        [5] Rosenberg F, Dustdar S. Towards a distributed service-oriented business rules system[C]∥Proc of the 3rd IEEE European Conference on Web Services, 2005:11.

        [6] Tosanguan P, Suwannasart T. An approach for defining rule as functions in rule-based software development[C]∥Proc of the 7th International Conference on Digital Information Management, 2012:30-34.

        [7] Nagl C,Rosenberg F,Dustdar S.VIDRE—A distributed service-oriented business rule engine based on RuleML[C]∥Proc of the 10th International Enterprise Distributed Object Computing Conference, 2006:35-44.

        [8] Fu G, Shao J, Embury S M, et al. A framework for business rule presentation[C]∥Proc of the 12th IEEE Internat-ional Workshop on Database and Expert Systems Applications, 2001:922-926.

        [9] zur Muehlen M, Indulska M. Modeling languages for business processes and business rules:A representational analysis[J]. Information Systems, 2010, 35(4):379-390.

        [10] Bona D D, Re G L, Aiello G, et al. A methodology for graphical modeling of business rules[C]∥Proc of the 5th UKSim European Symposium on Computer Modeling and Simulation, 2011:102-106.

        猜你喜歡
        引擎定義規(guī)則
        撐竿跳規(guī)則的制定
        數(shù)獨的規(guī)則和演變
        讓規(guī)則不規(guī)則
        Coco薇(2017年11期)2018-01-03 20:59:57
        藍谷: “涉藍”新引擎
        商周刊(2017年22期)2017-11-09 05:08:31
        TPP反腐敗規(guī)則對我國的啟示
        成功的定義
        山東青年(2016年1期)2016-02-28 14:25:25
        無形的引擎
        河南電力(2015年5期)2015-06-08 06:01:46
        基于Cocos2d引擎的PuzzleGame開發(fā)
        修辭學的重大定義
        當代修辭學(2014年3期)2014-01-21 02:30:44
        山的定義
        公務員文萃(2013年5期)2013-03-11 16:08:37
        日本加勒比一区二区在线观看| 成人性生交大片免费看r| 亚洲AⅤ无码日韩AV中文AV伦| 亚洲美女av一区二区| 久久综合精品国产丝袜长腿| 高潮内射双龙视频| 少妇厨房愉情理伦片bd在线观看| 国产亚洲视频在线观看播放| 国产亚洲综合另类色专区| 一本丁香综合久久久久不卡网站| 亚州少妇无套内射激情视频| 911国产在线观看精品| 中文字幕日韩精品永久在线| 天天夜碰日日摸日日澡性色av| 日韩精品无码一区二区中文字幕 | 午夜理论片yy44880影院| 国产精品一区二区久久精品| 色综合久久久久综合一本到桃花网| 国产黄色一区二区在线看| 午夜免费福利小电影| 99久久夜色精品国产网站| 激情人妻中出中文字幕一区| 插入日本少妇一区二区三区| 55夜色66夜色国产精品视频| 久久久久亚洲AV成人网毛片 | 国内熟女啪啪自拍| 国产剧情国产精品一区| 在线观看视频日本一区二区三区 | 亚洲精品久久区二区三区蜜桃臀| 99久久久国产精品免费蜜臀| 狠狠色噜噜狠狠狠97影音先锋| 久久夜色精品国产亚洲av老牛| 亚洲人成在线播放网站| 国产在线观看www污污污| www.五月激情| 可以直接在线看国产在线片网址 | 青青草大香蕉视频在线观看| 国产suv精品一区二区6| 午夜福利视频男同女同| 亚洲一区二区三区视频免费看| 亚洲国产精品ⅴa在线观看|