我有一个java.util.Map对象,它具有String值。我需要将java.util.Map的String值之一与myString值进行比较。下面是有价值的变量来更好地理解问题。需要比较两个字符串作为流水线中的字符串元素列表处理
myMap[STATE.code]="AK","MI","GA","NY","OH","CA"
myString="MI","OH"
注:( “AK”, “MI”, “GA”, “NY”, “OH”, “CA”)和( “MI”, “OH”)是完整的字符串值,而不是逗号分隔值。
我需要弄清楚“AK”,“MI”,“GA”,“NY”,“OH”,“CA”中是否存在“MI”或“OH”中的任何一个。 因此,我将myString和myMAp [STATE.code]值视为'列表元素'并尝试对两者进行比较。我尝试了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。
我建议你编写和发布一个可编译和可执行的Java代码片段,其中包含具有两个或三个元素以及一个或两个“我的”字符串对象的“我的”Map对象。然后,我们可以同意在Map和String组合的情况下表示真或假的(Java)代码。这样做,我们可以开始讨论Drools。最后,我们可以谈论一个合理的DSL。 – laune