Механизмы рабочих процессов на основе Java, такие как Activiti, Bonita или jBPM, поддерживают широкий спектр спецификации BPMN 2.0. Таким образом, вы можете моделировать процессы графическим способом. Кроме того, некоторые из этих движков имеют возможности моделирования, такие как Activiti (с Activiti Crystalball). Если вы кодируете процессы самостоятельно, вы не так гибки, когда вам нужно изменить процесс. Поэтому я бы также посоветовал использовать движок BPM на основе Java.
Я провел исследование движков с открытым исходным кодом на основе BPMN 2.0. Вот ключевые моменты, которые имели отношение к нашему конкретному варианту использования:
1. Бонита:
Bonita использует подход с нулевым кодированием, что означает, что они предоставляют простую в использовании IDE для построения ваших процессов без необходимости кодирования. Для этого у Bonita есть концепция соединителей. Например, если вы хотите использовать веб-службу, они предоставят вам графический мастер. Обратной стороной является то, что вам придется вручную написать простой XML-конверт SOAP и скопировать его в графическое текстовое поле. Проблема с этим подходом заключается в том, что вы можете реализовать только те варианты использования, которые предназначены Bonita. Если вы хотите интегрировать систему, для которой Bonita не разработала коннектор, вам придется самостоятельно запрограммировать такой коннектор, что очень болезненно. Например, Bonita предлагает соединитель SOAP для использования веб-служб SOAP. Этот соединитель работает только с SOAP 1.2, но не с SOAP 1.1 (http://community.bonitasoft.com/answers/consume-soap-11-webservices-bonita-secure-web-service-connector). Если у вас есть устаревшее приложение с SOAP 1.1, вы не сможете легко интегрировать эту систему в свой процесс. То же самое и с базами данных. Для выделенных версий баз данных существует всего несколько коннекторов баз данных. Если у вас есть версия, не соответствующая коннектору, вам придется самостоятельно ее запрограммировать.
Кроме того, Bonita не поддерживает LDAP или Active Directory Sync в бесплатной версии сообщества, что является серьезным препятствием для производственной среды. Еще одна вещь, которую следует учитывать, заключается в том, что Bonita лицензируется по лицензии GPL / LGPL, что может вызвать проблемы, если вы захотите интегрировать Bonita в другое корпоративное приложение. К тому же поддержка сообщества очень слабая. Есть несколько сообщений, которым больше двух лет, и на них до сих пор нет ответов.
Еще одна важная вещь - это бизнес-IT-согласование. Процессы моделирования - это совместная дисциплина, в которую вовлечены ИТ И бизнес-аналитики. Вот почему вам нужны адекватные инструменты для обеих групп пользователей (например, плагин Eclipse для разработчиков и простой в использовании веб-моделлер для деловых людей). Bonita предлагает только Bonita Studio, которую необходимо установить на вашем компьютере. Эта IDE довольно техническая и не подходит для бизнес-пользователей. Поэтому очень сложно реализовать бизнес-IT-согласование с Bonita.
Bonita - это инструмент BPM для очень простых и простых процессов. Из-за подхода с нулевым кодированием кривая обучения очень низкая, и вы можете очень быстро начать моделирование. Вам потребуется меньше навыков программирования, и вы сможете реализовать свои процессы без необходимости кодирования. Но как только ваши процессы станут очень сложными, Bonita может оказаться не лучшим решением из-за отсутствия гибкости. Вы можете реализовать только те варианты использования, которые предназначены Bonita.
2. jBPM:
jBPM - очень мощный движок BPM с открытым исходным кодом, который имеет множество функций. Средство веб-моделирования даже поддерживает готовые модели некоторых шаблонов рабочего процесса Ван дер Аалста (workflowpatterns.com). Business-IT-Alignment реализуем, потому что jBPM предлагает интеграцию с Eclipse, а также веб-модельер. Немного сложнее то, что, насколько мне известно, формы можно определять только в веб-моделере, но не в подключаемом модуле Eclipse. Подводя итог, jBPM - хороший кандидат для использования в компании. Нашим конкурентом была масштабируемость. jBPM основан на Drools механизма правил. Это приводит к тому, что экземпляры всего процесса сохраняются в базе данных как BLOB-объекты. Это критический момент, когда вы рассматриваете поиск и масштабируемость.
Кроме того, кривая обучения очень высока из-за сложности. jBPM не предлагает служебных задач, как предлагает BPMN-Standard. Напротив, вы должны определить свои собственные служебные задачи Java и зарегистрировать их вручную в движке, что приводит к программированию на довольно низком уровне.
3. Activiti:
В конце концов, мы выбрали Activiti, потому что это очень простой в использовании движок на основе фреймворка. Он предлагает подключаемый модуль Eclipse, а также современный веб-моделлер AngularJS. Таким образом, вы можете реализовать согласование между бизнесом и ИТ. REST-API защищен Spring Security, что означает, что вы можете очень легко расширить Engine с помощью функций единого входа. Благодаря лицензии Apache License 2.0 авторское лево отсутствует, что означает, что вы полностью свободны в использовании и расширяемости, что очень важно в продуктивной среде.
К тому же BPMN-покрытие очень хорошее. Не все элементы BPMN реализованы, но я не знаю ни одного движка, который бы это делал.
Activiti Explorer - это демонстрационный интерфейс, демонстрирующий использование API Activiti. Поскольку этот интерфейс основан на VAADIN, его можно очень легко расширить. Сообщество очень активное, а это значит, что вы можете очень быстро получить помощь, если у вас возникнут какие-либо проблемы.
Activiti предлагает хорошие точки интеграции для внешних форм-технологий, что очень важно для продуктивного использования. Форм-технологии всех кандидатов очень ограниченны. Следовательно, имеет смысл использовать стандартную технологию форм, такую как XForms, в сочетании с Engine. Даже такие более сложные вещи можно реализовать с помощью атрибута formKey-Attribute.
Activiti не следует подходу с нулевым кодированием, что означает, что вам понадобится немного кода, если вы хотите организовать службы. Но даже связь со службами SOAP может быть достигнута с помощью Java Service Task и Apache CXF. Усилия по кодированию невелики.
Я надеюсь, что мои ключевые моменты помогут принять решение. Чтобы было ясно, это не реклама Activiti. Правильный выбор продукта зависит от конкретных вариантов использования. Отмечу только самые важные моменты в нашем проекте.
person
Ben
schedule
14.09.2015