Каковы различия между интеграцией Spring и JBoss jBPM? - PullRequest
8 голосов
/ 06 декабря 2009

Чем отличаются интеграция Spring и JBoss jBPM?

Спасибо.

Ответы [ 3 ]

7 голосов
/ 07 марта 2011

кстати, этот ответ стал более интересным. теперь есть Activiti - движок BPMN с открытым исходным кодом, лицензированный Apache (рабочий процесс, такой же, как jBPM), созданный людьми, создавшими jBPM, но с тех пор оставленными.

Таким образом, вы можете использовать Activiti для поддержки сценариев рабочих процессов, в которых вам нужно управлять состоянием, и вы можете позволить себе создавать потоки в системе рабочих процессов для управления этим состоянием. Итак, Activiti обеспечивает сильную оркестровку.

Spring Integration - это интегрированная среда - ее можно использовать для вывода состояния из событий, которые не обязательно связаны друг с другом. Обычно это делается путем передачи метаданных - таких как заголовки - чтобы обеспечить «иллюзию», что все шаги являются частью одного и того же процесса. Becauee Spring Integration может подключаться к множеству различных систем и работать с точки зрения их API, что также идеально подходит для интеграции различных систем. Spring Integration позволяет вам реагировать и навязывать потоки сообщений, хотя я бы не назвал эту оркестровку таким же образом, как Activiti.

Spring Integration и Activiti могут выполнять последовательности, совпадения, разделители / разветвления, агрегаторы / объединения и т. Д. Activiti может управлять людьми, Spring Integration может адаптировать любую систему. Таким образом, у каждого из них есть свои роли и, честно говоря, они довольно хорошо работают вместе. В изолированной программной среде есть адаптер Activiti для Spring Integration, который позволяет запускать процесс Activiti, который, в свою очередь, может делегироваться Spring Integration для обработки бизнес-логики на разных этапах. Перейдя в Spring Integration, вы можете сделать все, что захотите, используя Spring и Spring Integration, а затем отправить ответное сообщение обратно на шлюз Activiti, сообщая, что процесс activiti может быть возобновлен.

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

Полное раскрытие: я являюсь коммиттером в проектах Activiti и Spring Integration, и я являюсь основным автором в момент поддержки SPring Integration Activiti.

5 голосов
/ 09 декабря 2009

Это правильный вопрос, поскольку в нем слишком много товаров и модных слов.

Проще говоря, рассматривайте jBPM как фреймворк / движок рабочего процесса - вы определяете «последовательность событий», которая также называется бизнес-процессом (следовательно, BPM - B usiness P rocess M anagement) и jBPM заставляют ваши данные следовать этой последовательности / процессу.

Принимая во внимание, что Spring Integration является управляемой событиями средой, основанной на нескольких строительных блоках: Message, Source, Target, Channel, Filter и т. Д. Чтобы понять это, лучше взглянуть на: « Spring Integration за 10 минут ». Следует простой

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

шаблон, который позволяет творить чудеса. Источникам и / или целям будет назначено для именованных каналов, а фильтры могут варьироваться от простого преобразователя / транслятора до маршрутизатора, который читает заголовок сообщения и решает, к какому каналу направить сообщение. Конечно, есть все возможности Spring Remoting (JMS, Webservice, RMI и т. Д.), Которые доступны в Spring Integration через шаблоны (JmsTemplate, WebserviceTemplate и т. Д.) И адаптеры, которые обеспечивают интеграцию с внешними системами с FTP, RMI , HttpInvoker, JMS, веб-сервисы и т. Д.

Конечно, вы можете построить решение рабочего процесса , используя Spring Integration, но для этого есть Drools Flow - не нужно заново изобретать механизм рабочего процесса:)

4 голосов
/ 06 декабря 2009

Spring Integration - это расширение среды Spring для поддержки корпоративной интеграции на основе известных шаблонов корпоративной интеграции . Spring Integation - это яблоко.

JBoss jBPM - это механизм рабочих процессов, написанный на Java, который может выполнять процессы, описанные в BPEL (или свой собственный язык определения процессов jPDL). JBoss jBPM - оранжевый.

Оба являются фруктами.

...