У меня есть требование, при котором у меня есть набор заданий, которые должны выполняться с экрана (выполнение каждого задания может занять несколько часов), и мне нужно установить некоторые правила для выполнения этих заданий.это может быть представлено с помощью графика.
- каждому заданию присваивается порядковый номер, и задания должны выполняться в последовательности
- , однако существует ряд заданий, которые можно запускать в любом порядке.и у каждого из них может быть свой путь.например, когда A и B завершены, D, E, F можно запустить в любом порядке, но может быть правило, что G может работать только после того, как D готов, H может работать только после того, как E сделал что-то подобное.
- некоторые задания могут быть запущены, если успешно выполнено одно из предыдущих параллельных заданий.если заданиями являются A, B, C, D и A, B, C можно запускать в любом порядке, а D можно запускать только при завершении A, B или C.
- некоторые задания могут быть запущены, только если все предыдущие параллельные задания завершены.в приведенном выше примере, например, может существовать правило, такое как D, если A и B и C завершены
- есть несколько контрольных точек, что означает, что после завершения задания контрольной точки ни одна из предыдущих не может быть выполнена повторно, включаязадание контрольной точки.
каким-то образом мне нужно иметь возможность выразить условие для задания, которое можно оценить во время выполнения.что-то вроде E = (A и B) OR (C и D);это означает, что задание E может выполняться, если A и B успешны, ИЛИ C и D. успешны.
, который в значительной степени суммирует различные типы правил, и мой вопрос: есть ли шаблон проектирования, который я могу использовать для реализации?В идеале я хотел бы сохранить этот рабочий процесс в базе данных и проверить, разрешено ли выполнение задания на основе этого.рабочий процесс Windows может быть излишним для этого, и я ищу более простое решение, которое может быть не лучшим, но требует меньше времени.
технология, которая будет использоваться: ASP.NET 3.5, C # 3.0, SQL Server 2008