Во время выполнения моих правил я буду «вставлять» в память новый объект факта, который мне нужно будет прочитать, когда правила будут выполнены. Как я могу прочитать эти факты вне сеанса правил?
Я попытался вставить факт с помощью outIdentifier вне сеанса (т. Е. До метода "fireAllRules ()"). Однако, поскольку я могу не знать, сколько фактов AccountingPeriod может быть вставлено во время сеанса правила, или даже если он будет вставлен, этот метод не подходит.
Факт учетного периода:
package sample.package;
public class AccountingPeriod {
private LocalDate accountingDate;
private int personKey;
public AccountingPeriod(LocalDate accountingDate, int personKey) {
this.accountingDate = accountingDate;
this.personKey = personKey;
}
public LocalDate getAccountingDate() { return accountingDate; }
public LocalDate getPersonKey() { return personKey; }
}
Код исполнения:
sample.package;
public static void main(String args[]) {
StatelessKieSession ksession = [initialized KieSession]
ksession.execute(Arrays.asList(Facts[]));
[Code here to get the AccountingPeriod fact inserted in the rule session]
}
myRules.drl
rule
when [some condition]
then
insert (new AccountingPeriod(LocalDate.of(year, month, day), 100));
end