What are the differences between Spring integration and JBoss jBPM?
Thank you.
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).
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.
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.
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.
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 :)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With