2017-01-26 3 views
0

私は単純なオブジェクト構造を持っています。クラスContextDroolsObjectは、タイプMapobjectsというプロパティを持っています。そのマップの中に存在しArrayListとキー"imageThemes"だと、ここで、このルールが一致しません:Droolsルールのリストを宣言する方法

import java.util.ArrayList; 
import java.util.Map; 
import com.my.ContextDroolsObject; 

dialect 'java' 


rule 'Soccer Image Theme' 
    salience 100 
    when 
     s : ContextDroolsObject() 
     objectsm : Map() from s.objects 
     imageThemesList : ArrayList() from outputsm.imageThemes 
    then 
System.out.println("-----------------------soccer"); 
    end 

私は同じ結果と)(リストでも試してみました。

¿リストの宣言との一致は?

答えて

1

こんにちは、あなたはこの方法であなたのルールを書き換えることができます。

import java.util.ArrayList; 
import java.util.Map; 
import com.my.ContextDroolsObject; 

dialect 'java' 


rule 'Soccer Image Theme' 
salience 100 
when 
    s : ContextDroolsObject(imageThemesList : objects#Map.get("imageThemes")) 
then 
    System.out.println("-----------------------soccer"); 
end 
0

ファクトオブジェクトの階層構造を使用することは、設計上の欠陥であることがよくあります。あなたは、リストの要素を好都合に理由づけすることができないかもしれません。

とにかく、これはContextDroolsObjectからマップ内のリストを抽出する方法です。

rule 'Soccer Image Theme' 
    salience 100 
when 
    s: ContextDroolsObject() 
    imageThemesList: ArrayList() from s.getObjects().get("imageThemes") 
then 
    System.out.println("-----------------------soccer"); 
end 
+0

私が試した、それは動作しませんでした。前に他のルールエンジンと作業していたので、私が見つけた最初の日に欠陥設計についてコメントしましたが、ここには建築家としてのスマートな男がいます... – eduyayo

関連する問題