How to remove the DecisionID from the transparent decision service input and output messages?
Starting in JRules V7.1, the transparent decision services input and output include by default a DecisionID field. The decision ID, also named executionId, is used to identify a decision or execution.
This can be a problem for web service clients that are designed to execute rules on JRules V7.0 which did not use the decision id. It would require modifying those client code to comply with the input or output of the new decision service.
Resolving the problem
For Hosted Transparent Decision Service (HTDS):
Refer to section WebSphere ILOG JRules BRMS V7.1 > Migrating > Migrating from JRules V7.0.x > Migrating decision services of the JRules documentation to see how to remove the decision ID from the web service signature.
An additional solution can also be found in the JRules V7.1 readme under section "Documentation supplement > Setting the compatibility parameter for a hosted transparent decision service using the WSDL query URL".
For Monitored Transparent Decision Service (MTDS):
As explained in section WebSphere ILOG JRules BRMS V7.1 > Rule Execution Server > Introducing Rule Execution Server > Creating a client for Rule Execution Server > Creating a Web service or monitored transparent decision service project for RuleApps of the documentation, Rule Studio allows to generate a web service component to call rules that are deployed on Rule Execution Server.
The WSDL for this component is based on its Java code generated by Rule Studio. Modifying the Java code permits to alter the web service and remove the decision id from its input and output.
To do so, follow the below steps.
In this example the rule project or ruleset name is MyRules, the RuleApp project is named MyRuleApp and the web service project named MyMTDS:
- In the src directory of the MyMTDS project, find the files MyRulesRequest.java and MyRulesResult.java under the MyRuleApp package.
- In both classes, remove or comment the attribute executionId, as well as the corresponding getter and setter, setExecutionId and getExecutionId. Also remove or comment the references to that attribute executionId in MyMTDSRunnerImpl.java, as indicated by the errors you might get if the project is rebuilt.
- Compile the project, generate and redeploy the web service component.
In either case, the deployed decision service now has the same signature and behavior that it had in JRules V7.0.
|Business Integration||IBM Decision Server||Modules:Execution Server||Platform Independent||8.0, 7.5||All Editions|