Verwenden der Entscheidungstabelle in JBoss Drools

Regeln. Wir kennen dieses Wort seit unserer Kindheit. Zuerst bringen uns die Eltern bei, wie man das Richtige tut, dann kommen wir zur Schule, wo die Lehrer ihre eigenen Regeln diktieren. An der Universität stehen wir erneut vor den Regeln, die Lehrer und das Dekanat für uns festgelegt haben. Wenn wir älter werden, beginnen wir, die vom Staat entwickelten Gesetze zu befolgen. Was haben all diese Regeln gemeinsam? Die Tatsache, dass sie im Laufe der Jahre, Jahrzehnte und sogar Generationen verifiziert wurden. Stellen Sie sich vor, wie unser Leben wäre, wenn die Regeln oft geändert würden: jede Woche oder jeden Tag!





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





Beispielregel in Excel
Excel

?

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





: .  RuleSet, –  RuleTable. , .





Regeleinstellungsbereich

 DRL- . - . . : 





  • RuleSet â€“  DRL.





  • Import â€“ ,  Java-, , , java.lang.Math





  • Functions â€“ ,  RuleSet’.  DRL-.





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





Regelbeschreibungsbereich

:





  • 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 â€“ .





Regeln zur Bestimmung des Geschlechts des Befragten

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





. :





Regeln zur Bestimmung des Geschlechts- und Altersattributs

, - 17 18 . , .





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





Regeln zur Bestimmung des Prozentsatzes des Umsatzes

, . ,  ACTION   $param, . .  in:





Regeln zur Bestimmung des Segments des Smartphone-Marktes





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





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





Die Regel zur Bestimmung eines Haustieres

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





Richtlinien zur Bestimmung des Landkreises und zur Internetaktivität
-

, – .  size:





Regeln zur Bestimmung der Anzahl der Geräte

- , , . «-». Drools  :





Bildungsdefinitionsregeln

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





Regeln zur Bestimmung des Alters des Autos

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





Funktionsbeschreibung GetValue
getValue

:





Regeln zur Bestimmung der Leistung des Autos

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





PlayStation-Regel
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).





Vielen Dank für Ihre Aufmerksamkeit! Ich hoffe, dieser Artikel ist nützlich für diejenigen, die in die wunderbare Welt von BRMS eintauchen möchten!








All Articles