Skip to main content

Handle SQL Condition on Workflow Action’s in Maximo via OSLC API

 Maximo’s NextGenREST OSLC API(s) are very powerful but they don’t provide the capability to handle SQL Conditions associated with Actions or Nodes. For example- A manual Input node in the workflow can have multiple actions available and they are to be shown on the basis of SQL Expressions then OSLC API returns all options when making API call w/o evaluating the SQL expression.

To handle this, another feature to call automation script using OSLC API can be used to return the response with a flag having true or false information. In the script below, let us assume we have a workflow on the PR object and we need to evaluate SQL conditions associated with a manual input node.

From Postman make a GET call for each action:

GET <servername:port>/maximo/oslc/script/<scriptname>?ownerid<x>&actionid=<y>&wfactionid=<z>

& response of this script shall return true or false based on SQL condition evalauted.

load("nashorn:mozilla_compat.js"); importClass(Packages.psdi.server.MXServer);
importClass(Packages.psdi.common.parse.ParserService);
importClass(Packages.psdi.mbo.SqlFormat);
// Pass ownerid, actionid and wfactionid from OSLC API Call as Query parametervar response = {};
var responseBody;
var prid = request.getQueryParam("ownerid");
var actionid= request.getQueryParam("actionid");
var wfactionid= request.getQueryParam("wfactionid");
var userInfo = MXServer.getMXServer().getSystemUserInfo();
var sqf = new SqlFormat(userInfo, "actionid=:1 and wfactionid=:2 ");
sqf.setObject(1, "WFACTION", "actionid", actionid);
sqf.setObject(2, "WFACTION", "wfactionid", wfactionid);
var wfactionSet = MXServer.getMXServer().getMboSet("WFACTION", userInfo);
wfactionSet.setWhere(sqf.format());
wfactionSet.reset();
var wfactionMbo = wfactionSet.getMbo(0)
var sql=wfactionMbo.getString("condition")
if(sql.length>0)
{
var sqf1 = new SqlFormat(userInfo, "prid=:1"); sqf1.setObject(1, "PR", "prid", prid);
var prSet = MXServer.getMXServer().getMboSet("PR", userInfo); prSet.setWhere(sqf1.format());
prSet.reset();
if(prSet.isEmpty())
{
response.available=true;
}
else
{
var prMbo = prSet.getMbo(0)
// Call Parser Service method to pass the SQL Condition and MBO to get the true or false after SQL Condition is evalauted.var parServ=MXServer.getMXServer().lookup("PARSER");
var avalbl = parServ.getBoolean(sql,prMbo);
// Add variable available in response object and set it to boolean returned when there is SQL associated.
response.available=avalbl;
}
}
//Return the API response in form of JSON String
responseBody = JSON.stringify(response);

Comments

Popular posts from this blog

Maximo OSLC Integration with External System- Get data in JSON format

Greetings! If you have noticed recent version of Maximo, couple new application in Integration module has been added which are OSLC Resources and OSLC Provider.These modules gives us ability to integrate with external system in JSON. OSLC is an open community that creates specifications for the integration of products and/or tools.  IBM is a leading contributor to this community and many software products within the IBM Software Group are implementing OSLC in order to enable cross-product integrations. An OSLC integration requires 2 players-  1. OSLC Consumer application 2. OSLC Provider application.   An OSLC provider application makes containers of associated resources(data) available for integration through service providers. Consumer applications then use these service providers to query resources and to create, update, and delete resource data.  The consumer application sends a query to the service provider for resource data. The service p...

TD Tool Kit - Importing new language in Multilingual Maximo environment

Greetings! +IBM MAXIMO  gives you ability to use multiple languages like Spanish , Portuguese, Chinese , Korean , French etc other than English , if your Maximo environment is global and have users across the globe. Importing a new language in Maximo can be done by TD Tool kit. TD took kit stands for Translation Data Toolkit.  The Translation Data Toolkit is used to translate the Maximo database and handling Multi Language functionality. The TDToolkit is located under the {Maximo_install}\tools\maximo directory.  The process to import new language is a 3 step activity- 1. Take Maximo down by stopping application servers. 2. Export Labels in XLIFF file format 3. Translate the XLIFF file 4. Check for error and import translated XLIFF files. 5. Validate and start Maximo. Export Labels in XLIFF file format -  In Maximo directory , XLIFF files store all the translations for different tags related with a MBO or database table. In order to expor...

Maximo- An Introduction !!

Greetings ! Very often during conversations , I have seen a strange reaction on face of people when someone say that I am consulting in Maximo and the response which most of the time you'll get from those tech-heads is - "Maximo , What is Maximo...?" so here we are trying to explain and revisit my understanding over this product Maximo. +IBM MAXIMO   is a leading enterprise level asset management product used in various industries like - Manufacturing , Automotive , Oil & Gas , Transportation , Health Care , Retail which gives you immense ability to track down the cost of an asset in plant right starting from installation to its decommissioning. It is a pioneer Asset Life Cycle and Maintenance Management Solution and part of family of software known as "CMMS"- Computerized maintenance management system. In simple term , everything is Maximo revolves around the term - Total Cost of an Asset. In today's competitive world and atmosphere of slowing...