private static PrimaryRulePart ConvertPrimaryRulePart(PrimaryRulePart source, RuleInstance ruleInstance, Dictionary <object, object> convertingContext) { #if DEBUG //_gbcLogger.Info($"source = {source}"); #endif if (source == null) { return(null); } if (convertingContext.ContainsKey(source)) { return((PrimaryRulePart)convertingContext[source]); } var result = new PrimaryRulePart(); convertingContext[source] = result; FillBaseRulePart(source, result, ruleInstance, convertingContext); if (!source.SecondaryParts.IsNullOrEmpty()) { foreach (var secondaryPart in source.SecondaryParts) { result.SecondaryParts.Add(ConvertSecondaryRulePart(secondaryPart, ruleInstance, convertingContext)); } } #if DEBUG //_gbcLogger.Info($"result = {result}"); #endif return(result); }
public static string ToString(PrimaryRulePart primaryRulePart) { var sb = new StringBuilder(); sb.Append(" >: { "); sb.Append(ToString(primaryRulePart.Expression)); sb.Append(" }"); sb.Append(AnnotatedItemToString(primaryRulePart)); return(sb.ToString()); }
private RuleInstance CreateInheritanceFact(InheritanceItem inheritanceItem) { var factName = NameHelper.CreateRuleOrFactName(); #if DEBUG //Log($"factName = {factName}"); #endif var fact = new RuleInstance(); fact.Kind = KindOfRuleInstance.Fact; fact.AppendAnnotations(inheritanceItem); fact.Name = factName; //fact.KeysOfPrimaryRecords.Add(inheritanceItem.Id); var primaryPart = new PrimaryRulePart(); fact.PrimaryPart = primaryPart; primaryPart.Parent = fact; var isRelation = new LogicalQueryNode(); isRelation.Name = NameHelper.CreateName("is"); isRelation.Kind = KindOfLogicalQueryNode.Relation; isRelation.ParamsList = new List <LogicalQueryNode>(); primaryPart.Expression = isRelation; var subItemNode = new LogicalQueryNode(); isRelation.ParamsList.Add(subItemNode); subItemNode.Kind = KindOfLogicalQueryNode.Concept; subItemNode.Name = inheritanceItem.SubName; var superItemNode = new LogicalQueryNode(); isRelation.ParamsList.Add(superItemNode); superItemNode.Kind = KindOfLogicalQueryNode.Concept; superItemNode.Name = inheritanceItem.SuperName; var rankNode = new LogicalQueryNode(); isRelation.ParamsList.Add(rankNode); rankNode.Kind = KindOfLogicalQueryNode.Value; rankNode.Value = inheritanceItem.Rank; return(fact); }
/// <inheritdoc/> protected override void OnEnter() { Result = new PrimaryRulePart(); _baseRulePart = Result; }