Menggunakan Tabel Keputusan di JBoss Drools

Aturan. Kata ini sudah kita kenal sejak kecil. Pertama, orang tua mengajari kami cara melakukan hal yang benar, lalu kami datang ke sekolah, di mana guru mendikte aturan mereka sendiri. Di universitas, kita kembali dihadapkan pada peraturan yang ditetapkan oleh guru dan kantor dekan untuk kita. Seiring bertambahnya usia, kami mulai mengikuti hukum yang dikembangkan oleh negara. Apa kesamaan semua aturan ini? Fakta bahwa mereka telah diverifikasi selama bertahun-tahun, puluhan tahun, dan bahkan beberapa generasi. Bayangkan seperti apa hidup kita jika peraturannya sering diubah: setiap minggu atau setiap hari!





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





Contoh aturan di Excel
Excel

?

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





: .  RuleSet, –  RuleTable. , .





Area pengaturan aturan

 DRL- . - . . : 





  • RuleSet β€“  DRL.





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





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





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





Area deskripsi aturan

:





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





Aturan untuk menentukan jenis kelamin responden

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





. :





Aturan untuk menentukan atribut jenis kelamin dan usia

, - 17 18 . , .





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





Aturan untuk menentukan persentase penjualan

, . ,  ACTION   $param, . .  in:





Aturan untuk menentukan segmen pasar smartphone





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





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





Aturan untuk menentukan hewan peliharaan

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





Penentuan Wilayah dan Pedoman Aktivitas Internet
-

, – .  size:





Aturan untuk menentukan jumlah perangkat yang dimiliki

- , , . Β«-Β». Drools  :





Aturan definisi pendidikan

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





Aturan untuk menentukan usia mobil

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





Deskripsi fungsi GetValue
getValue

:





Aturan untuk menentukan kekuatan mobil

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





Aturan 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).





Terima kasih atas perhatiannya! Saya harap artikel ini bermanfaat bagi mereka yang ingin terjun ke dunia BRMS yang menakjubkan!








All Articles