DMN(2)运行第一个DMN应用
配置规则引擎
建立规则文件
加载与运行DMN文件
步骤
新建项目:first-dmn
1.新建资源包目录 resource,在其下面COPY,粘贴activiti.dmn.cfg.xml 与 activiti.cfg.xml略有不同,如下
activiti.dmn.cfg.xml
activiti.cfg.xml
2.创建first.dmn 到resource目录下
3.测试方法 FirstDmn.java
package com.xiangshuai.act.c28;
import java.util.HashMap;
import java.util.Map;
import org.activiti.dmn.api.DmnDecisionTable;
import org.activiti.dmn.api.DmnDeployment;
import org.activiti.dmn.api.DmnRepositoryService;
import org.activiti.dmn.api.DmnRuleService;
import org.activiti.dmn.api.RuleEngineExecutionResult;
import org.activiti.dmn.engine.DmnEngine;
import org.activiti.dmn.engine.DmnEngineConfiguration;
/**
* @author lqx
* 文件在 E:\学习文档子目录压缩\框架\工作流引擎\Activiti6.0\window\复习步骤25-30 DMN(2)运行第一个DMN应用
或 我的网盘\我的笔记\学习文档子目录压缩\框架\工作流引擎\Activiti6.0\window\复习步骤25-30 DMN(2)运行第一个DMN应用
*
*
*/
public class FirstDmn {
public static void main(String[] args) {
// 根据默认配置创建引擎的配置实例
DmnEngineConfiguration config = DmnEngineConfiguration
.createDmnEngineConfigurationFromResourceDefault();
// 创建规则引擎
DmnEngine engine = config.buildDmnEngine();
// 获取规则的存储服务组件
DmnRepositoryService rService = engine.getDmnRepositoryService();
// 获取规则服务组件
DmnRuleService ruleService = engine.getDmnRuleService();
// 进行规则 部署
DmnDeployment dep = rService.createDeployment()
.addClasspathResource("first.dmn").deploy();
// 进行数据查询
DmnDecisionTable dt = rService.createDecisionTableQuery()
.deploymentId(dep.getId()).singleResult();
/*
初始化参数
<input id="input1">
<inputExpression id="inputExpression1" typeRef="number">
<text>personAge</text>
</inputExpression>
</input>
*/
Map<String, Object> params = new HashMap<String, Object>();
params.put("personAge", 19);//personAge参数 是 <text>personAge</text> 定义好的
// 传入参数执行决策,并返回结果
/*
* <rule>
<inputEntry id="inputEntry2">
<text><![CDATA[ >= 18 ]]></text>
</inputEntry>
<outputEntry id="outputEntry2">
<text>'成年人'</text>
</outputEntry>
</rule>
控制台输出结果 ---- <output id="outputId" label="Output 1" name="myResult" typeRef="string" />
根据first.dmn匹配后的结果 输出 注入到myResult
*/
RuleEngineExecutionResult result = ruleService.executeDecisionByKey(
dt.getKey(), params);
System.out.println(result.getResultVariables().get("myResult"));
// 重新设置参数
params.put("personAge", 5);
// 重新执行决策
result = ruleService.executeDecisionByKey(dt.getKey(), params);
// 控制台重新输出结果
System.out.println(result.getResultVariables().get("myResult"));
}
}