ODM on Docker!
If you are a DevOps enthusiast like me you probably love Docker and have been using it for a while. If you are new to Docker, please check this link to learn more.
IBM released an IBM ODM Docker image designed for developers and free to use, in this tutorial we are going to set it up step by step and gain full functionality of this amazing feature. My setup for running this tutorial is:
- Host machine: Windows 10 Pro
- Elementary OS (Ubuntu Dist.) Virtual Box Machine with Docker (I tried using my Alpine-Docker image but I encountered some extra configurations needed for the ODM JVM, contact me for more information about this subject)
- Eclipse Luna with Rule Designer for developers plugin
- Install IBM ODM Docker image
- Open a new terminal window and run the following command: docker pull ibmcom/odm
- This will download all the ODM files and create the IBM ODM image. Depending on your internet conection this process could take a few minutes.
- Now run the following command to start the docker IBM ODM container instance:
docker run -e LICENSE=accept -p 9060:9060 -p 9443:9443 ibmcom/odm
- Note that we are passing an environment value to accept the license and mapping the ports 9060 and 9443. If you run with JVM memory problems use -m 1g or the amount of java heap size memory you can use for this container to run smoothly and faster.
- If everything went well you should see the beautiful IBM ODM logo printed in the terminal
- Now you are ready to use:
- Note that if you are using a Virtual Box VM like me you need to configure your networks and ip addresses to use the web applications in your host. In my case I use the 192.168.56.101 ip. See Host-Only adapter configurations and verify your networks by pinging the VM ip.
- Verify Installation
- Install Eclipse with IBM ODM plugin
- Download and install Eclipse.
- Navigate to https://marketplace.eclipse.org/content/ibm-operational-decision-manager-developers-rule-designer and drag and drop the install
- Follow the instructions and reboot Eclipse, you should now see the Rule Designer perspective:
- Test IBM ODM on Docker
- Create a new project or import an existing project, I am going to use the Recruitment Service demo that I’ve using on previous posts:
- Connect the main project to the Decision Center
- Enter the proper URL and credentials and test the conection:
- Navigate to the Decision Center and verify the Decision Service is uploaded correctly:
- Now we will test the deployment to the RES console, create a new Deployment Configuration
- Add a Decision Operation
- Add the ODM docker RES service
- Deploy the Ruleapp and select the recently added server
- Verify the ruleapp deployed correctly
As you can see we setup an ODM distribution in minutes and got a project sync with Decision Center and deployed in the RES console. ODM on Docker is great, we can use all the Docker containers and images functionalities.
I hope you enjoy this tutorial and as always please feel free to contact me for any feedback or questions! Thank you!
- Published in Cloud, Decision Center, Docker, Rule Designer, Rule Execution Server (RES)
RPA: UiPath and ODM integration
In this technical tutorial we will have a look at the integration between RPA UiPath and IBM ODM. As we know ODM provides a decision server that the business can use to express rules while UiPath provides RPA to automate tasks, normally manual processes that uses repetitive tasks like data entry, making this integration a perfect collaboration.
To understand the basics of UiPath, please refer to this link.
- Testing the ODM project
- For this tutorial, I will use the ‘Recruitment’ project I made for previous posts. Check some details about the project here.
- Make sure your project is successfully deployed in the RES console and that the Sample Server is up and running.
- Open the RES console and navigate to your project Ruleset view:
- Click on ‘Retrieve HTDS Description File’, select ‘REST’ and click on Test:
- In my example I will test with 2 scenarios for the ‘Country’ value.
- Now go back to the HTDS page and click on ‘View’. Copy the URL, we will use it later in UiPath:
- Remember you can also use JSON format for your execution requests and external tools like SoapUI or Postman (my favorite) to test your services.
- Creating the UiPath project
- Now that we know our Decision Service is working properly, we will create a simple UiPath project that will call our service and print the response.
- We will use UiPath community version (free), you can download it from here.
- Open the UiPath studio and create a new Blank Project:
- Calling the ODM web service
- This is the tricky part, UiPath community edition doesn’t come with the SOAP or HTTP request activities by default, we will need to install them.
- Open the ‘Manage Packages’ option:
- Search for UiPath.Web.Activities and install it:
- You should be able to see the 2 options in the Activities Panel:
- Now we need to decide if we want to consume the web service as a SOAP request call or as a REST API method. Let’s talk about the 2 options in UiPath:
- SOAP: If we want to use SOAP we will encounter a problem if we are using custom objects, as of now, UiPath is not able to properly identify the methods and types for your objects in order to make the request in the correct format. You will an error like this when we test and invoke:
- There is a way to accomplish but it will require to create a custom activity, we will not cover that in this post but you can follow this guide to do it.
- REST: This is the option we are going to choose for this tutorial. We just drag the ‘HTTP Request’ activity.
- In the ‘End point’ field we paste our WADL url, we select the ‘POST’ method and click Ok.
- We need to create 2 variables, one for the input body and one for the response. We just select the ‘Variables’ option and assign ‘String’ to both:
- We need to include the XML expression for our Request in the first variable but UiPath studio will not recognize this as a proper VB Expression, so we need to adjust our ‘”‘ marks in order to obtain a valid XML, this is my value for the input variable:
- This will convert our XML in a proper String and UiPath will not give us any errors.
- We assign the 2 variables in the properties of the HTTP Request activity:
- We create a Message Box or we open Notepad to show our response (variable2):
- We run our project:
We have successfully called a ODM Service from an UiPath project and capture the response. In the next post I will show how to deserialize the XML and use the data for different purposes, stay tuned!
I hope you enjoy this tutorial and please feel free to contact me with any query or feedback, thank you!
- Published in RPA, Rule Execution Server (RES), UiPath
Monitoring ruleset execution with ODM RES Decision Warehouse
After we finish developing and deploying a Rule Project into the Rule Execution Server (RES), oftentimes we need to review and analyze which and when a ruleset has been executed. Luckily for us the Rule Execution Server comes with the Decision Warehouse tool for monitoring and storing ruleset execution traces in a database. We can also connect and save this data to an external Database by configuring the Datasource in the Application Server console. In this article I will explain how to easily configure the properties of the Ruleset to enable the monitoring and then read and review the decision from the Decision Warehouse.
- Configuring the Ruleset
- Login into the RES console and navigate to the Ruleapp that contains the Ruleset you wish to monitor.
- Click the Ruleset, now you should be in the Ruleset view:
- By default, if you didn’t add any property before the deployment, the properties list is empty. There are 3 necessary properties you need to have to enable monitoring:
- ruleset.sequential.trace.enabled (if the ruleset contains tasks that use the sequential or the Fastpath execution mode)
- Instead of adding them manually, navigate and click the next option “Show Monitoring Options” and select “Enable tracing in Decision Warehouse”.
- The following options will depend on what you need to trace:
- After clicking save you will notice that the properties were added automatically (you might need to refresh the webpage):
- Execute a call or multiple calls of this Ruleset WS from Decision Validation Services, a client application, or a hosted transparent decision service.
- Tip: I use SoapUI software to execute and test the rulesets.
- Searching Rulesets executions in the Decision Warehouse
All the information about the Ruleset Execution will appear:
You can review which rules were fired, the timestamp, processing time, rules names, input/output parameters, etc. The goal is to provide business users with data from which they can generate reports and measure how well a business is running.
Tip: You can send a Decision ID tag while executing the ruleset so it is easy to find the Decision Warehouse:
I hope you enjoy this article about IBM ODM RES Decision Warehouse and as always feel free to contact me with any questions or feedback. Thank you!
- Published in Database, Decision Warehouse, Rule Execution Server (RES)