Skip to main content

Red Hat JBoss Fuse - Processes and Integration routes

People often confuse when they look at camel route and BPM process, although they do look very similar as connecting different nodes with conditions and passing objects or messages, the way they are structured and engineered to execute is a complete different story. Let’s talk about Camel route in JBoss Fuse, the endpoints of camel routes are smart, they handle different protocols, consumes and produce messages, BPM endpoints tends to be just a starting point kick of by a automated application and ended when the process is done. The users of Camel route are more developer oriented it is used to integrate between various systems, routing data and transform messages, whereas BPM are used to describe business process between departments, define business users and departments and are often used by business analyst.

One thing I found when designing integration solutions, I will try to make my services stateless, so it will be more decouple and modularized and easier to horizontally extend the capability. But in a business automation or human tasks, it must keep the state of each process, I made a table showing the difference between the two.



BPM Process
Camel Routes
Main purpose
Describe business processes within an organization
Describe the protocols, transformation of data and integration pattern of a service
Users
Business analyst 
Integration developers
Analysis
Define business user and department entity
Define systems applications
Nodes
Divide the node into services in each departments and responsibility
Divide nodes into different actions of a services, such as executing business logics, data transformations
Endpoint
Indicator Only
Smart Endpoint
State
Stateful
Stateless
Transactions
No, error should be handle by triggering different events
Transactions and XA transactions are supported in Messaging in Database protocols
Human interactions
Built-in Human Task handler
Should avoid human interactions
Best Practice
Place for meaningful business process and business rules
Should only have routing logic, data transform rules. NO business rules in ESB.



So one thing I might consider when architecting, is to have client kicking off a business process, the business process can then call the services for various application functionality. This way you can then 
  • Record and track the state of each processes.
  • Human task are considered as part of the process and can mix with system automation.
  • Having services built smaller, more modularize and easier to expend. 
  • Keep ESB clean, for that I am no business logic in the routes. 
  • Allow processes to talk to more protocol by taking advantages of Camel's smart endpoint. 
  • Hide transaction from process, since it is always complex when it's between departments, by having transaction within each service as boundaries will simply the steps.



Comments

Popular posts from this blog

Red Hat JBoss Fuse - Getting Started with Fuse Integration Service 2.0 Tech preview

I just realized that I did not do a getting started for Fuse Integration Service 2.0 Tech preview before I did the pipeline demo, thanks for those of you who reminded me! :)

To get started with FIS 2.0, for people who has just getting to know the technology, here is how I interpret it. Basically, it's divide into two aspect,

1. Integration development, FIS uses Apache Camel as the core technology that creates, orchestrate, compose microservices into a super lightweight thin integration layer, and become the API provider and service orchestrator through exposing RESTful or messaging service endpoints. And you can choose to either package and run it with Spring-Boot or Karaf.


2. Application Deployment and Management, FIS takes advantages of OpenShift platform, and allows you to separately deploy the micro-integration service among distributed environment, at the same time takes care of the failover, high availability, load balancing and service lookup problem for you.


So, now we know …

Red Hat JBoss Fuse/A-MQ - Fuse and A-MQ Version 6.3 GA is released!

Fuse and A-MQ 6.3 GA has just went out. Maybe, you would think this is just only a minor version release why should I care? Hold your thoughts on that! Because they have done a lot of improvements and also added many new features into this release.

Besides various bug fixes and making sure Fuse Fabric is much more stable. There are two major change in this version update:

New Tooling in JBoss Developer Studio (JBDS) 9.1 GA. Newer Apache Camel version – Camel v2.17. I was really impressed by the work put in to make developing Camel application much simpler. First is the installation of tooling itself. Now it has a all-in-one installer so you don't need to worry about which plugins you need to check. See the videos below to see the new "Getting Started" of Fuse 6.3.



And If you notice from the above video, the presentation of camel route in JBDS has also updated. It fixed some of the miss representation of logic and making it easier to read.

Old Camel Route
New Camel Route
On …

Fuse Integration Service - Setup JBDS and create first quickstart application

Before we go and start creating our first application, I want to show you how to setup your JBoss Developer Studio, create a small application from the quickstart example and then running it on Fuse Integration Service.

I am using JBoss Developer Studio version 9, you can find it here.
After download the

jboss-devstudio-9.0.0.GA-installer-eap.jar
double-click it, and start installing with default values.

After successful installation, we will need install the plugins for Fuse, on JBoss Central view, select software update, select enable early access.


And select JBoss Fuse Development for the plugin,


Click on install, and we are all set to go!

First thing first, we want to create a Fuse project to deploy on the base of Fuse Integration Service, which is OpenShift. If you have not installed it, please go back to my previous post for instructions. So on your JBDS, right click and start creating the project. Select new, maven project, if you have installed the plugin correctly, you should …