Open Editions

Open Editions

Come for answers. Stay for best practices. All we’re missing is you.

 View Only

From REST to Messaging integration - How to set up your BAMOE 9.2 workflows with Apache Kafka

By Martin Weiler posted Mon May 12, 2025 06:13 PM

  

IBM Business Automation Manager Open Editions (BAMOE) 9.2 and Apache Kafka: Seamless Integration for Scalable Workflow Execution

In the modern world of enterprise software, businesses need agile, scalable, and reliable systems that can manage complex workflows and integrate seamlessly with other tools. IBM Business Automation Manager Open Editions (BAMOE) 9.2 is one such solution designed to provide a robust platform for business process automation. One of the key strengths of BAMOE 9.2 is its ability to easily integrate with Apache Kafka, a distributed messaging broker widely used for high-throughput, low-latency communication.

In this article, we will explore how BAMOE 9.2 and Apache Kafka can work together to facilitate seamless and efficient application integrations, enhancing your organization's ability to manage business processes and workflows with minimal friction.

Understanding IBM Business Automation Manager Open Editions (BAMOE) 9.2

IBM BAMOE is a comprehensive platform designed to help businesses automate their operations. It allows organizations to take advantage of automation capabilities while embracing open standards, cloud-native architecture, and integration with modern messaging systems like Apache Kafka. BAMOE 9.2 builds on the flexibility of previous versions by providing an even more open, scalable, and customizable solution for automating business workflows.

Key features of BAMOE 9.2 include:

  • Low-code application development: Build and deploy automation applications with minimal coding, making automation more accessible for a wider range of users.

  • Cloud-native deployment: Leverage Kubernetes and other cloud-native technologies to deploy applications in scalable and highly available environments.

  • Integration with various enterprise systems: Integrate with external data sources, APIs, and legacy systems to streamline business operations.

  • Process monitoring and optimization: Gain insights into the performance of automated processes to identify inefficiencies and optimize workflows.

Apache Kafka: The Backbone of Modern Messaging

Apache Kafka is an open-source distributed streaming platform that excels in handling large volumes of real-time data. Kafka acts as a messaging broker, efficiently distributing and managing streams of data between various producers and consumers. Its distributed architecture allows it to scale horizontally, ensuring that data flows seamlessly between systems, even at the largest scales.

By integrating BAMOE 9.2 with Apache Kafka, businesses can tap into the power of both platforms to create highly scalable, event-driven architectures.

Seamless Integration of BAMOE 9.2 with Apache Kafka

Integrating IBM BAMOE 9.2 with Apache Kafka enhances the automation capabilities of BAMOE by enabling real-time data exchange, event-driven workflows, and enhanced scalability. Below are several key ways in which BAMOE 9.2 can leverage Kafka's capabilities to improve business process automation:

1. Real-time Event Streaming for Business Processes

BAMOE 9.2 enables the automation of complex workflows by leveraging the power of event-driven architecture. Kafka excels in managing real-time event streams, and by integrating it with BAMOE, businesses can trigger process executions in response to specific events. For example, when a customer places an order, Kafka can push that event to BAMOE, triggering an automated workflow that processes the order and updates the relevant systems.

This seamless integration creates an immediate feedback loop between different parts of an organization’s infrastructure, resulting in faster decision-making, quicker response times, and better customer experiences.

2. Simplified Messaging and Data Integration

In many organizations, different applications and systems communicate through a variety of messaging protocols. Apache Kafka helps standardize messaging across disparate systems, and BAMOE 9.2 takes advantage of Kafka's messaging capabilities to simplify integrations. This allows BAMOE to seamlessly connect with external systems such as ERP, CRM, or legacy applications, as well as IoT devices, all through a single messaging backbone.

By utilizing Kafka, BAMOE reduces the complexity of integrating multiple systems, enabling a unified, scalable messaging architecture that reduces the need for point-to-point connections.

3. Decoupling of Business Process Automation from System Dependencies

One of the core benefits of using Kafka as an intermediary in BAMOE’s integration architecture is that it decouples business process automation from the underlying systems. When Kafka acts as a message broker, BAMOE workflows are not directly tied to specific applications or data sources. Instead, the communication is done through Kafka topics, which helps ensure that each component of the architecture can evolve independently. This decoupling makes systems more modular, flexible, and easier to maintain.

4. Scalable Process Automation

BAMOE 9.2 is designed to scale with the needs of modern enterprises, and Kafka plays a critical role in ensuring this scalability. Kafka’s ability to handle high-throughput data streams and its distributed nature align perfectly with BAMOE’s cloud-native deployment. When traffic spikes occur or when large numbers of business processes need to be automated simultaneously, Kafka ensures that messages continue to flow without compromising performance.

Whether BAMOE is deployed on a private cloud, public cloud, or hybrid environment, Kafka ensures that automation processes remain responsive and scalable, even under heavy load.

5. Fault Tolerance and High Availability

Both IBM BAMOE 9.2 and Apache Kafka are built with resilience in mind. By integrating BAMOE with Kafka, businesses can ensure that their automated workflows are fault-tolerant and highly available. Kafka’s inherent fault-tolerance capabilities, such as message replication and partitioning, ensure that messages are not lost in case of server failures or system outages.

