Объявите новый тип Jboss Drools - PullRequest
       7

Объявите новый тип Jboss Drools

0 голосов
/ 01 сентября 2011

Мне нужно объявить новый тип в моем drl, как в этом примере.

package com.sample


import com.sample.DroolsTest.Message;

declare Variavel
    valor : Integer
end



rule "Hello World"
    when

        m : Message( status == Message.HELLO, myMessage : message )

-----> v: Variavel () Проблема здесь, переменная не создана

    then


        System.out.println( myMessage );
        m.setMessage( "Goodbye cruel world" );
        m.setStatus( Message.GOODBYE );
        update( m );
end

rule "GoodBye"
    when
        Message( status == Message.GOODBYE, myMessage : message )
    then
        System.out.println( myMessage );

end

Моя проблема: я хочу использовать переменную без этого кода

FactType personType = kbase.getFactType( "com.sample","Variavel" );
Object test = personType.newInstance();
                ksession.insert(test);

Можно ли использовать объявленное поле без указания этого кода при запуске правила, как статическое поле?

1 Ответ

3 голосов
/ 07 сентября 2011

Объявление типа в Drools похоже на объявление класса в Java. У вас есть тип там, но нет экземпляров. Что вы можете сделать, так это создать правило с более высоким приоритетом и вставить его как факт вместо того, чтобы приложение делало это. E.g.:


declare Variavel
    valor : Integer
end

rule "create variable"
    salience 100
when
then
    insert( new Variavel() );
end

rule "Hello World"
when
    m : Message( status == Message.HELLO, myMessage : message )
    v : Variavel()
then
    // do something
end

...