Duncan Doyle

Recent Posts

In a previous blog post, we explained how to deploy an existing JBoss BRMS/Drools rules project onto an OpenShift DecisionServer. We created a decision/business-rules microservice on OpenShift Container Platform that was implemented by a BRMS application. The polyglot nature of a microservice architecture allowed us to use the best implementation (a rules engine) for this given functionality (business rules execution) in our architecture.

The project we used was an existing rules project that was available on GitHub. We did however not explain how one can create a project from scratch in the JBoss BRMS Business Central environment and deploy it on OpenShift Container Platform. That is what we will explore in this article.

Continue reading “Your first Business Rules application on OpenShift: from Zero to Hero in 30 minutes”

Red Hat has just released new versions of its popular business automation products: Red Hat JBoss BRMS & Red Hat JBoss BPM Suite 6.4. In this post we will highlight the improvements and new features these releases brings. Apart from stability and performance improvements, version 6.4 brings new, highly requested, features that improve the platform experience in larger enterprises.

The new versions of the platforms are available both from the Red Hat Customer Portal (BPM Suite and BRMS) and the Red Hat Developers website. Installation instructions can be found in the “Getting Started Guide” for BPM Suite and BRMS and on the Red Hat Developers “Get Started” pages for BPM Suite and BRMS. Finally, the installation demo’s have been updated to target the latest versions:

One of our most popular Red Hat JBoss BRMS demo’s, and one that has been available for quite some time, is the CoolStore demo. The CoolStore demo shows how business rules can be used to calculate values like promotional and shipping discounts in a shopping-cart. It furthermore illustrates concepts like ruleflow-groups and dynamic rule updates using KieScanner.

Continue reading “Micro-rules on OpenShift: The CoolStore just became even cooler!”

Over the last couple of weeks, I’ve been working on some Red Hat JBoss BPM Suite workshop material. One part of the workshop is a four-hour lab that guides the attendees through the development of JBoss BPM Suite 6.x processes, rules and applications (note that this workshop is available to our customers, please contact your Red Hat account manager or local Red Hat sales representative for more information), but I’m going to be sharing part of the story with you today.

The lab-sessions require a pre-installed and pre-provisioned virtual machine, which contains all the material required to run the lab. This means that I need to create, install, provision and deploy a virtual machine that contains all the required tools and code to successfully run the lab sessions. Obviously this can done by hand, but what’s the fun in that?!

Manual work is error prone, hard to reproduce and definitely hard to version control. Hence, we want to have an automated solution in which we can (declaratively) define the layout and configuration of our virtual machine. Say hello to Vagrant and Ansible!

Red Hat JBoss Resource Planner (part of Red Hat JBoss BRMS, the enterprise product based on the upstream OptaPlanner community project) is the leading open source constraint satisfaction solver. A constraint satisfaction solver is a solving engine build around sophisticated optimization algorithms that allows to plan for optimal use of a limited set of constrained resources.

Every organization faces scheduling problems: assign a limited set of resources, for example employees, assets, time and money, to build products or provide services. Resource Planner optimizes such planning problems to provide an optimal utilization of resources, resulting in higher productivity, less costs and higher customer satisfaction. Use cases include:

Vehicle Routing: What is the optimal set of routes for a fleet of vehicles to traverse in order to deliver to a given set of customers?

Employee Rostering: Find an optimal way to assign employees to shifts with a set of hard and soft constraints.

Cloud Optimization: What is the optimal assignment of processes to cloud computing resources (CPU, memory, disk)

Job Scheduling: Optimise the scheduling of jobs of varying processing times on a set of machines with varying processing power, trying to minimize the makespan.

Bin Packing: pack objects of different volumes into a finite number of bins or containers in a way that minimizes the number of bins used.

and many more.

All these problems are, so called, NP-hard problems, which implies that the time required to solve these problems using any currently known algorithm increases very quickly as the size of the problem grows (e.g. adding a destination to a vehicle routing problem, adding a shift to an employee rostering problem). This is one of the principal unsolved problems in computer science today.

As it is impossible to solve these problems, or find the best solution to these problems, in a limited timespan when scaling out, Business Resource Planner uses a set of sophisticated optimization heuristics and meta-heuristics (like Tabu Search, Simulated Annealing and Late Acceptance) to find an optimal solution to these problems.

As said, every organisation has these kind of scheduling problems, and there is a lot to gain from optimising these problems. In the remainder of this post we will walk you through a number of steps to get you started with Business Resource Planner/OptaPlanner to find an optimal solution to your business problem and start increasing productivity, reducing costs and increasing customer satisfaction.

Continue reading “Use these six simple steps to get started with Red Hat JBoss Business Resource Planner”

JBoss BRMS provides a sophisticated and powerful business rules engine. The BRMS rules engine allows an organization, among other things, to:

define rules in single, governed, environment.

define rules in the domain language (or syntax) of the problem domain.

declaratively define rules. It allows to define what to do, not how to do it

individually test rules, outside of any application logic.

(incrementally) update rules without the need to update and/or restart the application that uses the rules.

have better performance on rule execution than in traditional application code.

An often asked question is how to effectively and efficiently debug a rule or a set of rules in a declarative rules engine. Because the rules engine uses sophisticated and complex algorithms like ReteOO and PHREAK, one can no longer simply rely on setting a breakpoint on a left-hand-side (LHS) constraint. When someone is used to imperative programming languages, like Java, declarative languages and runtimes need a bit of practice to debug.

In this article we will provide five ways to make debugging of JBoss BRMS rules applications more efficient and effective.

One of the core drivers behind modern application architecture, development and delivery methodologies like micro-services, agile and CI/CD is the ability to automatically test any software artifact, from application code to server configuration. Automated testing gives us the reliable, repeatable, assurance that our software meets the required quality with respect to aspects like functionality, performance, and scalability and is ready to be deployed in production. Why should testing of a business-process defined in BPMN2, a deployable software artifact, be any different?

One of the unique features of Red Hat JBoss BPMSuite is that, due to it’s adoption of Maven as de-facto build platform, it allows to utilize standard Java testing practices and methodologies in the business process space. In fact, jBPM (the upstream community project thatforms the base of Red Hat JBoss BPMSuite), provides out-of-the-box JUnit test classes that allow one to easily unit-test business processes defined in BPMN2 (see the jBPM User Guide for more detail).