это дополнительный вопрос для моего предыдущего вопроса какой шаблон проектирования подходит для этого требования рабочего процесса? . Я хотел бы знать, каков наилучший способ сохранить логическое выражение в базе данных, а затем оценить его во время выполнения без особых усилий. У меня есть требование, когда набор заданий нужно выполнять с экрана каждый конец месяца, и решение о том, можно ли выполнить задание, зависит от результатов предыдущих заданий. поэтому я должен быть в состоянии сохранить выражение в базе данных что-то вроде E = (A или B) и (C или D) (может быть любое сложное вложенное выражение). это означает, что E может работать, если A или B успешны, а C или D успешны. как это может быть представлено в базе данных и проанализировано, и условие будет оценено позже?
думает сделать это так (еще не проверено)
если "Работа E = (A и B) или (C и D)". сохранить его в виде древовидной структуры в таблице
JobId DependentJobId SuccessJobId FailureJobId
E A B C
E C D 0
E D 1 0
E B 1 0
это означает, что «если A успешен, проверьте B, иначе проверьте C», «если C успешен, проверьте D». процесс начинается с самого высокого узла, у которого нет «DependentJobId», и останавливается на конечном узле. Я использую фиктивные идентификаторы заданий "1" для успеха и "0" для неудачи. если конечный узел равен нулю, то задание разрешается запускать. не уверен, как лучше я могу оценить это в T-SQL. Возможно, мне придется использовать рекурсивную функцию.
Используемая технология: ASP.NET 3.5, C # 3.0, SQL Server 2008
.