Hi folks,
I encountered a problem using rules with more than one condition. One condition
evaluates to false, but the consequence is executed. After refactoring the
condition, concatenate the 3 within one, the consequence doesn't execute as
expected. I have attached the 2 variants below.
I have tried to isolate this in an example code, but I failed. So please can
you give me a hint where I can start to debug?
Regards
Christian
Variant one)
-----------------
<rule name="object_readonly_testcase_closed" salience="3400">
<parameter identifier="obj">
<class>IApplicationObject</class>
</parameter>
<parameter identifier="objStates">
<class>IStateDecorator</class>
</parameter>
<parameter identifier="objMessages">
<class>IMessageDecorator</class>
</parameter>
<java:condition><![CDATA[ (
hasRight(obj, userSession, FormFieldRight.TESTACTION_BASE, true)
&& objStates._containsStateBits("state", IStateDecorator.STATE_PERSISTENT)
&& hasSameValue(obj, "state", new String[] {"3", "4", "5", "6"})
)
]]></java:condition>
<java:consequence><![CDATA[
System.out.println("object_readonly_testcase_closed -> " +
objStates._containsStateBits("state", IStateDecorator.STATE_PERSISTENT));
]]></java:consequence>
</rule>
Variant two)
-----------------
<rule name="object_readonly_testcase_closed" salience="3400">
<parameter identifier="obj">
<class>IApplicationObject</class>
</parameter>
<parameter identifier="objStates">
<class>IStateDecorator</class>
</parameter>
<parameter identifier="objMessages">
<class>IMessageDecorator</class>
</parameter>
<java:condition><![CDATA[ hasRight(obj, userSession,
FormFieldRight.TESTACTION_BASE, true) ]]></java:condition>
<java:condition><![CDATA[ objStates._containsStateBits("state",
IStateDecorator.STATE_PERSISTENT) ]]></java:condition>
<java:condition><![CDATA[ hasSameValue(obj, "state", new String[] {"3",
"4", "5", "6"}) ]]></java:condition>
<java:consequence><![CDATA[
System.out.println("object_readonly_testcase_closed -> " +
objStates._containsStateBits("state", IStateDecorator.STATE_PERSISTENT));
]]></java:consequence>
</rule>