当前位置: 首页 > news >正文

广州网站建设 推广公司wordpress阿里百秀模板下载

广州网站建设 推广公司,wordpress阿里百秀模板下载,网站建设的目的,做网站导航cms当某个服务的需求经常变的时候#xff0c;如果使用了硬编码的方式进行开发会是一件非常麻烦的事。 最近在对项目的积分模块进行改造的时候想到了规则引擎#xff0c;使用规则引擎处理复杂而且多变的业务逻辑有其非常大的优势#xff0c;包括实时更新、性能等方面。 不多说如果使用了硬编码的方式进行开发会是一件非常麻烦的事。   最近在对项目的积分模块进行改造的时候想到了规则引擎使用规则引擎处理复杂而且多变的业务逻辑有其非常大的优势包括实时更新、性能等方面。 不多说直接上代码 1、第一步先写好工具类有了工具类只需在应用的业务场景中调用相应方法就可以了 Component public class KieSessionUtils {private static KieBase kieBase;//定义规则文件的包名与drl文件里的package对应private static final String drlPackage rules;//定义drl文件的存放路径静态变量需要通过在其set方法上打Value注解才可实现配置注入private static String drlPath;//通过配置拉取路径这里推荐一下apollo配置中心使用apollo可以实时更改通过Value拉取的配置Value(${drools.points.drlPath})public void setDrlPath(String drlPath){KieSessionUtils.drlPath drlPath;}/*** 生成kieSeesion会话* param ruleName* return* throws Exception*/public static KieSession newKieSession(String ruleName) throws Exception {//无状态的kieSession和有状态相比区别在于不维持会话即使用完后自动释放资源不需要手动调dispose//StatelessKieSession kieSession getKieBase(ruleName).newStatelessKieSession();//有状态的kieSessionKieSession kieSession getKieBase(ruleName).newKieSession();//添加监听器这里加的是对规则文件运行debug监听器测试时最好加上用于排查问题生产上可视情况去掉kieSession.addEventListener(new DebugRuleRuntimeEventListener());return kieSession;}/*** 生成kieBase* param ruleName 规则文件名* return* throws Exception*/protected static KieBase getKieBase(String ruleName) throws Exception {//判断kieBase和需要获取的规则文件是否存在不存在则重新初始化kieBaseif (kieBase null || kieBase.getRule(drlPackage,ruleName)null) {KieServices kieServices KieServices.Factory.get();KieFileSystem kfs kieServices.newKieFileSystem();//获取规则数据源这里由于本人项目使用的是springboot打包会打成jar包如果想做实时更新drl文件需要放在jar包外面//获取resource的方式很多不一定要用读取文件的方式可根据自己的设计和业务场景采取不同方案Resource resource kieServices.getResources().newFileSystemResource(new File(drlPath/ruleName));resource.setResourceType(ResourceType.DRL);kfs.write(resource);KieBuilder kieBuilder kieServices.newKieBuilder(kfs).buildAll();if (kieBuilder.getResults().getMessages(Message.Level.ERROR).size() 0) {throw new Exception();}KieContainer kieContainer kieServices.newKieContainer(kieServices.getRepository().getDefaultReleaseId());kieBase kieContainer.getKieBase();}return kieBase;}/*** 更新规则* param ruleName 规则名和规则文件名* throws Exception*/public static void refreshRules(String ruleName) throws Exception {//判断规则不为null则移除规则if (kieBase !null kieBase.getRule(drlPackage,ruleName)!null){//为了方便本人把规则名和drl文件名称统一定义了kieBase.removeRule(drlPackage,ruleName);//重新初始化kieBasegetKieBase(ruleName);}} } 2、编写规则文件这里只给出和规则引擎格式有关的代码 package rules; //包名import com.jiuair.dto.AddObject import java.util.List import java.util.HashMap import java.util.Map import java.util.ArrayList import java.util.Date import java.util.Iterator import java.util.Setglobal com.demo.dto.AddObject addObject //传入的对象同时也是返回值对象 rule add.drl //规则名为了方便设为何drl文件名一样可以不一样when$s : AddObject();then。。。。。//这一段加自己业务代码逻辑支持jdk$s.setResult(X); //执行完逻辑后将结果设置到对象中 end 3、在业务场景中调用工具类里的方法 private AddObject executeAddRule(Object data) {AddObject addObject new AddObject();addObject.setJsonObject(data);try {//获取会话KieSession kieSession KieSessionUtils.newKieSession(add.drl);//设置传入参数kieSession.insert(addObject);//设置全局参数kieSession.setGlobal(addObject,addObject);//执行规则kieSession.fireAllRules();//释放会话资源kieSession.dispose();} catch (Exception e) {e.printStackTrace();}return addObject;} 4、实现实时更新drl文件    /*** 更新规则文件这里只给出service层的代码了相信controller大家都会写。。。* param name 名称为drl的文件名* param is 由于dubbo不支持流的方式传输文件需在controller转为byte数组再传到service*/Overridepublic void refreshRule(String name, byte[] is) {try {FileOutputStream fos new FileOutputStream(drlPath/name);fos.write(is);fos.close();KieSessionUtils.refreshRules(name);} catch (Exception e) {e.printStackTrace();}} 附maven引包 propertiesruntime.version7.20.0.Final/runtime.version/propertiesdependencygroupIdorg.kie/groupIdartifactIdkie-api/artifactIdversion${runtime.version}/version/dependencydependencygroupIdorg.kie/groupIdartifactIdkie-internal/artifactIdversion${runtime.version}/version/dependencydependencygroupIdorg.drools/groupIdartifactIddrools-core/artifactIdversion${runtime.version}/version/dependency dependencygroupIdorg.drools/groupIdartifactIddrools-decisiontables/artifactIdversion${runtime.version}/version/dependency     import java 详细X 没有英汉互译结果  请尝试网页搜索 转载于:https://www.cnblogs.com/jagerLan/p/10857004.html
http://mrfarshtey.net/news/3496/

相关文章:

  • 台州网站建站网站设计全包
  • 建站公司不给源码上海网站开发公司排名
  • 在哪建网站东营网站搜索引擎优化
  • 江阴市建设局官网站怎么做招生网站
  • 网站建设合同.doc前端公众号开发
  • 网站建设哪家公司中国网站开发的前景
  • 北京英文网站建设做网站公司商丘
  • 大数据比赛网站建设一级a做爰片免费网站视频
  • 凡客官方网站浙江建设厅网站那三类人员
  • 苏州市建设职业中心网站从事网站建设需要什么资质
  • 网站策划制作公司 北京做画册可以参考哪些网站
  • 广州省建设厅官方网站鸿蒙os用什么语言开发app
  • 网站建设功cad dwt模板做网站模版
  • 建设用地规划许可证在哪个官方网站可以查询淘客 wordpress 数据
  • 公司网站域名续费一年多少钱新网域名解析
  • 泉州seo-泉州网站建设公司wordpress电台插件
  • 优化网站及商品排名怎么做网站导航栏特效
  • 汉鼎网站建设什么网址可以玩大型游戏
  • 平乡建设局网站网站制作商城
  • 网站浮动窗口怎么做的云主机重装系统后网站重新部署吗
  • 上海购物网站建设子网站建设工作