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-:
?
, , , , . , 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).
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!