This is an IBM Automation portal for Digital Business Automation products. To view all of your ideas submitted to IBM, create and manage groups of Ideas, or create an idea explicitly set to be either visible by all (public) or visible only to you and IBM (private), use the IBM Unified Ideas Portal (https://ideas.ibm.com).
We invite you to shape the future of IBM, including product roadmaps, by submitting ideas that matter to you the most. Here's how it works:
Start by searching and reviewing ideas and requests to enhance a product or service. Take a look at ideas others have posted, and add a comment, vote, or subscribe to updates on them if they matter to you. If you can't find what you are looking for,
Post an idea.
Get feedback from the IBM team and other customers to refine your idea.
Follow the idea through the IBM Ideas process.
Cloud Pak for Business Automation - including Business Automation Studio and App Designer, Business Automation Insights
Business Automation Workflow (BAW) - including BAW, Business Process Manager, Workstream Services, Business Performance Center, Advanced Case Management
Content Services - FileNet Content Manager
Content Services - Content Manager OnDemand
Content Services - Daeja Virtual Viewer
Content Services - Navigator
Content Services - Content Collector for Email, Sharepoint, Files
Content Services - Content Collector for SAP
Content Services - Enterprise Records
Content Services - Content Manager (CM8)
Datacap
Automation Document Processing
Automation Decision Services (ADS)
Operational Decision Manager
Robotic Process Automation
Robotic Process Automation with Automation Anywhere
Blueworks Live
Business Automation Manager Open Edition
IBM Process Mining
Welcome to the IBM Ideas Portal (https://www.ibm.com/ideas) - Use this site to find out additional information and details about the IBM Ideas process and statuses.
IBM Unified Ideas Portal (https://ideas.ibm.com) - Use this site to view all of your ideas, create new ideas for any IBM product, or search for ideas across all of IBM.
ideasibm@us.ibm.com - Use this email to suggest enhancements to the Ideas process or request help from IBM for submitting your Ideas.
See this idea on ideas.ibm.com
Most business now employ DC REST API's for business reporting for business rules deployed in Business Console. The REST API's json response shows the listing all the business rules under the element list. For each business rules (both action rules and decision tables) we see a complete listing of the business rule properties e.g. name, type, createdBy, status etc which is great. The issue with "name": "rulePackage" ("label": "Folder") is that the value only shows the immediate parent folder and not the complete hierarchy of the folder . In order to determine the full folder path, one has to execute supplementary DC REST API call "to retrieve a listing of the all folders and from that using the "parentId" <-> "id" to infer the folder hierarchy of the business rule. Attached the json responses in a txt file. This process appears to cumbersome, clunky, laborious and unscalable for last scale deployment given:
- 3000 business rules that we are reporting for in our rule project.
- Folder hierarchies that run up-to 5 levels
- Laborious recessive lookup of the parentId until we find "null" to derive the full folder path
It would be most optimal for the customers to see the full path of the business rule instead of just the immediate parent folder. This will avoid an additional REST Call, iterative compute and derivation and improve the accuracy of the DC REST API's. the arguments business typically have is when Decision Center business rule details tab show the full path why shouldn't the retrieve list of query (and other related RESTAPI's ) return the full path?
Let use an example, the action rule (PC00000001 JK_TEST_PROFILE )is located in
Project : cargo-profiling-rules
Folder : Profiles/Alerts/Regions
From the rest API response: property returned for action rule (PC00000001 JK_TEST_PROFILE)
{
"name": "rulePackage",
"value": "Regions",
"label": "Folder"
},
As seen above only the most immediate folder name is returned not the full path. This issue applies to both the action rules and decision tables . This issue applies to all REST API's that return business rule details. In this case it was "List of elements returned by the query"
curl -X 'GET' \
'http://localhost:9580/decisioncenter-api/v1/projects/75f3a15f-67ed-4458-9e04-c9d1012f76ce/queries/cc97a932-c72f-470a-a91d-c8c32a755fe9%20/run?datasource=jdbc%2FilogDataSource' \
-H 'accept: */*'
Idea priority | High |
By clicking the "Post Comment" or "Submit Idea" button, you are agreeing to the IBM Ideas Portal Terms of Use.
Do not place IBM confidential, company confidential, or personal information into any field.
Attached a possible implementation that you may find useful.
package odmtest;
import ilog.rules.teamserver.brm.IlrBaseline;
import ilog.rules.teamserver.brm.IlrRule;
import ilog.rules.teamserver.brm.IlrRulePackage;
import ilog.rules.teamserver.client.*;
import ilog.rules.teamserver.brm.IlrRuleProject;
import ilog.rules.teamserver.model.*;
import ilog.rules.teamserver.model.permissions.IlrPermissionException;
import java.util.*;
public class DecisionCenterCustomization {
public static void main(String[] args) throws IlrObjectNotFoundException, IlrPermissionException {
String serverUrl = "";
String login = "rtsAdmin";
String password = "rtsAdmin";
String datasource = "jdbc/ilogDataSource";
IlrSessionFactory factory = new IlrRemoteSessionFactory();
try {
factory.connect(login, password, serverUrl, datasource);
IlrSession session = factory.getSession();
String projectName = "cargo-profiling-main";
IlrRuleProject cargoProject = (IlrRuleProject) IlrSessionHelper.getProjectNamed(session, projectName);
IlrBaseline currentBaseline = IlrSessionHelper.getCurrentBaseline(session, cargoProject);
session.setWorkingBaseline(currentBaseline);
// Retrieve the current working rule project
// Query with BQL
String query = new String(
"Find all business rules such that the name of each business rule contains \"JK\"");
IlrDefaultSearchCriteria criteria = new IlrDefaultSearchCriteria(query.toString());
/* -- Retrieve std properties of a business rule
@SuppressWarnings("rawtypes")
List summaries = session.findElements(criteria, IlrModelConstants.ELEMENT_SUMMARY);
for (int i = 0; i < summaries.size(); i++) {
IlrElementSummary ruleSummary = (IlrElementSummary) summaries.get(i);
System.out.println(ruleSummary.getName());
System.out.println(ruleSummary.getPropertyValue("createdOn"));
} */
@SuppressWarnings("rawtypes")
List details = session.findElements(criteria, IlrModelConstants.ELEMENT_DETAILS);
for (int i = 0; i < details.size(); i++) {
IlrElementDetails detail = (IlrElementDetails) details.get(i);
System.out.println(getHierarchyPath(detail));
}
session.close();
} catch (IlrConnectException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static String getHierarchyPath(IlrElementDetails element) {
try {
if (!(element instanceof IlrRule))
return element.getName();
IlrRule rule = (IlrRule) element;
StringBuffer sb = new StringBuffer();
// Get the rule name
String name = rule.getName();
// Get the rule package
IlrRulePackage current = rule.getRulePackage();
Stack<String> stack = new Stack<String>();
while (true) {
if (current == null)
break;
// Push the package name onto the stack
stack.push(current.getName()+ ".");
// Next parent ...
current = current.getParent();
}
// Pop the stack and build the path
while (!stack.empty()) {
String folder = (String) stack.pop();
sb.append(folder);
}
// Append the rule name to the path
sb.append(name);
// Return the built path
return sb.toString();
} catch (Exception e) {
return element.getName();
}
}
}
o/p:
Jan 29, 2025 5:26:36 PM com.ibm.rules.decisioncenter.remoting.internal.RemoteSessionHttpExecutorBuilder log
INFO: {"url":"","datasource":"jdbc/ilogDataSource","username":"rtsAdmin","message":"Sign in successfully","date":"29 January 2025, 5:26:36 pm"}
Profiles.AC00000002 JK Name Test Profile
Profiles.AC00000014 JK DT Name Address Test Profile2
Profiles.AC00000012 JK DT Name Address Test Profile
Profiles.PC00000001 JK_TEST_Profile
Profiles.Alerts.Regions.PC00000001 JK_TEST_PROFILE
Jan 29, 2025 5:26:44 PM com.ibm.rules.decisioncenter.remoting.internal.RemoteSessionHttpExecutorBuilder log
INFO: {"url":"","datasource":"jdbc/ilogDataSource","username":"rtsAdmin","message":"Sign out successfully","date":"29 January 2025, 5:26:44 pm"}