Customizing Decision Runner

In a topology where ODM is deployed in several namespaces inside a cluster or on several clusters, you might want to design decision services in a development environment (in a given namespace), to do tests and simulations in a staging environment (in another namespace), and finally to deploy the decision services to production on another cluster.

About this task

For testing and simulating decision services, Decision Server uses the Decision Runner RES_URL to deploy the artifacts (ruleapps, XOM, rulesets). By default, the RES_URL is an internal URL that is exposed by the Decision Server Console (https://<project_name>-odm-decisionserverconsole:443/<context_root>/res). It means that you cannot deploy at the same time to an external URL that is exposed through the internet.

For example, if an end user wants to develop a decision service on a given cluster or namespace, and then test it on a Decision Server that is on another cluster or namespace like https://my_destination_cluster.domain.com/res, he runs into the following error.

ilog.rules.teamserver.model.IlrXOMDeploymentException: An error has occurred while deploying the XOM to
Rule Execution Server ’https://my_desination_cluster.domain.com/res';. 
If the Rule Execution Server is not deployed on the same server and port as the Decision Runner, 
the RES_URL init parameter of the Decision Runner web application must be set to the URL of the Rule Execution Server. 
Contact your administrator.

The solution is to configure the RES_URL parameter as a list of URLs so that deployment can take place on different environments.

Procedure

To configure the Decision Runner RES_URL to run on an external URL, set the decisionRunner.resURL parameter in the following way.

For example:

decisionRunner:
  resURL: "https://my_destination_cluster.domain.com/res"
The resURL parameter can also be used to manage a list of URLs. If you want the Decision Runner to handle tests coming from a Decision Server that is outside the Decision Runner project, at the same time as tests coming from a Decision Server deployed on the same Decision Runner project, set the parameter in the following way.
decisionRunner:
  resURL: "EXTERNAL_URL,INTERNAL_URL"
Where:
  • EXTERNAL_URL is the Decision Server URL that is exposed by the cluster, generally accessible from the internet
  • INTERNAL_URL is the Decision Server URL that is exposed internally by the Decision Server Console. Generally, it corresponds to https://<project_name>-odm-decisionserverconsole:443/<context_root>/res

For example:

decisionRunner: 
  resURL: "https://my_desination_cluster.domain.com/res,https://<project_name>-odm-decisionserverconsole:443/<context_root>/res"