Règles. Nous connaissons ce mot depuis l'enfance. Premièrement, les parents nous apprennent à faire ce qu'il faut, puis nous arrivons à l'école, où les enseignants dictent leurs propres règles. À l'université, nous sommes à nouveau confrontés aux règles que les enseignants et le bureau du doyen nous ont fixées. En vieillissant, nous commençons à suivre les lois élaborées par l'État. Qu'est-ce que toutes ces règles ont en commun? Le fait qu'ils aient été vérifiés au fil des années, des décennies et même des générations. Imaginez ce que serait notre vie si les règles changeaient souvent: chaque semaine ou chaque jour!
, 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).
Merci pour l'attention! J'espère que cet article sera utile pour ceux qui veulent plonger dans le monde merveilleux du BRMS!