Uso de la tabla de decisiones en JBoss Drools

Reglas. Conocemos esta palabra desde la infancia. Primero, los padres nos enseñan cómo hacer lo correcto, luego llegamos a la escuela, donde los maestros dictan sus propias reglas. En la universidad, nuevamente nos enfrentamos a las reglas que los profesores y el decano nos marcaron. A medida que envejecemos, comenzamos a seguir las leyes que desarrolla el estado. ¿Qué tienen todas estas reglas en común? El hecho de que se hayan verificado a lo largo de los años, décadas y algunas incluso generaciones. Imagínese cómo sería nuestra vida si las reglas se cambiaran a menudo: ¡cada semana o todos los días!





, 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-:





Regla de ejemplo en Excel
Excel

?

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





: .  RuleSet, –  RuleTable. , .





Área de establecimiento de reglas

 DRL- . - . . : 





  • RuleSet –  DRL.





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





  • Functions – ,  RuleSet’.  DRL-.





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





Área de descripción de reglas

:





  • 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 – .





Reglas para determinar el sexo del encuestado

, : . , , ,  .  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.





. :





Reglas para determinar el atributo sexo y edad.

, - 17 18 . , .





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





Reglas para determinar el porcentaje de ventas.

, . ,  ACTION   $param, . .  in:





Reglas para determinar el segmento del mercado de teléfonos inteligentes.





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





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





La regla para determinar una mascota.

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





Pautas de determinación del condado y actividad en Internet
-

, – .  size:





Reglas para determinar la cantidad de dispositivos que posee

- , , . «-». Drools  :





Reglas de definición de educación

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





Reglas para determinar la edad del automóvil.

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





Descripción de la función GetValue
getValue

:





Reglas para determinar la potencia del automóvil.

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





Regla de 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).





¡Gracias por la atención! ¡Espero que este artículo sea útil para aquellos que quieran sumergirse en el maravilloso mundo de BRMS!








All Articles