Под "оркестровкой" я предполагаю, что вы имеете в виду конечный автомат .Где текущее состояние диктует, какие переходы могут быть выполнены в другие состояния.Представление состояний и переходов в виде ребер и вершин часто приводит к направленному ациклическому графу , однако бывают циклы (например, черновик - отправить на утверждение -> в ожидании утверждения - отклонить -> Черновик).
На практике, отделяя определение от вызовов выполнения для постоянного формата, который может легко приспособить настройку.По мере развития вашей системы вы обнаружите ряд непредвиденных крайних случаев, решение которых не должно требовать изменения схемы постоянства, а только кода.Это подразумевает XML или решение NoSQL - то, чья схема легко изменяется или не существует.
Теперь, написав собственное определение XML для этой цели (по неинтересным причинам, я исключу), я предлагаю использовать JPDL (или BPMN).Причина в том, что их определения, скорее всего, включают в себя все, что вы рассматриваете сейчас, будете в будущем и включите настройку - например, вывешивание произвольных данных или поведения на них в заданной точке.Вы также получаете преимущество уже созданных инструментов - не только пользовательского интерфейса - для работы с обнаружением цикла и обеспечения, например, пути к завершению.
Некоторые интересные функции, которыми я владею в JPDL, - это способность помочьобъединить разветвленные процессы, синхронизированные задачи (в том числе периодически повторяющиеся) и средства для отправки уведомлений.Этот последний пункт - уведомление - имеет некоторое дальнейшее изложение.Одна из вещей, которые я обнаружил в своей собственной системе, - это необходимость отправки настраиваемой электронной почты, содержимое которой основано на данных, проходящих через нее.Эти существующие механизмы делают это относительно легко, предоставляя способ вставлять переменные, например, в текст, который затем динамически оценивается во время выполнения перед передачей.Кроме того, они обеспечивают мосты между механизмом и любым хранилищем пользователей с целью отправки уведомлений группам людей, выполнения их задач и обеспечения соблюдения политики безопасности.
Наконец, в зависимости от области применения вашей системы, вы, вероятно, все еще будете использовать базу данных.То, что я предлагаю, - это сохранение XML и данных, которые оркестрируются в базу данных в сериализованном формате.Затем, если данные изменяются во время их выполнения, запишите сериализацию данных - и, возможно, рабочий процесс, если он также изменился, - в таблицу журнала / аудита.