public WonkaBreRulesEngine(StringBuilder psRules, Dictionary <string, WonkaBreSource> poSourceMap, Dictionary <string, WonkaBreSource> poCustomOpBlockchainSources, IMetadataRetrievable piMetadataSource = null, bool pbAddToRegistry = true) { if ((psRules == null) || (psRules.Length <= 0)) { throw new WonkaBreException("ERROR! Provided rules are null or empty!"); } UsingOrchestrationMode = true; AddToRegistry = pbAddToRegistry; RefEnvHandle = Init(piMetadataSource); WonkaBreXmlReader BreXmlReader = new WonkaBreXmlReader(psRules, piMetadataSource, this); foreach (string sKey in poCustomOpBlockchainSources.Keys) { WonkaBreSource oTargetSource = poCustomOpBlockchainSources[sKey]; BreXmlReader.AddCustomOperator(sKey, oTargetSource); } RuleTreeRoot = BreXmlReader.ParseRuleTree(); SourceMap = poSourceMap; CustomOpMap = poCustomOpBlockchainSources; AllRuleSets = BreXmlReader.AllParsedRuleSets; this.RetrieveCurrRecord = AssembleCurrentProduct; }