Изучите спецификацию языка определения процесса Java , где JBoss имеет механизм выполнения для него . Использование этого движка на основе Java может быть вашим самым простым решением, и оно решает многие из перечисленных вами проблем.
Если вы намереваетесь написать свое собственное, вы, вероятно, в конечном итоге будете моделировать состояния и переходы, вершины и ребра в ориентированном графе. И это, как писал Кьяран Арчер, является компонентом State Machine . Лучший подход к сохранению IMO - захват версий всех данных, отправляемых через рабочий процесс через сериализацию, захват текущего состояния и историю переходов между состояниями и изменениями этих данных. Механизм, вероятно, нуждается в способе отслеживать, кто или что несет ответственность за принятие следующего действия против этого рабочего процесса.
Исходя из вашего вопроса, нужно учитывать одну вещь: действительно ли вам нужно представлять параллельные задачи в своем решении. Где вместо этого можно было бы поставить в очередь набор сообщений, а затем указать состояние ожидания для всех из них для завершения. Представление фактического параллелизма подразумевает, что вы перемещаете data одновременно через несколько различных процессов. В этом случае, когда они присоединяются снова, вам нужен алгоритм для разрешения дельт, что является весьма нетривиальной задачей.
В контексте ColdFusion и того, что вы пытаетесь выполнить, может потребоваться запланированное задание, если система, которую вы пишете, должна опрашивать другие системы. Рассмотрим WDDX как формат сериализации. JSON, хотя и соблазнительно прост, насколько я помню, имеет несколько крайних случаев с числами и датами, которые могут вызвать у вас горе.
Наконец, см. Мой ответ на этот вопрос для некоторых дополнительных мыслей .