Usando Tabela de Decisão no JBoss Drools

Regras. Conhecemos essa palavra desde a infância. Primeiro, os pais nos ensinam como fazer a coisa certa, depois vamos para a escola, onde os professores ditam suas próprias regras. Na universidade, somos novamente confrontados com as regras que os professores e a reitoria nos estabeleceram. À medida que crescemos, começamos a seguir as leis que são desenvolvidas pelo estado. O que todas essas regras têm em comum? O fato de que eles foram verificados ao longo dos anos, décadas e algumas até gerações. Imagine como seria a nossa vida se as regras fossem alteradas com frequência: todas as semanas ou todos os dias!





, Mediascope, : , . . -.  , , . 





?

, . ( ) - . BRMS Business Rule Management System. ,

- , -. , - , - .





, , «», . . : , , , , . , !





BRMS . : IBM, Red Hat, Agiloft, SAS Bosch. – , . JBoss Drools. , , , , - DRL, Excel-. UI- . , UI Excel-.





- ?

- , . , , , . .





,   (gender).   (SEX).  ,  gender = male, «»  1.  2. DRL :





rule "Rule 1 Example 1"
      when
         $s: Respondent($s.gender == "male")
      then
         $s.addResult("SEX", "1");
end

 rule "Rule 2 Example 2"
      when
         $s: Respondent($s.gender == "female")
      then
         $s.addResult("SEX", "2");
 end
      
      



, ,  Gherkin. , (  when) , (  then).   Drools   Left Hand Side ( LHS), - Right Hand Side ( RHS). : Respondent fact,   Drools, .  gender  result. , , framework  .  $.





 Excel-:





Regra de exemplo no Excel
Excel

?

, , , , . ,  Drools  ,  Miscrosoft Excel OpenOffice,  CSV.  DRL-.





: .  RuleSet, –  RuleTable. , .





Área de definição de regra

 DRL- . - . . : 





  • RuleSet –  DRL.





  • Import – ,  Java-, , , java.lang.Math





  • Functions – ,  RuleSet’.  DRL-.





,  RuleTable, , ,  Drools   DRL-. .  nameforRuleTable.





Área de descrição da regra

:





  • NAME – . .





  • DESCRIPTION – . . , . 





  • CONDITION –  Left Hand Side  ,  ACTION. .





  • ACTION – , .  addResult,  Map  . .  ACTION  Java-, . .





    ,  CONDITION  ACTION  . 





,  $s  Respondent. , , ,  Import.  CONDITION  , .  CONDITION-: ,  Import.





, ,  CONDITION   ACTION, . , . . (Text-Parameter-Result  ). . /, , Drools . .





?

, , . .





,  Respondent. – , . (, , ). , ,  Drools,  Respondent. ,  Map<String, String> result, . ,  Respondent  :





public class Respondent {

    public int id;
    public String gender;
    public Boolean isActive;
    public Integer age;
    public List<String> pets;
    public String city;
    public List<String> devices;
    public Map<String, String> properties;
    public Car car;
    public MobileBrand mobileBrand;
    public Household household;

    public Map<String, String> result = new HashMap<>();

    public void addResult(String key, String value) {
        result.put(key, value);
    }

//  getters, setters, constructor

}
      
      



, , . , , ?  isActive.  true – , false – .





Regras para determinar o sexo do entrevistado

, : . , , ,  .  Respondent.  DRL:





rule "name_for_RuleTable_20"
	when
		$s: Respondent(isActive == true, gender == "male")
	then
		$s.addResult("SEX", "M");
end

rule "name_for_RuleTable_21"
	when
		$s: Respondent(isActive == true, gender == "female")
	then
		$s.addResult("SEX", "F");
end
      
      



 $param -  .  isActive == $param   isActive == true. .  Drools , . ,  gender.





. :





Regras para determinar o atributo sexo e idade

, - 17 18 . , .





, – . , . , ,  PHONE_SALES_PER  2019 . ,  $param . ,  MobileBrand   Import  .





Regras para determinar a porcentagem de vendas

, . ,  ACTION   $param, . .  in:





Regras para determinar o segmento do mercado de smartphones





:  SAMSUNG  APPLE,  PREMIUM. ,  HUAWEI  XIAOMI,  NOT_PREMIUM. ( ,    :) ) , . 





, ?  contains.  java.util.Collection.  Respondent   pets.  , . , , . « » – ,  $param .





A regra para determinar um animal de estimação

forall(<>){<>}.  . , . ,  ,  . . , , ,  param. , – ($s). , ,  Drools , - (city devices),  CONDITION  . 





Determinação de condado e diretrizes de atividade na Internet
-

, – .  size:





Regras para determinar o número de dispositivos pertencentes

- , , . «-». Drools  :





Regras de definição de educação

, . . ,  Car c  : , , . , , . , -, .  from:





Regras para determinar a idade do carro

, . , ,  Car,   Respondent,  Map<String, String> properties .  POWER.  Drools getValue.  Functions :





Descrição da função GetValue
getValue

:





Regras para determinar a potência do carro

, . : ,  PlayStation. ,  Household  Respondent  TVDevices   PlayStation. :





Regra do PlayStation
PlayStation

?

.  ACTION? ,  Java. . , ,  ACTION  .





 Drools, :





  • set –  ,  Drools  ;





  • update –  ,  set;





  • modify –  , , ;





  • insert –  .





 modify.





 RuleTable  , - 99 0. ,  $r,  Respondent’a   false.   RuleTable   isActive   REJECTED   TRUE.





 CONDITION. , . , , . . Drools . , , , . 





 Drools  (https://github.com/sxexesx/drools-decision-table).





Obrigado pela atenção! Espero que este artigo seja útil para aqueles que desejam mergulhar no maravilhoso mundo do BRMS!








All Articles