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

制作一个网站平台要多钱e4a做网站软件

制作一个网站平台要多钱,e4a做网站软件,唐山网站建设公司,营销型网站成功案例目录 一、序言二、Easy Rules介绍三、定义规则(Rules)1、规则介绍2、编程式规则定义3、声明式规则定义 四、定义事实(Facts)五、定义规则引擎(Rules Engine)1、规则引擎介绍2、InferenceRulesEngine规则引擎示例(1) 定义触发条件(2) 定义规则触发后的执行行为(3) 测试用例 一、… 目录 一、序言二、Easy Rules介绍三、定义规则(Rules)1、规则介绍2、编程式规则定义3、声明式规则定义 四、定义事实(Facts)五、定义规则引擎(Rules Engine)1、规则引擎介绍2、InferenceRulesEngine规则引擎示例(1) 定义触发条件(2) 定义规则触发后的执行行为(3) 测试用例 一、序言 最近团队在做一些Visa、Master卡的交易风控运营团队提供了一些交易风控的规则比如针对卡号MCC设置单笔交易限额24小时交易限额72小时交易限额等等还有触发风控规则是否拦截交易还是只发告警邮件等等等。 虽然写各种条件判断也能实现但是随着后面规则增加维护成本也会越来越高所以想尝试引入规则引擎同时考虑到开发和学习成本还是决定学习轻量级的Easy Rules。 二、Easy Rules介绍 Easy Rules是一个Java规则引擎它提供了规则抽象通过触发条件和触发后的行为去创建规则。还提供了规则引擎API通过这些API可以基于一系列的规则去判断规则是否触发以及触发后执行什么动作。 核心特性 轻量级Java库易于学习的API。注解式编程模型实现基于POJO开发。通过抽象定义业务规则并且轻松应用规则。支持通过简单规则可以创建组合规则。支持通过表达式语言(MVEL、SPEL和JEXL)定义规则。 相关依赖如下 !--Easy Rule-- !--核心库--dependencygroupIdorg.jeasy/groupIdartifactIdeasy-rules-core/artifactIdversion4.1.0/version/dependency!--组合规则支持--dependencygroupIdorg.jeasy/groupIdartifactIdeasy-rules-support/artifactIdversion4.1.0/version/dependency!--SPEL表达式语言支持--dependencygroupIdorg.jeasy/groupIdartifactIdeasy-rules-spel/artifactIdversion4.1.0/version /dependency!--MVEL表达式语言支持-- dependencygroupIdorg.jeasy/groupIdartifactIdeasy-rules-mvel/artifactIdversion4.1.0/version /dependency三、定义规则(Rules) 1、规则介绍 大多数的业务规则可以通过如下定义来描述 Name唯一的规则名称。Description简单规则描述。Priority规则执行优先级。Facts触发规则时的一系列事实。Condition给定事实后应该被满足的一系列条件。Actions条件满足时应该执行的一系列行为。 Easy Rules中的规则由Rule接口来代表如下 public interface Rule extends ComparableRule {/*** 判断规则是否应该被触发true-是false-否*/boolean evaluate(Facts facts);/*** 规则触发后执行的行为* throws Exception 执行时触发的异常*/void execute(Facts facts) throws Exception; }2、编程式规则定义 import org.jeasy.rules.api.Facts; import org.jeasy.rules.api.Rule; import org.jeasy.rules.api.Rules; import org.jeasy.rules.api.RulesEngine; import org.jeasy.rules.core.DefaultRulesEngine;/*** 编程式规则定义* author Nick Liu* date 2023/8/3*/ public class ProgrammaticHelloWorldRule implements Rule {Overridepublic boolean evaluate(Facts facts) {return facts.get(enabled);}Overridepublic void execute(Facts facts) throws Exception {System.out.println(Hello World);}Overridepublic int compareTo(Rule o) {return 0;}public static void main(String[] args) {// 定义事实Facts facts new Facts();facts.put(enabled, true);// 注册编程式规则Rules rules new Rules();rules.register(new ProgrammaticHelloWorldRule());// 使用默认规则引擎根据事实触发规则RulesEngine rulesEngine new DefaultRulesEngine();rulesEngine.fire(rules, facts);} } 备注运行程序控制台会输出Hello World。 3、声明式规则定义 import org.jeasy.rules.annotation.Action; import org.jeasy.rules.annotation.Condition; import org.jeasy.rules.annotation.Fact; import org.jeasy.rules.annotation.Rule; import org.jeasy.rules.api.Facts; import org.jeasy.rules.api.Rules; import org.jeasy.rules.api.RulesEngine; import org.jeasy.rules.core.DefaultRulesEngine;/*** 声明式规则定义* author Nick Liu* date 2023/8/3*/ Rule(name Hello world rule, description Always say hello world) public class DeclarativeHelloWorldRule {Conditionpublic boolean when(Fact(enabled) boolean enabled) {return enabled;}Action(order 1)public void then(Fact(enabled) boolean enabled) throws Exception {System.out.println(Hello World);}Action(order 2)public void finalAction(Facts facts) throws Exception {System.out.println(Final Hello World);}public static void main(String[] args) {Facts facts new Facts();facts.put(enabled, true);Rules rules new Rules();rules.register(new DeclarativeHelloWorldRule());RulesEngine rulesEngine new DefaultRulesEngine();rulesEngine.fire(rules, facts);} }控制台运行结果如下 Hello World Final Hello World四、定义事实(Facts) 在Easy Rules中事实由Fact类来定义如下 public class FactT {private final String name;private final T value; }事实有name和value两个属性两者都不能为空且name属性值充当命名空间的角色需要唯一。 下面是定义事实的例子 第1种方式 FactString fact new Fact(foo, bar); Facts facts new Facts(); facts.add(fact);第2种方式 Facts facts new Facts(); facts.put(foo, bar);备注两者方式都定义了一个name为foovalue为bar的事实实例第二种方式更加简洁。 五、定义规则引擎(Rules Engine) 1、规则引擎介绍 Easy Rules提供了两种规则引擎的实现 DefaultRulesEngine默认规则引擎根据规则的自然顺序默认为优先级应用规则。InferenceRulesEngine推理规则引擎持续性应用单条规则直到规则触发条件不满足。 Easy Rules规则引擎支持下面参数配置 参数名称参数类型必选默认值rulePriorityThresholdint否Integer.MAX_VALUEskipOnFirstAppliedRuleboolean否falseskipOnFirstFailedRuleboolean否falseskipOnFirstNonTriggeredRuleboolean否false skipOnFirstAppliedRule: 当规则被触发并且成功执行行为后是否跳过下条规则。skipOnFirstFailedRule : 当判断规则是否触发抛出异常或者触发成功但行为执行后抛出异常是否跳过下条规则。skipOnFirstNonTriggeredRule : 当规则未被触发是否跳过下条规则。rulePriorityThreshold : 如果规则优先级超过默认阈值则跳过下条规则。 参数配置示例如下 RulesEngineParameters parameters new RulesEngineParameters().rulePriorityThreshold(10).skipOnFirstAppliedRule(true).skipOnFirstFailedRule(true).skipOnFirstNonTriggeredRule(true);RulesEngine rulesEngine new DefaultRulesEngine(parameters);通过下面的代码可以获取规则引擎参数 RulesEngineParameters parameters myEngine.getParameters();2、InferenceRulesEngine规则引擎示例 DefaultRulesEngine默认规则引擎的使用示例前面已经有提到过下面我们看下InferenceRulesEngine推理规则引擎的代码示例。 (1) 定义触发条件 import org.jeasy.rules.api.Condition; import org.jeasy.rules.api.Facts;/*** author Nick Liu* date 2023/8/5*/ public class HighTemperatureCondition implements Condition {Overridepublic boolean evaluate(Facts facts) {int temperature facts.get(temperature);return temperature 25;} }(2) 定义规则触发后的执行行为 import org.jeasy.rules.api.Action; import org.jeasy.rules.api.Facts;/*** author Nick Liu* date 2023/8/5*/ public class DecreaseTemperatureAction implements Action {Overridepublic void execute(Facts facts) throws Exception {int temperature facts.get(temperature);System.out.printf(Current temperature: %d, Its hot! cooling air...%n, temperature);facts.put(temperature, temperature - 1);} }(3) 测试用例 import org.jeasy.rules.api.Facts; import org.jeasy.rules.api.Rule; import org.jeasy.rules.api.Rules; import org.jeasy.rules.api.RulesEngine; import org.jeasy.rules.core.InferenceRulesEngine; import org.jeasy.rules.core.RuleBuilder;/*** author Nick Liu* date 2023/8/5*/ public class AirConditionLauncher {public static void main(String[] args) {Facts facts new Facts();facts.put(temperature, 30);// 通过规则构建API定义规则Rule rule new RuleBuilder().name(Air Condition Rule).when(new HighTemperatureCondition()).then(new DecreaseTemperatureAction()).build();Rules rules new Rules();rules.register(rule);// 基于事实重复应用规则的推理规则引擎直到规则不再满足RulesEngine rulesEngine new InferenceRulesEngine();rulesEngine.fire(rules, facts);} }控制台输出结果如下 Current temperature: 30, Its hot! cooling air... Current temperature: 29, Its hot! cooling air... Current temperature: 28, Its hot! cooling air... Current temperature: 27, Its hot! cooling air... Current temperature: 26, Its hot! cooling air...备注可以看到定义的规则会持续触发直到temperature的值为25。
http://www.w-s-a.com/news/543190/

相关文章:

  • 轻淘客 轻网站怎么做手机开发人员选项怎么打开
  • 天津做网站制作公司html网站 下载
  • 哪个网站的课件做的好crm客户管理系统全称
  • 网站建设工作室创业计划书seo是什么职位的简称
  • o2o平台网站开发什么是白帽seo
  • 免费建个人手机网站WordPress 简历库
  • 建网站 是否 数据库阳瘘的最佳治疗方法是什么
  • 知晓程序网站怎么做网站基础维护
  • 兼职做网站赚钱吗图片设计制作哪个软件好手机
  • 做手机旅游网站智慧校园登录入口
  • 莆田网站建设维护国外极简网站
  • 百度怎样收录网站缪斯设计集团
  • 网站建设在开封找谁做wordpress 数据转换
  • 旅游网站开发的流程江苏付费网络推广培训
  • 网站软文标题2018wordpress主题
  • 德清网站设计wordpress免登录发布接
  • 可以做游戏的网站有哪些客户关系管理系统的主要功能
  • 整人关不掉的网站怎么做广东省网站免备案表
  • 网站设计素材edu域名网站
  • 中山学校的网站建设wordpress文章图片显示不出
  • 兰溪城市建设规划网站网站联盟的基本流程
  • 免费推广网站注册入口小说阅读网站怎么建设
  • 新网站怎么做网络推广怎么做企业网站排名
  • jsp商业网站开发网站链接如何做二维码
  • 江苏高校品牌专业建设网站怎么制作网站搜索窗口
  • 北京app建设 网站开发公司织梦网站seo
  • 大学网站 作风建设专题汽车配件外贸出口公司
  • 东莞做网站系统购物网站建设精英
  • 建设vip网站相关视频网站营销建设公司
  • 微站直播平台杭州seo按天计费