Customizing the Decision Center Business console

The Decision Center Business console can be customized with your own session controller, dynamic domain providers, value editors, and ruleset extractors.

Before you begin

To add your customizations to the Decision Center Business console, you must create a persistent volume claim (PVC) dedicated to the storage of the custom libraries. You must also set the parameter decisionCenter.customlibPvc to point to your PVC. For more information, see Configuring the Decision Center Business console

About this task

To complete the customization of Decision Center after you installed a Helm release, you copy the custom libraries to the Decision Center container. Then, restart the Decision Center pod to pick up the custom libraries.

Procedure

  1. Go to the pod that is running Decision Center and copy your custom JAR library to the customlib folder inside the pod.
    1. List the names of the running pods.
      $ kubectl get pods
    2. Add the Decision Center custom library to the Decision Center pod with the following command.
      $ kubectl cp mycustomdclib.jar namespace/my-odm-prod-release-odm-decisioncenter-XXXXXX:/config/customlib

      Where the mycustomdclib.jar is the name of the file that contains the custom classes, and namespace is the namespace value that is specified during the installation of the release.

      Important: Do not change the /config/customlib path as it is a mandatory path inside the Decision Center container.
  2. Make sure that the JAR files are in the running pod.
    $ kubectl exec my-odm-prod-release-odm-decisioncenter-XXXXXX -- ls -l /config/customlib
  3. Optional: If your customization includes a custom value editor, you must register the associated servlet. For a sample of a customized value editor, see the IBM Docs. For the Custom Value Editor sample, the following steps must be taken to add the customization to Decision Center.
    1. The web.xml file describes the custom servlet with the name SampleValueEditorServletName.
      <servlet>
         <servlet-name>SampleValueEditorServletName</servlet-name>
         <servlet-class>businessvalueeditor.SampleValueEditorServlet</servlet-class>
      </servlet>
      <servlet-mapping>
         <servlet-name>SampleValueEditorServletName</servlet-name>
         <url-pattern>/servlet/SampleValueEditorServletName</url-pattern>
      </servlet-mapping>
      <security-constraint>
         <web-resource-collection>
            <web-resource-name>Entry points</web-resource-name>
            <url-pattern>/servlet/SampleValueEditorServletName</url-pattern>
         </web-resource-collection>
         <auth-constraint>
            <role-name>rtsAdministrator</role-name>
            <role-name>rtsConfigManager</role-name>
            <role-name>rtsUser</role-name>
         </auth-constraint>
      </security-constraint>
    2. Add the web.xml file to the Decision Center pod with the following command.
      $ kubectl cp web.xml namespace/my-odm-prod-release-odm-decisioncenter-XXXXXX:/config/customlib
      Important: Do not change the web.xml file name as it is a mandatory name inside the Decision Center container.
    3. Create a js folder and add the JavaScript files that call the servlet to the folder.
    4. Add the js folder to the Decision Center pod with the following command.
      $ kubectl cp js namespace/my-odm-prod-release-odm-decisioncenter-XXXXXX:/config/customlib
      Important: Do not change the js folder name as it is a mandatory name inside the Decision Center container.
  4. Optional: If you want to change the access mode from ReadWriteOnce to ReadOnlyMany, you need to edit the PersistenceVolume that is associated with the PersistenceVolumeClaim.

    In ReadWriteOnce mode, the persistence volume is mounted as read-write. All the pods attached to this persistence volume will be instantiated on the same node.

    In ReadOnlyMany mode, all the pods attached to the persistence volume will be instantiated as read-only on multiple nodes.

    To change the access mode to ReadOnlyMany, follow these steps:

    1. Display the associated PersistenceVolume.
      kubectl get pvc custom-dc-libs-pvc
    2. Run the following command to change the access mode of the persistence volume to ReadOnlyMany.
      kubectl patch pv <PV-NAME> -p '{"spec":{"accessModes":["ReadOnlyMany"]}}'
  5. Restart the Decision Center pod by using the kubectl delete pod command to pick up the changes.
    $ kubectl delete pod my-odm-prod-release-odm-decisioncenter-XXXXXX
  6. Almost every customization of Decision Center needs you to declare a key registration in the Business console by using the Administration > Settings > Custom Settings tab. Each customization provides a specific key.
    For more information about the supported customizations, see: