using System.ComponentModel.DataAnnotations; namespace Yavsc.Models.Process { /// /// An abstract, identified rule /// public abstract class Rule { [Key] public string Id { get; set; } /// /// Left part for this class of rule, a conjonction. /// All of these requisitions must be true /// in order to begin any related process. /// /// public Conjonction Left { get; set; } /// /// Right part of this rule, a disjonction. /// That is, only one of these post requisitions /// has to be true in order for this rule /// to expose a success. /// /// public Disjonction Right { get; set; } public string Description { get; set; } public abstract TResult Execute(TInput inputData); } }