Как загрузить правило слюни внешне - PullRequest
0 голосов
/ 06 июля 2019

У меня есть файл drl и файл .class в папке. drl содержит правило, основанное на атрибутах класса. Теперь через Java-программу я хочу вызвать это правило для некоторого ввода. Я здесь невежественен. пожалуйста, посмотрите на код ниже

файл класса

import java.io.Serializable;

public class Txn754909164
  implements Serializable
{
  String sequenceNo;
  String accountNumber;
  String customerNumber;

  // setter and getters

 }

файл drl

import Txn754909164;
import java.util.*;
dialect  "mvel"

rule "rule6"
    when
        txn:Txn754909164(sequence == 10)
    then
        System.out.println( "invoking rule ***********************" );
end

код клиента

 public KieContainer kieContainer(String packageName) {
        KieServices kieServices = KieServices.Factory.get();
        KieFileSystem kieFileSystem = kieServices.newKieFileSystem();

        kieFileSystem.write(ResourceFactory.newUrlResource("drl resource url..."));
        KieBuilder kieBuilder = kieServices.newKieBuilder(kieFileSystem,MyInputClass.getClassLoader());
        KieModule kieModule = null;
        try {
            kieBuilder.buildAll();
            kieModule = kieBuilder.getKieModule();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return kieServices.newKieContainer(kieServices.getRepository().getDefaultReleaseId(),cls.getClassLoader());

    }

и наконец

StatelessKieSession kieSession = container.getKieBase().newStatelessKieSession();
        kieSession.execute(obj);

Журналы

11:47:34.795 [http-nio-8282-exec-4] INFO  o.d.c.k.b.impl.KieRepositoryImpl - KieModule was added: MemoryKieModule[releaseId=org.default:artifact:1.0.0-SNAPSHOT]
11:47:34.803 [http-nio-8282-exec-4] TRACE org.drools.core.phreak.AddRemoveRule - Adding Rule rule6
11:47:45.994 [AsyncResolver-bootstrap-executor-0] INFO  c.n.d.s.r.aws.ConfigClusterResolver - Resolving eureka endpoints via configuration
11:47:49.899 [http-nio-8282-exec-4] TRACE o.drools.core.reteoo.EntryPointNode - Insert [fact 0:1:1764329060:1764329060:1:DEFAULT:NON_TRAIT:Txn754909164:Txn754909164@69298664]
11:47:52.953 [http-nio-8282-exec-4] INFO  o.k.a.e.r.DebugRuleRuntimeEventListener - ==>[ObjectInsertedEventImpl: getFactHandle()=[fact 0:1:1764329060:1764329060:1:DEFAULT:NON_TRAIT:Txn754909164:Txn754909164@69298664], getObject()=Txn754909164@69298664, getKnowledgeRuntime()=KieSession[0], getPropagationContext()=PhreakPropagationContext [entryPoint=EntryPoint::DEFAULT, factHandle=[fact 0:1:1764329060:1764329060:1:DEFAULT:NON_TRAIT:Txn754909164:Txn754909164@69298664], leftTuple=null, originOffset=-1, propagationNumber=2, rule=null, type=INSERTION]]
11:48:41.571 [http-nio-8282-exec-4] DEBUG org.drools.core.common.DefaultAgenda - State was INACTIVE is now FIRING_ALL_RULES
11:48:41.572 [http-nio-8282-exec-4] TRACE org.drools.core.common.DefaultAgenda - Starting Fire All Rules
11:48:41.573 [http-nio-8282-exec-4] DEBUG org.drools.core.common.DefaultAgenda - State was FIRING_ALL_RULES is now HALTING
11:48:41.573 [http-nio-8282-exec-4] DEBUG org.drools.core.common.DefaultAgenda - State was HALTING is now INACTIVE
11:48:41.574 [http-nio-8282-exec-4] TRACE org.drools.core.common.DefaultAgenda - Ending Fire All Rules
11:48:41.575 [http-nio-8282-exec-4] DEBUG org.drools.core.common.DefaultAgenda - State was INACTIVE is now DISPOSED

Должен быть напечатан оператор в предложении правила drl

1 Ответ

0 голосов
/ 10 июля 2019

вышеупомянутый вопрос и объяснение само по себе является ответом. Нашел это работает отлично отлично со следующего дня. Я предполагаю, что это была просто проблема рабочей области.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...