FireAllRules() и StartProcess() не дают эффекта

Надеюсь, кто-то может мне помочь в этом. Итак, у меня есть несколько локальных процессов bpmn, которые я импортировал из BPMS из RedHat. Сейчас я пытаюсь выполнить их, а также некоторые файлы.drl, но безуспешно в обеих попытках. Вот что я пытаюсь:

     KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
     Resource ruleFile = ResourceFactory.newFileResource("src/main/resources/rules0.drl");
     Resource ruleFile1 = ResourceFactory.newFileResource("src/main/resources/rules0.drl");
     Resource process1 = ResourceFactory.newFileResource("src/main/resources/Process1.bpmn");
     kbuilder.add(ruleFile,ResourceType.DRL);
     kbuilder.add(ruleFile1,ResourceType.DRL);
     kbuilder.add(process1,ResourceType.BPMN2);

     KnowledgeBase kbase = kbuilder.newKnowledgeBase();

     kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());                       StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
     ksession.fireAllRules();
     ksession.startProcess(process1.getSourcePath());

Но я попробовал также:

    KieServices kServices = KieServices.Factory.get();
    KieRepository kRepository = kServices.getRepository();
    KieFileSystem kFileSystem = kServices.newKieFileSystem();
     Resource ruleFile = ResourceFactory.newFileResource("src/main/resources/rules0.drl");
    kFileSystem.write(ResourceFactory.newClassPathResource("rules0.drl"));
    KieBuilder kBuilder = kServices.newKieBuilder(kFileSystem);
    kBuilder.add(ruleFile,ResourceType.DRL);
    kBuilder.buildAll();

KieContainer kContainer =
    kServices.newKieContainer(kRepository.getDefaultReleaseId());
    KieBase kBase = kContainer.getKieBase();
    KieSession kisession = kBase.newKieSession();
    int tot = kisession.fireAllRules();

    System.out.println(""+tot);

totalRules равно нулю, и правило никогда не выполнялось. В обоих случаях, если я попытаюсь запустить процессы (и только если), то получится:

Исключение в потоке "main" java.lang.AbstractMethodError: org.jbpm.bpmn2.BPMN2ProcessProviderImpl.configurePackageBuilder(Lorg/kie/internal/builder/KnowledgeBuilder;)V

Если я только пытаюсь запустить правила, тогда ничего не происходит, а tot равно 0. Правила - это простые правила, которые выполняют только syso. Я что-то здесь упускаю? Правила находятся в src/main/resources/ моего проекта maven. Извините за такой гигантский пост!

1 ответ

Решение

Кажется, что вы вообще не вставляете никаких фактов, поэтому я верю, что никакие правила не будут применены, потому что нет фактов, которые нужно оценивать в принципе. Что касается запуска процесса, кажется, что в вашем проекте отсутствует некоторая зависимость. Убедитесь, что jbpm-bpmn2 находится внутри classpath вашего приложения

НТН

Другие вопросы по тегам