String値を持つjava.util.Mapオブジェクトがあります。 java.util.MapのString値の1つをmyString値と比較する必要があります。以下は、問題をよりよく理解するための値を持つ変数です。droolのString要素のリストとして扱う2つの文字列を比較する必要があります
myMap[STATE.code]="AK","MI","GA","NY","OH","CA"
myString="MI","OH"
注:( "AK"、 "MI"、 "GA"、 "NY"、 "OH"、 "CA")および( "MI"、 "OH")は、完全な文字列値とではありませんコンマ区切りの値。
「MI」、「MI」、「GA」、「NY」、「OH」、「CA」に「MI」または「OH」のいずれかが存在するかどうかを確認する必要があります。 したがって、myStringとmyMAp [STATE.code]の値を 'list of elements'として扱い、両方を比較しようとしています。私はリストに共通の要素があるかどうかを知るためにCollections.disjoint関数を試しました。 DSLで
:
[condition][]Putting codes into variable=$code : String(this == myMap[STATE.code])
[condition][]Codes exist in list {myString}= Boolean(java.util.Collections.disjoint(java.util.Arrays.asList($code) , java.util.Arrays.asList({myString})) == false)
[condition][]Codes doesn't exist in list {myString}= not(Boolean (java.util.Collections.disjoint(java.util.Arrays.asList($clientCatCode) , java.util.Arrays.asList({myString})) == false))
DSLが正常にコンパイルがなく、何もそれから出てくるの決定とも任意の例外やエラーはありません。このアプローチが正しいとは思われません。誰でも私に何かアプローチを提案したり、DSLを修正するのに役立つことができます。
2つまたは3つの要素と1つまたは2つの "my" Stringオブジェクトを持つ "my" Mapオブジェクトを持つ場所に、コンパイル可能で実行可能なJavaコードを記述して投稿することをお勧めします。次に、マップが文字列と組み合わされたときに真または偽を示す(Java)コードに同意することができます。これで、Droolsについて議論することができます。最後に、賢明なDSLについて話すことができます。 – laune