In a DRD Decision table execution to be skipped based on the condition

I have two decision tables “Decision Table 1” and “Decision Table 2”. The “Decision Table 2” will be executed only if any of the matched rule(s) from the “Decision Table 1” has output value as “Query Decision Table 2”. If the matched rule(s) does not have the output as “Query Decision Table 2”, then “Decision Table 2” should not be executed at all.
Now when “Decision Table 2” will be executed and if there is rule a rule match then that should be the final output. If no matching rule found then I need to pick up from the results of “Decision Table 1”.

How can I model this in DRD ? I do not want to use 2 business rule task or write java code behind a service task task to query 2 decision tables

Hi

DMN is declarative, so you cant prevent Decision 2 from executing, however you can design the rules such that even though decision 2 will be executed, no rules will actually match…

Hence Decision 2 should depend on decision 1. The output of decision 1 should be a boolean eg decision 2 required. Each rule in decision 2 should have an input column where decision 2 required must be true.

Next you effectively need the outcome to come from either decision 1 or decision 2. To do this, you need the outcome of decision 1 to be n input to decision 2. In decision 2 this column is not used for any rule, however it gives decision 2 access to decision 1’s outcome as ultimately decision 2 is acting as a proxy and must therefore pass the outcome through. Hence in decision 2, if no rules match because its not required, you will need a default rule which returns decision 1’s outcome as the final answer…

hope this makes sense,

regards

Rob

1 Like

Thanks a lot Rob for your inputs.