قواعد. لقد عرفنا هذه الكلمة منذ الطفولة. أولاً ، يعلمنا الآباء كيفية القيام بالشيء الصحيح ، ثم نأتي إلى المدرسة ، حيث يفرض المعلمون قواعدهم الخاصة. في الجامعة ، نواجه مرة أخرى القواعد التي وضعها لنا المدرسون ومكتب العميد. عندما نكبر ، نبدأ في اتباع القوانين التي وضعتها الدولة. ما المشترك بين كل هذه القواعد؟ حقيقة أنه تم التحقق منها على مر السنين والعقود وحتى بعض الأجيال. تخيل كيف ستكون حياتنا إذا تم تغيير القواعد كثيرًا: كل أسبوع أو كل يوم!
, 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-:
?
, , , , . , 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 :
:
, . : , PlayStation. , Household Respondent TVDevices 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 الرائع!