Installing and configuring Decision Server on Oracle WebLogic Server
Red Hat Customer Content Services
brms-docs@redhat.com
Abstract
Preface
As a system administrator, you can configure your Oracle WebLogic Server for Red Hat Decision Server and install Decision Server on that Oracle server instance.
Prerequisites
- An Oracle WebLogic Server instance version 12.2.1.3.0 or later is installed. For complete installation instructions, see the Oracle WebLogic Server product page.
-
You have access to the Oracle WebLogic Server Administration Console, usually at
http://<HOST>:7001/console
.
Chapter 1. Decision Server
Decision Server is the server where the rules and other artifacts for Red Hat Decision Manager are stored and run. Decision Server is a standalone built-in component that can be used to instantiate and execute rules through interfaces available for REST, Java Message Service (JMS), or Java client-side applications, and Red Hat Business Optimizer functionality through solvers.
Created as a web deployable WAR file, Decision Server can be deployed on any web container. The current version of the Decision Server is included with default extensions for both Red Hat Decision Manager and Red Hat Process Automation Manager.
Decision Server has a low footprint with minimal memory consumption and therefore can be deployed easily on a cloud instance. Each instance of this server can open and instantiate multiple containers, which enables you to execute multiple rule services in parallel.
Decision Server can be integrated with other application servers, such as Oracle WebLogic Server or IBM WebSphere Application Server, to streamline Red Hat Decision Manager application management.
Chapter 2. Oracle WebLogic Server
Oracle WebLogic Server is a Java EE application server that provides a standard set of APIs for creating distributed Java applications that can access a wide variety of services, such as databases, messaging services, and connections to external enterprise systems. User clients access these applications using web browser clients or Java clients.
Chapter 3. Installing and running Oracle WebLogic Server
Oracle WebLogic Server must be installed and running for you to apply many of the configurations that accommodate Decision Server. This section describes how to install and start Oracle WebLogic Server in a standalone Oracle WebLogic Server domain.
For the most up-to-date and detailed installation instructions, see the Oracle WebLogic Server product page.
If you are already running an instance of Oracle WebLogic Server that uses the same listener port as the one to be used by the server you are starting, you must stop the first server before starting the second server.
Procedure
- Download Oracle WebLogic Server 12.2.1.3.0 or later from the Oracle WebLogic Server Downloads page.
- Sign in to the target system and verify that a certified JDK already exists on your system. The installer requires a certified JDK. For system requirements, see Oracle Fusion Middleware Systems Requirements and Specifications. To download the JDK, see the 'About JDK Requirements for an Oracle Fusion Middleware Installation' section in the Planning an Installation of Oracle Fusion Middleware.
- Go to the directory where you downloaded the installation program.
Launch the installation program by running
java -jar
from the JDK directory on your system. See the following examples:On UNIX-based operating systems:
/home/Oracle/jdk/jdk1.8.0_131/bin/java -jar fmw_12.2.1.3.0_wls_generic.jar
On Windows operating systems:
C:\Program Files\Java\jdk1.8.0_131\bin\java -jar fmw_12.2.1.3.0_wls_generic.jar
Be sure to replace the JDK location in these examples with the actual JDK location on your system.
- Follow the installation wizard prompts to complete the installation.
After the installation is complete, navigate to the domain directory in the command terminal,
WLS_HOME/user_projects/<DOMAIN_NAME>
. For example:WLS\user_projects\mydomain
Enter one of the following commands to start Oracle WebLogic Server:
On UNIX-based operating systems:
startWebLogic.sh
On Windows operating systems:
startWebLogic.cmd
The startup script displays a series of messages, and finally displays a message similar to the following:
<Dec 8, 2017 3:50:42 PM PDT> <Notice> <WebLogicServer> <000360> <Server started in RUNNING mode>
Open the following URL in a web browser:
http://<HOST>:<PORT>/console
<HOST>
is the system name or IP address of the host server.<PORT>
is the address of the port on which the host server is listening for requests (7001 by default).For example, to start the Administration Console for a local instance of Oracle WebLogic Server running on your system, enter the following URL in a web browser:
http://localhost:7001/console/
If you started the Administration Console using secure socket layer (SSL), you must add
s
afterhttp
, as follows:https://<HOST>:<PORT>/console
- When the login page of the WebLogic Administration Console appears, enter your administrative credentials.
Chapter 4. Configuring Oracle WebLogic Server for Decision Server
Before you deploy Decision Server with Oracle WebLogic Server, you must configure system properties, security settings, JMS requirements, and other properties on Oracle WebLogic Server. These configurations promote an optimal integration with Decision Server.
Prerequisites
- Oracle WebLogic Server is installed and running.
- You are logged in to the WebLogic Administration Console.
4.1. Configuring the Decision Server group and users
You must assign users to a kie-server
group in the WebLogic Administration Console to enable the container-managed authentication mechanisms in Oracle WebLogic Server.
Procedure
- In the WebLogic Administration Console, click Security Realms.
- Choose your desired security realm or click New to create a new security realm.
-
Navigate to Users and Groups → Groups → New and create the
kie-server
group. - Navigate to Users → New and create a new user.
Enter a user, such as
server-user
, and a password for this new user and click OK.ImportantMake sure that the selected user name does not conflict with any known title of a role or a group. For example, if there is a role called
kie-server
, then do not create a user with the user namekie-server
.- Click the newly created user, then return to the Groups tab.
-
Use the selection tool to move the
kie-server
group from the Available field to the Chosen field, and click Save.
4.2. Configuring Java Message Service (JMS)
The Java Message Service (JMS) is a Java API that Decision Server uses to exchange messages with other application servers such as Oracle WebLogic Server and IBM WebSphere Application Server. You must configure your application server to send and receive JMS messages through Decision Server to ensure proper collaboration between the two servers.
4.2.1. Create a JMS server
You must create a JMS server in order to use JMS.
Procedure
- In the WebLogic Administration Console, navigate to Services → Messaging → JMS Servers.
- Click New to create a new JMS server.
- Enter a name for your JMS server and click Next.
- Select the target server chosen for the Decision Server deployment.
- Click Finish.
4.2.2. Create a JMS module
You must create a JMS module to store your JMS resources, such as connection factories and queues.
Prerequisites
- You have created a JMS server.
Procedure
- In the WebLogic Administration Console, navigate to Services → Messaging → JMS Modules.
- Click New to create a module.
- Enter a module name and click Next.
- Select the target server chosen for the Decision Server deployment and click Finish.
- Click the newly created module name and then click Subdeployments.
- Click New to create a subdeployment for your module.
- Give your subdeployment a name and click Next.
- Select the check box to choose the previously created JMS server.
- Click Finish to complete the subdeployment configuration.
4.2.3. Create JMS connection factories
To enable messaging with Decision Server, you must create certain JMS connection factories for sending and receiving messages.
Prerequisites
- You have created a JMS server.
- You have created a JMS module.
Procedure
- In the WebLogic Administration Console, navigate to Services → Messaging → JMS Modules to see a list of JMS modules.
- Select your previously created module and click New to create a new JMS resource.
- Select Connection Factory and click Next.
-
For each of the following required connection factories, enter the name of the connection factory (for example,
KIE.SERVER.REQUEST
) and the JNDI name (for example,jms/cf/KIE.SERVER.REQUEST
) and click Next. The connection factory automatically selects the servers assigned to the JMS Module as the default. - Click Finish to add the connection factory, and repeat for each required factory.
4.2.3.1. JMS connection factories for Decision Server
The following are the required Java Message Service (JMS) connection factories that enable JMS messaging with Decision Server:
Table 4.1. Required JMS connection factories for Decision Server
Name | Default value | Used for |
---|---|---|
|
| Sending all requests to Decision Server |
|
| Receiving all responses produced by Decision Server |
4.2.4. Create JMS queues
JMS queues are the destination end points for point-to-point messaging. You must create certain JMS queues to enable JMS messaging with Decision Server.
Prerequisites
- You have created a JMS server.
- You have created a JMS module.
Procedure
- In the WebLogic Administration Console, navigate to Services → Messaging → JMS Modules to see the list of JMS modules.
- Select your previously created module, then click New to create a new JMS resource.
- Select Queue and click Next.
-
For each of the following required queues, enter the name of the queue (for example,
KIE.SERVER.REQUEST
) and the JNDI name (for example,jms/KIE.SERVER.REQUEST
) and then click Next. - Choose the JMS module subdeployment that connects to the JMS server.
- Click Finish to add the queue, and repeat for each required queue.
4.2.4.1. JMS queues for Decision Server
The following are the required Java Message Service (JMS) queues that enable JMS messaging with Decision Server:
Table 4.2. Required JMS queues for Decision Server
Name | Default value | Used for |
---|---|---|
|
| Sending all requests to Decision Server |
|
| Receiving all responses produced by Decision Server |
4.3. Setting system properties in Oracle WebLogic Server
Set the system properties listed in this section on your Oracle WebLogic Server before you deploy Decision Server.
Procedure
Set the following system property to increase the Java Virtual Machine (JVM) memory size:
USER_MEM_ARGS=-Xms512m -Xmx1024m
If you do not increase the JVM memory size, Oracle WebLogic Server freezes or causes deployment errors when deploying Decision Server.
Specify the following system properties for Decision Server on the Oracle WebLogic Server instance:
Table 4.3. System properties for Decision Server
Name Value Description kie.server.jms.queues.response
jms/KIE.SERVER.RESPONSE
The JNDI name of JMS queue for responses used by the Decision Server.
org.kie.server.domain
OracleDefaultLoginConfiguration
JAAS
LoginContext
domain used to authenticate users when using JMS.org.jbpm.server.ext.disabled
true
Disables Business Central features, which are not supported in RHDM. If not set, Decision Server will work, but will show error messages during start up.
org.jbpm.ui.server.ext.disabled
true
Disables Business Central features, which are not supported in RHDM. If not set, Decision Server will work, but will show error messages during start up.
org.jbpm.case.server.ext.disabled
true
Disables Business Central features, which are not supported in RHDM. If not set, Decision Server will work, but will show error messages during start up.
-
Set the same property values in the
JAVA_OPTIONS
environment variable:
JAVA_OPTIONS="-Dkie.server.jms.queues.response=jms/KIE.SERVER.RESPONSE -Dorg.kie.server.domain=OracleDefaultLoginConfiguration -Dorg.jbpm.server.ext.disabled=true -Dorg.jbpm.ui.server.ext.disabled=true -Dorg.jbpm.case.server.ext.disabled=true"
4.4. Stopping and restarting Oracle WebLogic Server
After you have configured all required system properties in Oracle WebLogic Server, stop and restart the Oracle server to ensure that the configurations are applied.
Procedure
- In the WebLogic Administration Console, navigate to Change Center → Lock & Edit.
- Under Domain Structure, click Environment → Servers → Control.
- Select the server that you want to stop and click Shutdown.
- Select When Work Completes to gracefully shut down the server or select Force Shutdown Now to stop the server immediately without completing ongoing tasks.
- On the Server Life Cycle Assistant pane, click Yes to complete the shutdown.
After the shutdown is complete, navigate to the domain directory in the command terminal,
WLS_HOME/user_projects/<DOMAIN_NAME>
. For example:WLS\user_projects\mydomain
Enter one of the following commands to restart Oracle WebLogic Server to apply the new configurations:
On UNIX-based operating systems:
startWebLogic.sh
On Windows operating systems:
startWebLogic.cmd
-
Open the Administration Console in a web browser (for example,
http://localhost:7001/console/
) and log in with your credentials.
Chapter 5. Installing Decision Server with Oracle WebLogic Server
After you have configured all required system properties in Oracle WebLogic Server, you can install Decision Server with Oracle WebLogic Server to streamline Red Hat Decision Manager application management.
Prerequisites
- An Oracle WebLogic Server instance is configured as described in Chapter 4, Configuring Oracle WebLogic Server for Decision Server.
Procedure
Navigate to the Software Downloads page in the Red Hat Customer Portal (login required), and select the product and version from the drop-down options:
- Product: Decision Manager
- Version: 7.6
- Download Red Hat Decision Manager 7.6.0 Decision Server for All Supported EE7 Containers.
-
Extract the downloaded
rhdm-7.6.0-kie-server-ee7.zip
file to a temporary directory. - In the WebLogic Administration Console, navigate to Deployments to view all existing applications.
- Click Install.
-
Navigate to the temporary directory where you downloaded and extracted the
rhdm-7.6.0-kie-server-ee7.zip
file, and go torhdm-7.6.0-kie-server-ee7/kie-server.war
. -
Select the
kie-server.war
file and click Next to continue. - Select Install this deployment as an application as the targeting style and click Next.
-
Set the application name to
kie-server
and set the security model toDD Only
. Leave the remaining options as default and click Next to continue. - In the Additional Configuration section, choose No, I will review the configuration later and click Finish.
5.1. Verifying the Decision Server installation on Oracle WebLogic Server
After you have installed Decision Server on Oracle WebLogic Server, verify that the installation was successful.
Prerequisites
- An Oracle WebLogic Server instance is configured as described in Chapter 4, Configuring Oracle WebLogic Server for Decision Server.
- Decision Server is installed as described in Chapter 5, Installing Decision Server with Oracle WebLogic Server.
Procedure
-
Enter the Decision Server URL
http://<HOST>:<PORT>/kie-server/services/rest/server
in a web browser. Verify that Decision Server is running.
If Decision Server is not running, stop and restart the Oracle WebLogic Server instance and try again to access the Decision Server URL.
Chapter 6. Installing and running the headless Decision Manager controller with Oracle WebLogic Server
To use the Decision Server REST API or Java Client API to interact with Decision Server, install the headless Decision Manager controller with Oracle WebLogic Server. The headless Decision Manager controller manages Decision Server configuration in a centralized way so that you can use the headless Decision Manager controller to create and maintain containers and perform other server-level tasks.
Prerequisites
- The Oracle WebLogic Server instance is configured as described in Chapter 4, Configuring Oracle WebLogic Server for Decision Server.
- Decision Server is installed on the Oracle WebLogic Server instance.
- You have sufficient user permissions to complete the installation.
Procedure
Navigate to the Software Downloads page in the Red Hat Customer Portal (login required), and select the product and version from the drop-down options:
- Product: Decision Manager
- Version: 7.6
- Download Red Hat Decision Manager 7.6.0 Add-Ons.
-
Extract the downloaded
rhdm-7.6.0-add-ons.zip
file to a temporary directory. - In the WebLogic Administration Console, navigate to Security Realms → Users and Groups.
-
In the kie-server group that you created previously, create a user for the headless Decision Manager controller, such as
controller
, and a password for this new user and click OK. For more information about creating groups and users, see Section 4.1, “Configuring the Decision Server group and users”. - Navigate to Deployments to view all existing applications.
- Click Install.
-
Navigate to the temporary directory where you downloaded and extracted the
rhdm-7.6.0-add-ons.zip
file, and go torhdm-7.6.0-add-ons/rhdm-7.6.0-controller-ee7.zip/controller.war
. -
Select the
controller.war
file and click Next to continue. - Select Install this deployment as an application as the targeting style and click Next.
-
Keep the application name as
controller
and set the security model toDD Only
. Leave the remaining options as default and click Next to continue. - In the Additional Configuration section, choose No, I will review the configuration later and click Finish.
6.1. Setting system properties for the headless Decision Manager controller
After you install the headless Decision Manager controller, set the system properties listed in this section on your application server or servers to enable proper interaction with the headless Decision Manager controller.
For optimal results, install Decision Server and the headless Decision Manager controller on different servers in production environments. In development environments, you can install Decision Server and the headless Decision Manager controller on the same server. In either case, be sure to make these property changes on all application servers where the headless Decision Manager controller is installed.
Prerequisites
- Decision Server and the headless Decision Manager controller are installed on the application server instance.
Procedure
Specify the following JVM property values on the application server instance where the headless Decision Manager controller is installed:
Table 6.1. Required properties for the headless Decision Manager controller
Name Requirement org.kie.server.user
A user with the
kie-server
roleorg.kie.server.pwd
The password for the user specified in the
org.kie.server.user
propertySpecify the following JVM property values on the application server instance where Decision Server is installed:
Table 6.2. Required properties for Decision Server when headless Decision Manager controller is installed
Name Requirement org.kie.server.controller.user
A user with the
kie-server
roleorg.kie.server.controller.pwd
The password for the user specified for the
org.kie.server.controller.user
propertyorg.kie.server.id
The ID or name of the Decision Server installation, such as
rhdm700-decision-server-1
org.kie.server.location
The URL of the Decision Server,
http://<HOST>:<PORT>/kie-server/services/rest/server
org.kie.server.controller
The URL of the headless Decision Manager controller,
http://<HOST>:<PORT>/controller/rest/controller
<HOST>
is the ID or name of the Decision Server host, for example,localhost
or192.7.8.9
.<PORT>
is the port of the Decision Server host, for example,7001
.
6.2. Verifying the installation
After you install the headless Decision Manager controller and define the required system properties and role requirements on the application server, verify that the headless Decision Manager controller works correctly.
Prerequisites
- Decision Server and the headless Decision Manager controller are installed on the application server instance.
- You have set all required system properties and role requirements for the headless Decision Manager controller on the application server.
Procedure
In your command terminal, enter the following command to verify that the headless Decision Manager controller is working:
curl -X GET "http://<HOST>:<PORT>/controller/rest/controller/management/servers" -H "accept: application/xml" -u '<CONTROLLER>:<CONTROLLER_PWD>'
<HOST>
is the ID or name of the Decision Server host, for example, localhost
or 192.7.8.9
.
<PORT>
is the port of the Decision Server host, for example, 7001
.
<CONTROLLER>
and <CONTROLLER_PWD>
are the user credentials that you created in this section.
The command should return information about the Decision Server instance.
Alternatively, you can use the Decision Server Java API Client to access the headless Decision Manager controller.
If the headless Decision Manager controller is not running, stop and restart the application server instance and try again to access the headless Decision Manager controller URL or API.
Chapter 7. Configuring an embedded decision engine in Oracle WebLogic Server
A decision engine is a light-weight rule engine that enables you to execute your decisions and business processes. A decision engine can be part of a Red Hat Decision Manager application or it can be deployed as a service through OpenShift, Kubernetes, and Docker. You can embed a decision engine in a Red Hat Decision Manager application through the API or as a set of contexts and dependency injection (CDI) services.
If you intend to use an embedded engine with your Red Hat Decision Manager application, you must add Maven dependencies to your project by adding the Red Hat Business Automation bill of materials (BOM) files to the project’s pom.xml
file. The Red Hat Business Automation BOM applies to a Red Hat Decision Manager. For more information about the Red Hat Business Automation BOM, see What is the mapping between Red Hat Decision Manager and the Maven library version?.
Procedure
Declare the Red Hat Business Automation BOM in the
pom.xml
file:<dependencyManagement> <dependencies> <dependency> <groupId>com.redhat.ba</groupId> <artifactId>ba-platform-bom</artifactId> <version>7.6.0.redhat-00004</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <!-- Your dependencies --> </dependencies>
Declare dependencies required for your project in the
<dependencies>
tag. After you import the product BOM into your project, the versions of the user-facing product dependencies are defined so you do not need to specify the<version>
sub-element of these<dependency>
elements. However, you must use the<dependency>
element to declare dependencies which you want to use in your project.For a basic Red Hat Decision Manager project, declare the following dependencies, depending on the features that you want to use:
Embedded decision engine dependencies
<dependency> <groupId>org.drools</groupId> <artifactId>drools-compiler</artifactId> </dependency> <!-- Dependency for persistence support. --> <dependency> <groupId>org.drools</groupId> <artifactId>drools-persistence-jpa</artifactId> </dependency> <!-- Dependencies for decision tables, templates, and scorecards. For other assets, declare org.drools:business-central-models-* dependencies. --> <dependency> <groupId>org.drools</groupId> <artifactId>drools-decisiontables</artifactId> </dependency> <dependency> <groupId>org.drools</groupId> <artifactId>drools-templates</artifactId> </dependency> <dependency> <groupId>org.drools</groupId> <artifactId>drools-scorecards</artifactId> </dependency> <!-- Dependency for loading KJARs from a Maven repository using KieScanner. --> <dependency> <groupId>org.kie</groupId> <artifactId>kie-ci</artifactId> </dependency>
To use the Decision Server, declare the following dependencies:
Client application Decision Server dependencies
<dependency> <groupId>org.kie.server</groupId> <artifactId>kie-server-client</artifactId> </dependency>
To create a remote client for Red Hat Decision Manager, declare the following dependency:
Client dependency
<dependency> <groupId>org.uberfire</groupId> <artifactId>uberfire-rest-client</artifactId> </dependency>
When creating a JAR file that includes assets, such as rules and process definitions, specify the packaging type for your Maven project as
kjar
and useorg.kie:kie-maven-plugin
to process thekjar
packaging type located under the<project>
element. In the following example,${kie.version}
is the Maven library version listed in What is the mapping between Red Hat Decision Manager and the Maven library version?:<packaging>kjar</packaging> <build> <plugins> <plugin> <groupId>org.kie</groupId> <artifactId>kie-maven-plugin</artifactId> <version>${kie.version}</version> <extensions>true</extensions> </plugin> </plugins> </build>
If you use a decision engine with persistence support in your project, you must declare the following hibernate dependencies in the
dependencyManagement
section of yourpom.xml
file by copying theversion.org.hibernate-4ee7
property from the Red Hat Business Automation BOM file:Hibernate dependencies in decision engine with persistence
<!-- hibernate dependencies --> <dependencyManagement> <dependencies> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>${version.org.hibernate-4ee7}</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>${version.org.hibernate-4ee7}</version> </dependency> </dependencies> </dependencyManagement>
Chapter 8. Securing passwords with a keystore
You can use a keystore to encrypt passwords that are used for communication between Business Central and Decision Server. You should encrypt both controller and Decision Server passwords. If Business Central and Decision Server are deployed to different application servers, then both application servers should use the keystore.
Use Java Cryptography Extension KeyStore (JCEKS) for your keystore because it supports symmetric keys. Use KeyTool, which is part of the JDK installation, to create a new JCEKS.
If Decision Server is not configured with JCEKS, Decision Server passwords are stored in system properties in plain text form.
Prerequisites
- Decision Server is installed in Oracle WebLogic Server.
-
A Decision Server user with the
kie-server
role has been created, as described in Section 4.1, “Configuring the Decision Server group and users”. - Java 8 or higher is installed.
Procedure
To use KeyTool to create a JCEKS, enter the following command in the Java 8 home directory:
$<JAVA_HOME>/bin/keytool -importpassword -keystore <KEYSTORE_PATH> -keypass <ALIAS_KEY_PASSWORD> -alias <PASSWORD_ALIAS> -storepass <KEYSTORE_PASSWORD> -storetype JCEKS
In this example, replace the following variables:
-
<KEYSTORE_PATH>
: The path where the keystore will be stored -
<KEYSTORE_PASSWORD>
: The keystore password -
<ALIAS_KEY_PASSWORD>
: The password used to access values stored with the alias -
<PASSWORD_ALIAS>
: The alias of the entry to the process
-
- When prompted, enter the password for the Decision Server user that you created.
Set the system properties listed in the following table:
Table 8.1. System properties used to load a Decision Server JCEKS
System property Placeholder Description kie.keystore.keyStoreURL
<KEYSTORE_URL>
URL for the JCEKS that you want to use, for example
file:///home/kie/keystores/keystore.jceks
kie.keystore.keyStorePwd
<KEYSTORE_PWD>
Password for the JCEKS
kie.keystore.key.server.alias
<KEY_SERVER_ALIAS>
Alias of the key for REST services where the password is stored
kie.keystore.key.server.pwd
<KEY_SERVER_PWD>
Password of the alias for REST services with the stored password
kie.keystore.key.ctrl.alias
<KEY_CONTROL_ALIAS>
Alias of the key for default REST Process Automation Controller where the password is stored
kie.keystore.key.ctrl.pwd
<KEY_CONTROL_PWD>
Password of the alias for default REST Process Automation Controller with the stored password
- Start Decision Server to verify the configuration.
Chapter 9. Next steps
Appendix A. Versioning information
Documentation last updated on Friday, May 22, 2020.