JBPM процесс не запускает правила слюни с правиломFlowGroup - PullRequest
0 голосов
/ 21 января 2019

Я не могу запустить правило из задачи бизнес-правила jbpm.Похоже, что процесс не найден файл правил.Попытайтесь объяснить.

Во-первых, я расширяю пример Drools, добавляя задачу бизнес-правила, когда я устанавливаю ruleFlowGroup: enter image description here

Это свойства для бизнес-правилаПравило задачи 1: enter image description here

Простой набор processTest.java Сообщение и запуск процесса:

package com.sample;

import org.kie.api.KieServices;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;

import com.sample.DroolsTest.Message;

/**
 * This is a sample file to launch a process.
 */
public class ProcessTest {

public static final void main(String[] args) {
    try {
        // load up the knowledge base
        KieServices ks = KieServices.Factory.get();
        KieContainer kContainer = ks.getKieClasspathContainer();
        KieSession kSession = kContainer.newKieSession("ksession-process");

        // go !
        Message message = new Message();
        message.setMessage("Hello Giorgio");
        message.setStatus(Message.HELLO);
        kSession.insert(message);

        // start a new process instance
        kSession.startProcess("com.sample.bpmn.hello");
    } catch (Throwable t) {
        t.printStackTrace();
    }
}

}

Затем я запускаю егоправильно запустить задачу скрипта («Hello world»), но не найденные правила в RuleGroup1.drl:

//created on: 21-gen-2019
package com.sample

//list any import classes here.
import com.sample.DroolsTest.Message;


//declare any global variables here


rule "First Giorgio rule"
    ruleflow-group "Group1"

    when
        m : Message( status == Message.HELLO, myMessage : message )
    then
        System.out.println( "rule0 Group1" );

end

rule "Your First Rule"
    ruleflow-group "Group1"
    when
        //conditions
    then
        System.out.println( "rule1 Group1" );

end

rule "Your Second Rule"
    ruleflow-group "Group1"
    //include attributes such as "salience" here...
    when
        //conditions
    then
        System.out.println( "rule2 Group1" );

end

Следовать папкам проекта:

enter image description here

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 22 января 2019

Я решил добавить kSession.fireAllRules () и хранить файлы процессов и правил в одном пакете.

1) Измените kmodule.xml, добавив имя ksession "processrules":

    <?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">
    <kbase name="rules" packages="rules">
        <ksession name="ksession-rules"/>
    </kbase>
    <kbase name="dtables" packages="dtables">
        <ksession name="ksession-dtables"/>
    </kbase>
    <kbase name="process" packages="process">
        <ksession name="ksession-process"/>
    </kbase>
    <kbase name="processrules" packages="processrules">
        <ksession name="ksession-processrules"/>
    </kbase>
</kmodule>

2) Создайте новый пакет, связанный с именем ksession. В моем случае процессы: enter image description here

...