Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What are the differences between Spring integration and JBoss jBPM?

What are the differences between Spring integration and JBoss jBPM?

Thank you.

like image 565
bassem Avatar asked Dec 06 '09 09:12

bassem


People also ask

What is Spring Integration used for?

In addition to wiring together fine-grained components, Spring Integration provides a wide selection of channel adapters and gateways to communicate with external systems. Channel Adapters are used for one-way integration (send or receive); gateways are used for request/reply scenarios (inbound or outbound).

Why do we need jBPM?

jBPM is a flexible Business Process Management (BPM) Suite. It is light-weight, fully open-source (distributed under Apache License 2.0) and written in Java. It allows you to model, execute, and monitor business processes and cases throughout their life cycle.

How does jBPM work?

It allows us to create a business process flow, execute it, and monitor its life cycle. The core of jBPM is a workflow engine, written in Java, that provides us with a tool to create and execute a process flow using the latest Business Process Modeling Notation (BPMN) 2.0 specifications.


2 Answers

btw, this answer has since become more interesting. now, there is Activiti - which is an open-source Apache liceneded BPMN engine (workflow, just like jBPM) that is created by the people who created jBPM, but since left.

So, you can use Activiti to support workflow scenarios where yuo need to manage state and can afford to thread in a workflow system to manage that state. So, Activiti provides strong orchestration.

Spring Integration is an integration framework - it can be used to infer state from events that aren't necessarily related to each other. This is usually done by passing along metadata - like headers - to tell provide the "illusion" that the steps are all part of the same process. Becauee Spring Integration can connect to lots of different systems and work in terms of their APIs, its ideal for integrating different systems as well. Spring Integration lets you react and impose messaging flows, though I wouldn't call this orchestration in the same way as Activiti.

Spring Integration and Activiti can both do sequences, concurrences, spliters/forks, aggregators/joins, etc. Activiti can manage human beings, Spring Integration can adapt any system. So, they each have their roles and - frankly- they work quite well together. There is a Spring Integration Activiti adapter in the sandbox that lets you run an Activiti process that in turn can delegate to Spring Integration to handle business logic at different steps. Once you're in Spring Integration, you can do everything you'd want using Spring and Spring Integration, and then send a reply message back to the Activiti gateway telling it that the activiti process may be resumed.

http://git.springsource.org/spring-integration/sandbox

Full Disclosure: I'm a commiter on both the Activiti and Spring Integration projects, and I am the main author at the moment of the SPring Integration Activiti support.

like image 74
Josh Long Avatar answered Oct 21 '22 08:10

Josh Long


It is a valid question, since there are too many products and buzz words.

In simple terms, think of jBPM as a workflow framewrok / engine - you define a "sequence of events", that also called a business process (hence BPM - Business Process Management), and jBPM make your data follow that sequence/process.

Whereas Spring Integration is an Event Driven framework based on several building blocks: Message, Source, Target, Channel, Filter, etc. To understand it better take a look at: "Spring Integration in 10 minutes". It follows a simple

Source [send message] ---> CHANNEL --> FILTER --> CHANNEL --> Target [receive message]

pattern, which allows you to create wonders. Sources or/and targets would be assigned to named channels, and filters may range from being a simple transformer / translator to the router, that reads the message header and decides what channel to route the message to. Of course there is all power of Spring Remoting (JMS, Webservice, RMI, etc..) which is available in Spring Integration via templates (JmsTemplate, WebserviceTemplate, etc..) and adapters that allow the integration with external systems with FTP, RMI, HttpInvoker, JMS, Web Services etc.

You can of course build a workflow solution using Spring Integration, but there is Drools Flow for that - no need to reinvent a workflow engine :)

like image 37
tolitius Avatar answered Oct 21 '22 08:10

tolitius