BPM Engine против BPM Engine Server
Я провожу некоторые исследования концепции рабочего процесса и, в частности, стандарта BPMN. И меня больше всего интересует доступное программное обеспечение по этому вопросу.
Я уже изучал такие программы, как Activiti и jBPM, которые реализованы на Java. Как бы они ни были хороши, я ищу что-то еще. Хотя такие программы называют себя BPM Engine
Я бы предпочел назвать их BPM Engine Servers
, Это автономные серверы (с веб-интерфейсом), что затрудняет их внедрение на других серверах.
Теперь мой вопрос: есть ли концепция как BPM Engine
таким образом, он только выполняет данный BPM с данными данными, только один шаг? Без какого-либо графического интерфейса или прямого взаимодействия с пользователем (что-то вроде библиотеки)? Что я должен искать? Как это называется? Мои ожидания верны?
[ОБНОВИТЬ]
Я провел последние часы, изучая руководство пользователя Activiti. Я все еще не уверен, смогу ли я использовать это так, как я хочу! И я буду благодарен, если кто-то может это подтвердить.
Меня интересует консольное приложение, которое я могу запускать в любое время, отдавая ему ранее запущенный процесс (скорее всего, сериализованный в виде строки). Двигатель должен построить процесс, основанный на данной истории.
После того, как процесс реконструирован, я хотел бы продвинуть его на один шаг вперед, рассказав, что произошло. Затем он должен сообщить мне о следующих задачах, которые необходимо выполнить, и о завершении работы.
Наконец, я буду хранить обновленный процесс после получения его в виде строки (движок должен сериализовать его таким образом, чтобы впоследствии он мог его не сериализовать).
Я не хочу, чтобы у движка была своя собственная база данных или память. Я хочу, чтобы он полностью отключился, как только это будет сделано. Это то, что я имею в виду Engine
, нет взаимодействия с пользователем, нет доступа к хранилищу.
Может ли какой-либо из двигателей BPM работать таким образом?
2 ответа
Возможно, мне не хватает вашей точки зрения, но Activiti - это не более чем jar-файл, который можно встроить в любое другое java-приложение. Конечно, для запуска Activiti любым осмысленным способом вам необходимо резервное хранилище данных (база данных) и одно или несколько определений процесса, но, как вы можете видеть из модульных тестов, которые являются частью Activiti, база данных может находиться в памяти и в определении процесса может быть включен в войну. Существует много примеров использования Activiti (и, вероятно, jBPM) в качестве просто встроенного конечного автомата без открытого пользовательского интерфейса или взаимодействия с пользователем. Моя компания внедрила ряд таких решений для разных организаций. Если я пропустил вашу мысль, не стесняйтесь привести мне пример вашего требования, я уверен, что мы рассмотрели его в тот или иной момент.
Я думаю, что сложность того, что вы хотите сделать, состоит в том, что большинство механизмов BPM отделяют определение процесса от его выполнения. Поэтому для большинства из них вам нужно место, которое позволит вам хранить определение в течение длительного времени (обычно это база данных), а затем они отслеживают состояние данного экземпляра этого определения для вас.
Если вам нужен действительно механизм "интерпретации" BPMN без сохранения состояния, тогда ваши сериализованные данные должны будут включать не только текущее состояние процесса, но и его определение. Я уверен, что это можно сделать, но я не думаю, что какой-либо из движков использовал этот подход, поскольку это усложнило бы решение и решило проблему, о которой, похоже, не многие люди спрашивают.
Кроме того, возникает вопрос: "Учитывая, что теперь у нас есть процесс, который знает, над какой задачей он работает, как эта задача на самом деле выполняется?" В большинстве решений, которые я видел, выполнение задачи происходит на том же сервере, что и движок. В некоторых случаях, когда выполнение выполняется с использованием другой технологии, "исполнитель" вообще не понимает процесс, за исключением того, что он делает вызов, чтобы подать сигнал "хорошо, это сделано", и движок обрабатывает то, что происходит дальше. Вы хотите, чтобы эти данные были в какой-то структуре сериализованных данных, поэтому возникнет вопрос: "Если бы у нас был этот механизм BPMN без сохранения состояния, должен ли исполнитель задачи обновить сериализованные данные, чтобы указать изменение состояния для задачи".
Есть и другие требования спецификации BPMN, которые, я думаю, очень усложнят ваш подход, например, как обрабатывать такие элементы, как события промежуточного сообщения, которые либо ожидают определенного времени, либо сообщения, прежде чем продвигать процесс вперед. Хотя все эти проблемы потенциально разрешимы, это, безусловно, потребует значительного изменения существующих подходов.
Вы можете быть заинтересованы в Bonita BPM. Это BPM-решение с открытым исходным кодом предлагает механизм выполнения, который можно использовать как самостоятельный. Как и его конкуренты, он также предлагает дополнительный графический интерфейс в виде веб-приложения: Bonita Portal.