Sunday, January 5, 2014

What are the differences between Spring integration and JBoss jBPM?
Thank you.
share|improve this question
1 
Have you done any research yourself? If so, please ask a more specific question. If not, go and do some. – skaffman Dec 6 '09 at 12:42
1 
i think if i found answer i will not ask the Question! –  bassem Dec 6 '09 at 12:57
1 
Fair enough, but give some indication of what you've already learned, don't just drop a one-line question and expect a good answer. –  skaffman Dec 6 '09 at 12:58
add comment

3 Answers

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 :)
share|improve this answer
add comment
Spring Integration is an extension of the Spring framework to support enterprise integration based on the well-known Enterprise Integration Patterns. Spring Integation is an apple.
JBoss jBPM is a workflow engine written in Java that can execute processes described in BPEL (or its own process definition language jPDL). JBoss jBPM is an orange.
Both are fruits.
share|improve this answer
add comment
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.
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.
share|improve this answer
add comment