I have following condition:
(<A>and(<B>or<C>))and((<D>and(<F>or<G>))or(<E>and(<H>or<I>)))-A|ASI Switch|PARAMETER:81|=0-B|DCM Main|1849,[Param:DCM Main,1943,*/[Property:channel]]|Regex=.*[Property:Inbound Main Multicast].*|DefaultReturnValue=False-C|DCM Main|1849,[Param:DCM Main,1943,*/[Property:channel] (*)]|Regex=.*[Property:Inbound Main Multicast].*|DefaultReturnValue=False-D|Next ASI Switch|PARAMETER:81|=0-E|Next ASI Switch|PARAMETER:81|=1-F|Next DCM Main|PARAMETER:1943,*/[Property:Next DCM Output Service Name]|=[Property:Next DCM Input Port A]|DefaultReturnValue=False-G|Next DCM Main|PARAMETER:1943,*/[Property:Next DCM Output Service Name] (*)|=[Property:Next DCM Input Port A]|DefaultReturnValue=False-H|Next DCM Backup|PARAMETER:1943,*/[Property:Next DCM Output Service Name]|=[Property:Next DCM Input Port A]|DefaultReturnValue=False-I|Next DCM Backup|PARAMETER:1943,*/[Property:Next DCM Output Service Name] (*)|=[Property:Next DCM Input Port A]|DefaultReturnValue=False
Condition D is false, and condition E is true.
(<A>and(<B>or<C>))and((<D>and(<F>))or(<E>and(<H>or<I>))) shows the object
(<A>and(<B>or<C>))and((<D>and(<G>))or(<E>and(<H>or<I>))) shows the object
((<D>and(<F>or<G>))or(<E>and(<H>or<I>))) shows the object
(<A>and(<B>or<C>))and((<D>and(<F>or<G>))or(<E>and(<H>or<I>))) does not show the object
It doesn't seem to be the conditions themselves, but the logical equation that somehow behaves strange in this specific situation.
Is there a maximum number of conditions?
Is there a way to investigate this further?
First of all, there is no limit on the amount of conditions. You can use as many as you want.
This condition syntax is error prone so I would double check that everything is correctly configured. If no syntax issues are found, i would reduce the condition complexity until it's working as expected. Then you can gradually add more complexity to the condition. Hopefully this identifies the underlying problem.
Note that the condition is evaluated when all data is retrieved. If some data is missing, you can use the DefaultReturnValue option to provide a fallback value.
Both DefaultReturnValue and AllowEmptyDynamicValues are used.
The strange thing is following:
A and (B or C) = true
(D and (F or G)) = false
(E and (H or I)) = true
(D and (F or G)) or (E and (H or I)) = true
combining these returns false, which is very strange
(A and (B or C)) and ((D and (F or G)) or (E and (H or I))) = false
On testing by removing items from the equation, I end up with following strange situation, where it returns true again
(D and (F or G)) and ((D and (F)) or (E and (H or I))) = true
(D and (F or G)) and ((D and (G)) or (E and (H or I))) = true
Edit:
This is indeed weird behavior. If this is the case i suggest development takes a look at it.
Ok, I’ve created a task to investigate it further.
I tried following simplified test
(A and (A or A)) and ((A and (A or A)) or (A and (A or A))) = false
(A and (A or A)) and ((A and (A)) or (A and (A or A))) = true
I removed conditions B, C, D, E, F and G from the Show field
I see that you haven't changed the default separators ('|' and '-'). Can you double-check that none of the dynamic parts contain these characters?
You can change the default separators by using the placeholder Sep.
I checked and both conditions F and G and these properties don’t seem to hold ‘-‘ or ‘|’ characters.
I also simplified the conditions by removing all the property placeholders and replacing it with the actual values.
The strange behavior remains.
I would also like to add that when you’re using placeholders in your conditions, the rule of “DefaultReturnValue” will not apply to these. The option only applies to the actual condition itself. This means that all placeholders need to be resolved before DefaultReturnValue is even considered.
However, as always we have an option to ignore these placeholders as well. Setting option “AllowEmptyDynamicValues” in the “Options” shape data will allow a shape to be displayed from the very start, with the placeholders resolving to an empty value by default.