Ejemplo n.º 1
0
        private KnowledgeBuilder CreateKnowledgeBuilder(List <IRule> rules, TheiaClassLoader classLoader)
        {
            //Create configuration
            KnowledgeBuilderConfiguration kBuilderConfiguration = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration(null, classLoader);
            //Create knowledgeBuilder
            KnowledgeBuilder kBuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(kBuilderConfiguration);

            foreach (var rule in rules)
            {
                //Create my resource
                Resource myResource = ResourceFactory.newReaderResource(new java.io.StringReader(rule.Source));

                //Add resource to KnowledgeBuilder
                kBuilder.add(myResource, ResourceType.DRL);
                var ruleErrors = kBuilder.getErrors();

                if (ruleErrors.size() > 0)
                {
                    throw new TheiaException(
                              $"The rule contains an error and can not be compiled: {System.Environment.NewLine}{ruleErrors}");
                }
            }

            return(kBuilder);
        }