Есть задача интегрировать в имеющуюся систему дополнительную подсистему а-ля Workflow engine.
Поиск гуглом дает сразу тучу готовых решений:
http://java-source.net/open-source/workflow-engines .
Даже если отбросить те, которые не подходят по условиям лицензии либо давно заброшены, то все равно остается значительно количество этих решений.
В целом, хочется иметь систему с примерно следующими параметрами (написАть с нуля под себя — не вопрос, но менеджмент желает по возможности реюзнуть имеющееся, что вполне понятно):
1.) каждый process (он же workflow) состоит из состояний и переходов
2.) каждое состояние (оно же действие) описывается неким java классом-реализацией какого-нибудь IWorkflowAction
3.) каждое правило перехода (выбор к какому состоянию идти из конкретной точки графа) описывается неким java классом-реализацией какого-нибудь IWorkflowRule
4.) дополнительно процесс описывается некой матрицей/графом элементов (собственно, состояния + правила, скрепленные стрелками, т.е. структура процесса)
5.) workflow в общем случае — это не просто набор строк кода, которые что-то делают, а комбинирование non-UI действий с опросом пользователя через UI (т.е. нужно на неком шаге что-то получить от юзера — его на форму отправляем, по сабмиту продолжаем выполнение workflow)
Вопрос — может быть какие-то из имеющихся решений похожи по дизайну на описанные выше критерии? кто знакомился с ними и в курсе?
Здравствуйте, ika, Вы писали:
ika>Есть задача интегрировать в имеющуюся систему дополнительную подсистему а-ля Workflow engine.
ika>Поиск гуглом дает сразу тучу готовых решений: http://java-source.net/open-source/workflow-engines .
ika>Даже если отбросить те, которые не подходят по условиям лицензии либо давно заброшены, то все равно остается значительно количество этих решений.
ika>В целом, хочется иметь систему с примерно следующими параметрами (написАть с нуля под себя — не вопрос, но менеджмент желает по возможности реюзнуть имеющееся, что вполне понятно):
ika>1.) каждый process (он же workflow) состоит из состояний и переходов
ika>2.) каждое состояние (оно же действие) описывается неким java классом-реализацией какого-нибудь IWorkflowAction
ika>3.) каждое правило перехода (выбор к какому состоянию идти из конкретной точки графа) описывается неким java классом-реализацией какого-нибудь IWorkflowRule
ika>4.) дополнительно процесс описывается некой матрицей/графом элементов (собственно, состояния + правила, скрепленные стрелками, т.е. структура процесса)
ika>5.) workflow в общем случае — это не просто набор строк кода, которые что-то делают, а комбинирование non-UI действий с опросом пользователя через UI (т.е. нужно на неком шаге что-то получить от юзера — его на форму отправляем, по сабмиту продолжаем выполнение workflow)
ika>Вопрос — может быть какие-то из имеющихся решений похожи по дизайну на описанные выше критерии? кто знакомился с ними и в курсе?
OpenSymphony OSWorkflow
Понравилось, что используется в основе лежит простая и понятная концепция, но там реализованы только базовые вещи,
генерацию GUI придется делать самим.
ika>1.) каждый process (он же workflow) состоит из состояний и переходов
+
ika>2.) каждое состояние (оно же действие) описывается неким java классом-реализацией какого-нибудь IWorkflowAction
Когцепция такая: состояние это не действие, дейтвие это переход (transition) межде состояниями
ika>3.) каждое правило перехода (выбор к какому состоянию идти из конкретной точки графа) описывается неким java классом-реализацией какого-нибудь IWorkflowRule
Каждому переходу можно назначить набор условий
ika>4.) дополнительно процесс описывается некой матрицей/графом элементов (собственно, состояния + правила, скрепленные стрелками, т.е. структура процесса)
Описание в xml, набор состояний(steps), переходов(actions), расщипления (splits начало параллельные ветвей), соединения (joins соединения ветвей).
Можно реализовать свое хранилище описаний.
ika>5.) workflow в общем случае — это не просто набор строк кода, которые что-то делают, а комбинирование non-UI действий с опросом пользователя через UI (т.е. нужно на неком шаге что-то получить от юзера — его на форму отправляем, по сабмиту продолжаем выполнение workflow)
+
PS используется в
JIRA.
Здравствуйте, ika, Вы писали:
ika>Есть задача интегрировать в имеющуюся систему дополнительную подсистему а-ля Workflow engine.
ika>Поиск гуглом дает сразу тучу готовых решений: http://java-source.net/open-source/workflow-engines
...
ika>Вопрос — может быть какие-то из имеющихся решений похожи по дизайну на описанные выше критерии? кто знакомился с ними и в курсе?
Я немного начал заниматься, и пока еще нахожусь в процессе. Т.е. не основная задача — просто самому интересно. Но немного не в сфере WF а в сфере систем управления бизнес процессами — BPMS. Есть достойные OpenSource решения и конечно же они на J2EE.
Советую обратить внимание
— jBPM — реализация от JBoss
— Runa WFE — базируется на предыдущей русская разработка
— Intalio BPMS — вчера вышел на нее с Eclipse.org
Также рекомендую почитать статьи на сайте Runa — станет понятно какие есть языки и реализации, в чем отличия ограничения. Будет легче выбрать. Т.е. ситуция сегодня такая что есть как бы два вида систем — Workflow и BPMS, BPMS включают в себя Workflow. Но грани постепенно стираются между типами систем — добавляют недостающее.
Есть стандартный язык моделирования бизнес-процессов BPMN — принят в качестве стандартра OMG в 2006, позиционируется как "над UML". Есть язык исполнения бизнес процессов BPEL4WS — направлен на межсистемную интеграцию на веб-сервисах. Разрабатывается BPEL4People — но пока без особой динамики. Поэтому, например, один из авторов RUNA Андрей Михеев, выбрал jBPM, отмечая сложность спецификации BPEL.
Да хочу добавить что BPM-системы готовы к быстрому старту. Т.е. есть моделер процессов — нарисовал, развернул и запустил — все работает с пол-пинка.
Может чео упустил — посмотрите у меня в блоге