2011-11-13 56 views
0

需要配置文件來指定多代理模型中的代理在做出決策時要考慮的謂詞。需求:用戶可以指定布爾表達式,用戶可以在其謂詞定義中使用Java中定義的一組非靜態方法。例如像這樣(只是作爲一個示例XML標記):允許定義使用Java方法的計算的配置框架?

<AgentConfigurations> 
    <Agent Name="ExampleAgentConfig1"> 
     <Predicates> 
      <Predicate Name="ThereIsAFullMoon">FullMoon("18/06/1987")</Predicate> 
      <Predicate Name="DayNotTheFifth">5 != Today()</Predicate> 
     </Predicates> 
    </Agent> 
</AgentConfigurations> 

如果我自己編寫這個功能,方法調用可以使用反射完成,但需要運營商等一些解析

有一個可以幫助這個的框架?

提前許多感謝, 托馬斯

+0

非常感謝,這兩個回覆都有所幫助,最後我終於爲Drools而努力。 –

回答

2

考慮使用如Groovy,JRuby的,斯卡拉,犀牛(甚至BeanShell的),等等。他們是偉大的「內部」的DSL和可保持非常一個「腳本」語言人類可讀。

另外,可以使用MVEL,OGNL等幾種表達式語言(EL)中的任何一種,針對給定的上下文(如對象或更深的結構)評估存儲的表達式。

一旦他們開始變得複雜或彼此之間有很深的關係,你最好使用像Drools或Jess這樣的規則引擎。

您也可以通過從數據庫中提取規則定義來做一些非常有趣的事情,包括實時系統更新(希望來自審查測試系統)。

相關問題