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:
- https://github.com/jbossdemocentral/bpms-install-demo
- https://github.com/jbossdemocentral/brms-install-demo
JBoss EAP 7.0 Support
Probably the most requested improvement is support for JBoss EAP 7. BRMS and BPM Suite 6.4 are now fully supported and certified on EAP 7, providing the platform with the ability to utilise key improvements in the Java EE runtime provided by EAP, like the new fast and lightweight Undertow web-container and the ActiveMQ Artemis messaging system.
Spring Support Upgrade
The Spring integration support of the platforms has been updated from Spring 3.x to 4.3. This allows our BRMS and BPM Suite customers to use the latest and greatest Spring-based technologies when building their rules and business process solutions.
Process Instance Migration
JBoss BPM Suite provides a new "Process Instance Migration" API. With this release, process instance migration is now a fully supported feature of the platform, allowing to migrate running process instances from one version of a process definition to another (newer) version of the definition. The new API allows for easy implementation of migration and is available through the RuntimeManager API (MigrationManager), the jBPM Services API (ProcessInstanceMigrationService) and the Intelligent Process Server (KIE Server) API. Note that, although the new API makes it easy to execute process instance migrations, these kind of exercises should be carefully planned.
More information about Process Instance Migration can be found in the Development Guide.
Fire-and-Forget pattern with JMS on Intelligent Process Server
The Intelligent Process Server (KIE Server) client now supports the Fire-and-Forget pattern with JMS. In previous versions of the platform, the JMS transport used a Request-Response pattern, which meant that the client would listen for a response on a reply queue when issuing commands to the server. In version 6.4, the client can simply send a jBPM command (e.g start process instance) to the Intelligent Process Server in a Fire-and-Forget style and thus will not (have to) wait for a response from the server before continuing execution.
Consult the Intelligent Process Server Java Client API Overview chapter in the Development Guide for more information.
Simplified access to task variables
BPM Suite 6.4 makes it easier for users that implement custom task-event listeners to access task variables. While it was already possible to access these variables from within a listener, it required the use of internal services and data marshalling. To simplify access to the variables, the TaskContext has been enhanced:
event.getTaskContext().loadTaskVariables(event.getTask());
This code snippet loads both input and output variables and caches them on the task instance. The data can be retrieved as such:
task.getTaskData().getTaskInputVariables(); task.getTaskData().getTaskOutputVariables();
Again, the Development Guide contains more information on this specific topic.
KIE Server Remote API Deployment Info querying
The KIE Server (Intelligent Process Server/Decision Server) now provides a Remote API to query the Deployment Info based on the GAV (GroupId, ArtifactId and Version) of the deployment unit. It allows to filter the information returned by KIE Server based on the "release-id" of the deployed KJAR or on the "status" of the container. Filtering by release-id can be done on an exact match or by a partial GAV (e.g. only the GroupId).
See the Containers and Unmanaged Intelligent Process Server Environment sections of the Development Guide for more information.
Alignment of Business-Central and KIE-Server
In previous versions of JBoss BPM Suite, Business-Central and KIE Server (Intelligent Process Server) deployments needed to be separated in order to function correctly. I.e the environments needed to be connected to their own datasource. This had the implication that it was impossible to manage and monitor process instances and tasks running on KIE Server from the Business-Central console. In version 6.4 the integration between the 2 environments has been improved in such a way that both environments can now point to the same datasource. Second, process instances and task instances for a given deployment on KIE Server can now be managed from the Business-Central management console.
One requirement here is that the container name of a given deployment (KJAR) on KIE Server is equal to the Maven GAV of the KJAR that is deployed in the container. The second requirement is that the same KJARs need to be deployed on both KIE Server and Business-Central.
More information on how to install and setup these environments can be found in the Administration and Configuration Guide.
WorkItem installation and configuration improvements
BPM Suite 6.4's WorkItem Configuration now supports Maven dependencies, which allows to configure the dependencies of a given WorkItem implementation via Maven GAVs. Second, a new handler MVEL resolver was introduced to provide the ability to describe the WorkItem Handler instantiation configuration. This allows users to better describe their handler dependencies and instantiation logic in the handler configuration, which eases sharing and reuse of WorkItem Handlers in an organisation and makes installation, configuration and usage of these custom handlers less error-prone.
More information can be found in the Service Repository section of the Red Hat JBoss BPM Suite 6.4 User Guide.
Expressions in Query inputs
In BRMS 6.4, Drools queries now support expressions. It is now possible to use the field of a fact as input argument for a query:
query contains(String $s, String $c) $s := String(this.contains($c) ) end rule PersonNamesWithA when $p : Person() contains($p.name, "a"; ) then //implement RHS here end
and more in general any kind of valid expression:
query checkLength(String $s, int $l) $s := String( length == $l ) end rule CheckPersonNameLength when $i :Integer() $p : Person () checkLength($p.name, 1 + $i + $p.age; ) then //implement RHS here end
BRMS engine threading improvements
The new release has a number of internal improvements in the rule execution engine. The internal Drools state-machine has been improved, allowing for deterministic engine behaviour in a multi-threaded environment. This work also paves the road for parallel execution which is being developed for BRMS 7.
Support for KIE-Scanner in Blueprint
KIE-Scanner is now supported in OSGi Blueprint environments. It is now possible to decletarively create and schedule a KieScanner in Blueprint:
<kie:releaseId id="myReleaseId" groupId="org.kie.blueprint" artifactId="blueprint-scanner-test" version="1.0-SNAPSHOT" /> <kie:import releaseId-ref="myReleaseId" enableScanner="true" scannerInterval="1000"/>
This also allows to retrieve the scanner programmatically from the Blueprint container by adding the "-scanner" suffix to the KieContainer's releaseId name:
BlueprintContainerImpl container = createContainer(); KieScanner kscanner = (KieScanner) container.getComponentInstance("myReleaseId-scanner"); kscanner.scanNow();
JMX monitoring framework aligned with the BRMS & BPM Suite 6.x series
Until now the, the JMX implementation in BRMS and BPM Suite 6 was still aligned with the structure of BRMS 5 environments. E.g., concepts like KieContainer and ReleaseId were not supported in the monitoring platform. This caused issues when one wants to, for example, monitor cloud environment deployments. Furthermore, monitoring of Stateless KieSessions, a standard use-case in stateless cloud environments, was not supported.
With BRMS and BPM Suite 6.4, the JMX implementation has been greatly improved and is now fully aligned with the KIE API, allowing for proper and effective monitoring of all types of JBoss BRMS and BPM Suite deployments, including Stateless KieSession. This enables, among other things, effective monitoring of the Decision Server and Intelligent Process Server in traditional, cloud and containerized deployments.
Conclusion
The Red Hat JBoss BRMS and Red Hat JBoss BPM Suite 6.4 releases bring a large number of improvements and new features to the platforms, both in the context of stability, security and functionality. To get started with these new releases, we encourage you to try our installation demo's for BRMS and BPM Suite.
The various BRMS and BPM Suite demo's available in our JBoss Demo Central repository will be updated to the new releases (including an upgrade to JBoss EAP 7.0) in the upcoming weeks.
About the author:
Duncan Doyle is the Technical Marketing Manager for the JBoss BRMS and BPMSuite 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, business-rules 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, BRMS and BPM Suite. 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.