public static List <ConsumedDefInfo> GetConsumedFields(this InRule.Repository.RuleApplicationDef ruleAppDef) { var consumedList = new List <ConsumedDefInfo>(); var network = DefUsageNetwork.Create(ruleAppDef); foreach (var entityDef in ruleAppDef.Entities.OfType <EntityDef>()) { foreach (var fieldDef in entityDef.Fields.OfType <FieldDef>()) { var usages = network.GetDefUsages(fieldDef.Guid, false); foreach (var usage in usages) { if (usage.UsageType == DefUsageType.ConsumedBy) { var defInfo = consumedList.FirstOrDefault(x => x.TargetDef == fieldDef); if (defInfo == null) { defInfo = new ConsumedDefInfo(); defInfo.TargetDef = fieldDef; consumedList.Add(defInfo); } var relatedDef = usage.Element.GetDef(ruleAppDef); defInfo.ConsumedBy.Add(relatedDef); } } } } return(consumedList); }
public static string GetDefUsageSummary(this InRule.Repository.RuleApplicationDef ruleAppDef) { var sb = new StringBuilder(); sb.AppendLine($"----- Field Usage Summary -----"); sb.AppendLine(); sb.AppendLine(BuildFieldList($"UNUSED FIELDS", "(Unused)", ruleAppDef.GetUnusedFields())); sb.AppendLine(); sb.AppendLine(BuildFieldList($"CONSUMED FIELDS", "(Consumed)", ruleAppDef.GetConsumedFields().Select(t => t.TargetDef).ToList())); sb.AppendLine(); sb.AppendLine(BuildFieldList($"UPDATED FIELDS", "(Updated)", ruleAppDef.GetUpdatedFields().Select(t => t.TargetDef).ToList())); return(sb.ToString()); }
public static List <UpdatedDefInfo> GetUpdatedFields(this InRule.Repository.RuleApplicationDef ruleAppDef) { var updatedList = new List <UpdatedDefInfo>(); var network = DefUsageNetwork.Create(ruleAppDef); foreach (var entityDef in ruleAppDef.Entities.OfType <EntityDef>()) { foreach (var fieldDef in entityDef.Fields.OfType <FieldDef>()) { if (fieldDef.IsCalculated) { if (!updatedList.Any(x => x.TargetDef == fieldDef)) { var defInfo = new UpdatedDefInfo(); defInfo.TargetDef = fieldDef; defInfo.IsCalculation = true; updatedList.Add(defInfo); } } else { var usages = network.GetDefUsages(fieldDef.Guid, false); foreach (var usage in usages) { if (usage.UsageType == DefUsageType.UpdatedBy) { UpdatedDefInfo defInfo = updatedList.FirstOrDefault(x => x.TargetDef == fieldDef); if (defInfo == null) { defInfo = new UpdatedDefInfo(); defInfo.TargetDef = fieldDef; updatedList.Add(defInfo); } var relatedDef = usage.Element.GetDef(ruleAppDef); defInfo.UpdatedBy.Add(relatedDef); } } } } } return(updatedList); }