JBossDroolsでの決定テーブルの使用

ルール。私たちは子供の頃からこの言葉を知っていました。まず、両親が正しいことをする方法を教えてくれます。それから私たちは学校に行き、そこで教師が自分のルールを指示します。大学では、教師と学部長のオフィスが私たちに課した規則に再び直面しています。私たちが成長するにつれて、私たちは国によって開発された法律に従い始めます。これらすべてのルールに共通するものは何ですか?それらが何年、何十年、そして何世代にもわたって検証されてきたという事実。ルールが頻繁に変更された場合、私たちの生活がどのようになるか想像してみてください:毎週または毎日!





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





Excelのルールの例
Excel

?

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





: .  RuleSet, –  RuleTable. , .





ルール設定エリア

 DRL- . - . . : 





  • RuleSet –  DRL.





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





  • Functions – ,  RuleSet’.  DRL-.





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





ルール説明エリア

:





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





回答者の性別を決定するためのルール

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





. :





性別と年齢属性を決定するためのルール

, - 17 18 . , .





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





売上高の割合を決定するためのルール

, . ,  ACTION   $param, . .  in:





スマートフォン市場のセグメントを決定するためのルール





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





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





ペットを決定するためのルール

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





郡の決定とインターネット活動のガイドライン
-

, – .  size:





所有するデバイスの数を決定するためのルール

- , , . «-». Drools  :





教育定義規則

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





車の年齢を決定するためのルール

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





GetValue関数の説明
getValue

:





車のパワーを決定するためのルール

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





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





ご清聴ありがとうございました!この記事がBRMSの素晴らしい世界に飛び込みたい人に役立つことを願っています!








All Articles