/
RuleExecutor.java
36 lines (27 loc) · 1.14 KB
/
RuleExecutor.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package com.asyncstream.cloudmessage.rule.impl;
import com.asyncstream.cloudmessage.rule.api.model.RuleCriteria;
import org.camunda.bpm.dmn.engine.DmnDecision;
import org.camunda.bpm.dmn.engine.DmnEngine;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Map;
abstract class RuleExecutor<R> {
private final RuleRegistry ruleRegistry;
private final DmnEngine dmnEngine;
private final static Logger _LOG = LoggerFactory.getLogger(RuleExecutor.class);
protected RuleExecutor(RuleRegistry ruleRegistry, DmnEngine dmnEngine) {
this.ruleRegistry = ruleRegistry;
this.dmnEngine = dmnEngine;
}
public R execute(final String ruleCode, final RuleCriteria criteria){
return this.execute(this.gerDecisionRule(ruleCode),criteria.contextMap());
}
abstract R execute(final DmnDecision decision, final Map<String,Object> contextMap);
protected RuleRegistry getRuleRegistry() {
return ruleRegistry;
}
protected DmnEngine getDmnEngine() {
return dmnEngine;
}
private DmnDecision gerDecisionRule(String ruleCode){return this.ruleRegistry.getRule(ruleCode);}
}