Duncan Doyle

Duncan Doyle is the Technical Marketing Manager for the Decision Manager and Process Automation Manager platforms at Red Hat. With a background in Red Hat Consulting and Services, Duncan has worked extensively with large Red Hat customers to build advanced, open-source, decision management and business process management solutions. He has a strong background in technologies and concepts like Service Oriented Architecture, Continuous Integration & Delivery, rules engines and BPM platforms and is a subject matter expert (SME) on multiple JBoss Middleware technologies, including, but not limited to, JBoss EAP, HornetQ, Fuse, DataGrid, Decision Manager and Process Automation Manager. When he’s not working on open-source solutions and technology, he is building Lego with his son and daughter or jamming along some 90’s rock-music on his Fender Stratocaster.

Recent Posts

Use these six simple steps to get started with Red Hat JBoss Business Resource Planner

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”


Get it done with these 5 techniques to debug your JBoss BRMS applications


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.

Continue reading “Get it done with these 5 techniques to debug your JBoss BRMS applications”


Unit-testing your BPM processes by bending time.

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).

Continue reading “Unit-testing your BPM processes by bending time.”