Consider the following scenario:
The role of a person is used to figure out the previleges to be given to him/her. In this scenario, though the role of the person is a single value for e.g. “Moderator”, we will have to return multiple previlege values, for e.g. read, modify, delete, create etc. Can we do this using a decision table? The answer is, Yes!
Decision Tables have two properties that can be modified. One of them is “Rows are mutually exclusive”. By setting this property to true, you are telling the Rule Engine that, I know my rows are mutually exclusive and hence dont bother about evaluating suqbsequent rows once you reach a row where all the conditions are satisfied. You would want to set this property to true only when you are sure that the rows are mutually exclusive for e.g. designation of a person. Second property is “Return Multiple Matches”. If you want the decision table to continue evaluating rows even after hitting a row of satisfying conditions and return all the corresponding action values, this property has to be set to True. There are two points to note here. One is that it doesnt make sense setting this to True and setting “Mutually Exclusive” to True because the second property will ensure that subsequent rows are not evaluated. So when this is set to True, one has to set “Mutually Exclusive” to False. Second point is so as to ensure that the values on the action part are not over-written for each row of satisfying conditions, the action should be something that collects these values. For e.g. something like List.Add().
Though returning multiple action values is as simple as that, CE 7.11 doesnt allow List.Add() to be added as an action in the Decision Table. What should one do now? There is a work-around for this and it is discussed in the following article: