Инициализация глобальной переменной Drool в файле drl - PullRequest
0 голосов
/ 12 марта 2019
 package com.example.drools; 

 global Integer count; // I want to initialize this count variable with some 
                         default value. 

   rule "Initialize"
   when
   then
       count= 1; // Locally it's possible but want it to set globally which can 
                     be use in any other rules just simply by calling it.
       System.out.println("count="+count);
   end

  rule "Drools Introduction"
  when
  then
     System.out.println("count="+count); // Here output is coming null which in 
                                            want some default value set for 
                                            global value.
  end

Так хотите инициализировать переменную Count только в файле drl?

1 Ответ

1 голос
/ 12 марта 2019

Как вы обновляете глобал внутри правила, используя автоматическую переменную kcontext:

global Integer count;

rule "Initialize"
salience 100
when
then
       kcontext.getKieRuntime().setGlobal("count", 1);
end    

Некоторые примечания:

  • Вы должны использовать высокий смыслв вашем правиле, поэтому оно выполняется перед любым другим правилом, которое также использует глобальный.
  • Этот метод не будет работать, если вы используете глобальный в LHS ваших правил.Если это так, я бы предложил использовать Факт вместо глобального.

Надеюсь, это поможет,

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