Utilisation de la table de décision dans JBoss Drools

Règles. Nous connaissons ce mot depuis l'enfance. Premièrement, les parents nous apprennent à faire ce qu'il faut, puis nous arrivons à l'école, où les enseignants dictent leurs propres règles. À l'université, nous sommes à nouveau confrontés aux règles que les enseignants et le bureau du doyen nous ont fixées. En vieillissant, nous commençons à suivre les lois élaborées par l'État. Qu'est-ce que toutes ces règles ont en commun? Le fait qu'ils aient été vérifiés au fil des années, des décennies et même des générations. Imaginez ce que serait notre vie si les règles changeaient souvent: chaque semaine ou chaque jour!





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





Exemple de règle dans Excel
Excel

?

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





: .  RuleSet, –  RuleTable. , .





Zone de réglage des règles

 DRL- . - . . : 





  • RuleSet –  DRL.





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





  • Functions – ,  RuleSet’.  DRL-.





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





Zone de description de la règle

:





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





Règles pour déterminer le sexe du répondant

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





. :





Règles de détermination de l'attribut sexe et âge

, - 17 18 . , .





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





Règles de détermination du pourcentage des ventes

, . ,  ACTION   $param, . .  in:





Règles pour déterminer le segment du marché des smartphones





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





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





La règle pour déterminer un animal de compagnie

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





Détermination du comté et lignes directrices sur l'activité Internet
-

, – .  size:





Règles de détermination du nombre d'appareils possédés

- , , . «-». Drools  :





Règles de définition de l'éducation

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





Règles de détermination de l'âge de la voiture

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





Description de la fonction GetValue
getValue

:





Règles de détermination de la puissance de la voiture

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





Règle 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).





Merci pour l'attention! J'espère que cet article sera utile pour ceux qui veulent plonger dans le monde merveilleux du BRMS!








All Articles