漫話規則引擎(3): 規則描述語言


本文最新版已更新至: http://thinkinside.tk/2012/12/06/rule_language.html

在規則引擎中,通常會使用某種表述性的語言(而不是編程語言)來描述規則。所以規則描述語言也是規則引擎的一個重要組成部分。

目前在規則描述語言方面,並沒有一個通用的標准獲得規則引擎廠商的廣泛支持,大部分規則描述語言都是廠商私有的。

大體來說,規則語言可以分為結構化的(Structured)和基於標記的(Markup,通常為xml)。

常見的規則描述語言包括:

 
語言 類型 廠商
srl(Structured Rule Language) 結構化 Fair Isaac(以前是Blaze Software)
drl(Drools Rule Language) 結構化 Jboss(以前是drools.org)
RuleML(Rule Markup Language) xml www.ruleml.org
SRML(Simple Rule Markup Language) xml
BRML(Business Rules Markup Language) xml
SWRL(A Semantic Web Rule Language) xml www.daml.org

不管是哪種規則描述語言,都需要描述一組條件以及在此條件下執行的操作(即規則)。

下面是一個drl的例子:

package com.sample
 
import com.sample.DroolsTest.Message;
 
rule "Hello World"
    when
        m : Message( status == Message.HELLO, myMessage : message )
    then
        System.out.println( myMessage );
        m.setMessage( "Goodbye cruel world" );
        m.setStatus( Message.GOODBYE );
        update( m );
end

rule "GoodBye"
    when
        Message( status == Message.GOODBYE, myMessage : message )
    then
        System.out.println( myMessage );
end

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM