FireAllRules()和StartProcess()不生效

时间:2014-08-01 14:42:46

标签: java drools jbpm bpmn bpms

希望有人可以帮助我。所以,我有一些从RedHat从BPMS导入的本地bpmn进程。现在我试图执行它们,以及一些.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

如果我只尝试触发规则,则会发生nothimg并且tot为0.规则是仅执行syso的简单规则。我在这里错过了什么吗?规则在我的maven项目的src / main / resources /上。抱歉这么大的帖子!

1 个答案:

答案 0 :(得分:1)

似乎你根本没有插入任何事实,所以我相信不会触发任何规则,因为基本上没有要评估的事实。 关于启动进程,似乎项目中缺少某些依赖项。确保jbpm-bpmn2位于应用程序的类路径中

HTH