BAMOE can rely on Kafka’s guaranteed message delivery to maintain the integrity of automated processes, even during times of high traffic or system failures, reducing downtime and improving overall system reliability.

Step-by-step guide on how to integrate BAMOE workflows with Apache Kafka

1. Testing the default REST endpoints for workflows

Let's take a look at a typical Business Service application built with BAMOE 9.2 that uses processes (*.bpmn) and decisions (*.dmn) to implement the business logic. For the purpose of this blog, we are using the code available in https://github.com/martinweiler/loan-business-service/tree/main/loan-business-service. This simple project - which has been created following the recommended setup from the BAMOE 9.2 process-compact-architecture example - contains a Loan process that can automatically approve a loan request or defer it to manual approval, based on the loan amount and the annual salary of the requester. The entry point to start a Loan application process is the Start event of the Loan.bpmn process itself:

We can now run and test this base version of the application:
$ mvn clean install -Pcontainer
$ docker compose up -d

Once both commands are executed sucessfully and the application is up and running, the generated REST endpoint for the loan application is available at http://localhost:8080/Loan and a new instance of this process can be started with the following command:

curl -X 'POST' \
  'http://localhost:8080/Loan' \
  -H 'accept: */*' \
  -H 'Content-Type: application/json' \
  -d '{
  "amount": 10000,
  "annual_salary": 7000
}'

The request should receive a HTTP 201 response with the id of the newly created process instance, and any output variables.

2. Change the application to integrate with Apache Kafka

Let's take a look at the necessary steps to change the start event from being accessible through REST, and to have it listen on a topic that is deployed in Apache Kafka instead. The first and most obvious step is to change the Start node in the process to a Start Message node:

With the change to a Start Message node, use the properties panel to define a name for the channel, using the Message property:
The channel name defined in the Message property can be freely chosen, but needs to match the additional configuration that is required in application.properties:
# Kafka integration
mp.messaging.incoming.loan_request.connector=smallrye-kafka
mp.messaging.incoming.loan_request.value.deserializer=org.apache.kafka.common.serialization.StringDeserializer
BAMOE uses the SmallRye Reactive Messaging connector for the Kafka integration. Smallrye uses an abstraction named channel. The implementation of channels depends on the underlying event broker. For example, when using Kafka, every channel is mapped to a topic. Channels are configured by using properties. The pattern for these properties is:
mp.messaging.[incoming|outgoing].<channel name>.<property_name>
Now that we have configured the loan_request channel for the SmallRye Kafka connector, and defined the deserializer to be used for any incoming message, the final step is to add the required dependencies to the application's pom.xml file:
    <!-- Kogito event handling -->
    <dependency>
      <groupId>org.kie</groupId>
      <artifactId>kie-addons-quarkus-messaging</artifactId>
    </dependency>
    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-smallrye-reactive-messaging-kafka</artifactId>
  </dependency>
And with these changes, we are ready to rebuild the application and try the Kafka messaging integration.
Note: In the repository linked above, the event-driven branch already contains all the changes highlighted in this section.

3. Test the integration with Apache Kafka

After building the application from the event-driven branch, all services - including Apache Kafka - can be started using docker compose:

$ docker compose up -d
[+] Running 6/6
✔ Network loan-business-service_default               Created
✔ Container loan-kafka                                Started
✔ Container loan-business-service-postgres            Healthy
✔ Container loan-business-service                     Started
✔ Container loan-business-service-pgadmin             Started
 ✔ Container loan-business-service-management-console  Started      
Using the tool of your choice, it is time to send a message to the defined loan_message topic to start a process instance. Apache Kafka provides simple command line tools for this purpose, which we can execute inside the running docker container:
docker exec -it loan-kafka /opt/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic loan_request

The tool will wait for a message to be sent to the defined topic. Using the following message format and payload, we can create an instance of the Loan application workflow:

{"specversion": "1.0", "id": "external-system-001", "source" : "manual/testing", "type": "loan_request", "data": { "amount" : 10000, "annual_salary" : 5000 }}

Use Cases for BAMOE 9.2 and Apache Kafka Integration

The integration of BAMOE 9.2 and Apache Kafka can be applied to a variety of business use cases, including:

  1. Order Processing: Automate the order-to-cash process by triggering workflows in BAMOE in response to events like order placement or inventory updates.

  2. Customer Service Automation: Stream customer interactions and feedback through Kafka to trigger automatic responses, route tickets, or initiate escalation workflows.

  3. Real-Time Analytics: Use Kafka to stream real-time data from various systems to BAMOE for processing and generating up-to-date insights or triggering relevant business actions.

Conclusion

The combination of IBM BAMOE 9.2 and Apache Kafka unlocks powerful capabilities for modern enterprises looking to scale their process automation and integrate various systems in real-time. Kafka provides a robust, fault-tolerant messaging layer, while BAMOE offers a comprehensive platform for automating and optimizing business workflows. Together, these platforms enable organizations to build flexible, scalable, and event-driven architectures that can respond quickly to changing business needs.

0 comments
7 views

Permalink