!7 //import static x30_pkg.x30_util.getOpt_cache; //import static x30_pkg.x30_util.getOpt_cached; // no cmodule b/c of DynamicObject+getOpt module AnalyzeAppliedRules > DynSingleFunctionWithPrintLog { sclass ByRule { S ruleID; new LS statements; } Map ruleMap; void doIt { L concepts = cloneList((L) dm_requireAndCall("#1021413/AppliedRules", 'concepts)); print("Got " + n2(concepts, "concept")); ruleMap = new Map; for (O c : concepts) pcall { S judgement = getString judgement(c); S struct = getString matchedRuleStruct(c); O data = safeUnstruct(struct); // RuleEngine2_MatchedRule S ruleID = getString ruleID(data); print(judgement + " : " + shorten(40, struct)); Map varMap = cast getOpt_cached(data, 'map); //print(" Cached: " + getOpt_cache.get(_getClass(data))); //print(" fieldValues:" + keys(data/DynamicObject.fieldValues)); print(" Var-Map: " + varMap); print(" Rule-ID: " + ruleID); ByRule r = getOrCreate_f1(ruleMap, ruleID, func(S ruleID) -> S { nu ByRule(+ruleID) }); } pnlStruct(values(ruleMap)); } }