Как создать сценарии sql для развертывания определения процесса в jBPM? - PullRequest
3 голосов
/ 05 ноября 2008

Я смотрю на интеграцию jBPM с моим текущим проектом, пока все хорошо, просто включив jar jpdl в мое ухо и используя модуль подпружиненных модулей 0.8 jbpm, однако у меня должен быть разумный путь от моего изменения в определении процесса в конструкторе для развертывания в производстве.

Путь должен быть повторяемым во многих средах (dev, много тестов, промежуточная и последующая обработка) и в идеале должен выполняться, когда сама система не работает.

В идеале я бы упаковал все определение в виде сценария SQL, однако я не видел ни одного инструмента для перевода из processdefinition.xml в sql, и сборка всего этого вручную кажется слишком сложной и подверженной ошибкам.

У кого-нибудь еще был здесь опыт?

Система работает на Websphere 6.1, и я предпочитаю избегать выполнения Java-кода во время миграции (хотя выполнение Java-кода для генерации артефактов, которые затем можно использовать во время миграции),

Ответы [ 3 ]

1 голос
/ 13 ноября 2008

Если вы не хотите идти по маршруту .par, легко написать простой код Java для развертывания новой версии определения процесса в вашей базе данных. Что-то вроде

JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance("jbpm.cfg.xml"));
ProcessDefinition processDefinition = ProcessDefinition.parseXmlInputStream(newPdStream);
JbpmContext context = jbpmConfiguration.createJbpmContext();
context.getGraphSession().deployProcessDefinition(processDefinition);

Вам понадобится hibernate.properties или hibernate.cfg.xml для соответствующей базы данных на пути к классам.

Что хорошего в этом способе, так это то, что все управление версиями выполняется для вас автоматически. Мы использовали хак, когда изменяли определение процесса (в основном игнорируя управление версиями), но это был большой беспорядок для экземпляров процесса, которые были активны в то время.

1 голос
/ 02 декабря 2008

Обходной путь предложения: развернуть и перехватить SQL-запросы

Я не пробовал этого, но я бы предложил использовать развертывание сервлета развертывания консоли jBPM или

context.getGraphSession().deployProcessDefinition(processDefinition);

в соответствии с предложением shyamsundar

И

протоколировать обновления sql с помощью LogDriver: http://rkbloom.net/logdriver/logdriver.tar.gz

0 голосов
/ 05 ноября 2008

Почему бы не использовать расширения задач муравья, специально предоставленные JBPM DeployProcessTask. Вы можете развертывать в разных средах, имея только один файл .par и соответствующий jbpm-cfg.xml для различных сред dev / test / staging / prod. Единственное изменение, которое вам, возможно, придется сделать, - настроить конфигурацию Hibernate для прямого подключения к базе данных вместо использования источника данных.

...