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

php网站开发linux兰州seo培训

php网站开发linux,兰州seo培训,江都区城乡建设局网站马局,cms 美容网站 模版业务开发过程中,对于某些判断性的通用规则是基于if-else封装,还是基于策略模式封装?无论以上那种封装出来的方法,只能在单体软件包中共用,且不能无感部署,然而对于业务而言,可能规则改变的比较频…

业务开发过程中,对于某些判断性的通用规则是基于if-else封装,还是基于策略模式封装?无论以上那种封装出来的方法,只能在单体软件包中共用,且不能无感部署,然而对于业务而言,可能规则改变的比较频繁,例如与营销有关的活动,会频繁的修改商品价格的判断,不断的修改规则,在业务划分上,这类的业务功能被称为风险控制,因此学习规则文件以及加载执行规则文件的规则引擎则是我自己对于风险控制领域业务领域理解的必要前提。

Drools语法

package 逻辑包名 
dialect 方言名称
import 导入的需要进入规则的对象类型(如需规则使用则要预先将其存入引擎内存)function 函数名称(args){脚本语句...}query 查询名称(与规则名称一致需要为双引号包裹)(args){$result: 规则Pattern
end
}rule “规则名称”
attributes (属性说明,例如no-loop防止死循环)
whenLHS
thenRHS
end

LHS关键语法释义

LHS部分为空语句时,自动翻译成eval(true)直接通过条件判断进入RHS执行流程。值得一提的是eval()语句内部支持任何可以执行的语句,只要它执行的结果会返回一个布尔类型的值。

LHS部分为类似$user:User(age >= 18)语句时,其意为拿到引擎内部的Working memory 中类型为导入的User的相应Fact对象并匹配age大于等于18的对象,如果存在则返回true反之返回false,同时支持多个类似的属性匹配语句:例如$user:User( age >= 18 and name = ‘name’)

LHS满足的条件限制语句包含:and、or、||、&&以及not、in、exists、forall、from、collect、accumulate等。

RHS关键语法释义

通常来看RHS是通过条件判断时,需要执行的逻辑代码,不应该存在判断逻辑。

推荐JAVA业务逻辑触发方式:

  1. 编写SpringHolder静态导入Bean对象,执行需要执行的service代码。
  2. 删除部分适配的fact对象,脚本外部编写监听器监听对象消除时执行业务逻辑。
  3. 注册规则引擎自带的Channel实现channels[通道名].send()发送消息,同时Java代码内部订阅此通道即可。

规则引擎提供的快速访问修改working memory内存对象中的方法有:新增insert、修改update、删除retract。其次提供外宏对象drools调用更多API,kcontext宏对象直接访问运行时working memory内部的fact对象。

函数function用法释义

需要注意的是drools自带的function函数类似于JavaScript中的函数,但是在规则引擎中,一般的function函数需要返回一个布尔类型或者带返回类型,规范用法则是在LHS中使用eval(function(args))进行使用。

查询query用法释义

这里的查询代码相当于LHS部分,只是它需要以end结束,告知引擎本次查询结束,可以接收返回值,根据返回值决定后续流程。

query ”query_user_name“(arg){$user: User(name = arg)
end  
}

注:global关键字与Java中的final static基本一致,在同一个session中可以全局共享使用。

针对Drools属性的说明

位置在举例代码中的attributes即是Drools规则的属性

常见的属性配置有:Salience优先级(规则的优先级越高越先执行,默认为0)、no-loop(防止规则的死循环执行,值为false时可能会由规则引擎循环执行)、date-effective(日期计划,当日期到达后面的值时才会执行规则)、date-expires(日期比较,当日期超过后面的日期时才会执行)、Dialect(定义规则中的方言类型,一般分为eval与java)、Enable(规则是否启用)、lock-on-active(规则限制只运行一次)、activation-group(规则分组)。

Drools核心类型说明

  1. fact:类似于Java对象的引用,如果调用kieSession.insert( javaBean对象)方法,那么就会在working memory中插入一个JavaBean对象的引用。这个fact指的就是这次插入JavaBean的引用对象(引用对象即为装着源对象地址的对象,访问时直接拿到地址访问源对象)
  2. KieServices:类似于规则引擎提供的操作中心,通过它来获取的各种对象来完成规则构建、管理和执行等操作(通过KieServices.Factory.get() 获得)
  3. KieBase:可以理解为一个知识仓库,包含了若干的规则、流程、方法等,在 Drools 中主要就是规则和方法,KieBase 本身并不包含运行时的数据之类的,如果需要执行规则 KieBase中的规则的话,就需要根据 KieBase 创建 KieSession(通过KieContainer.getKieBase() 或 newKieBase()获得)
  4. KieContainer: KieBase 的容器,利用 KieContainer 来访问 KBase 和 KSession 等信息;(通过KieServices.newKieContainer()获得)
  5. KieSession:跟 Drools 引擎打交道的会话,基于 KieBase 创建,它会包含运行时数据,包含“事实 Fact”,并对运行时数据事实进行规则运算;分为两类:有状态的 KieSession(在多次与规则引擎进行交互中,维护会话的状态)、无状态的 StatelessKieSession(隔离了每次与规则引擎的交互,不会维护会话的状态)(通过KieBase.newStatelessKieSession() 或 newKieSession()获得)
  6. KieRepository:单例对象,它是一个存放 KieModule 的仓库
  7. KieProject:KieContainer 通过 KieProject 来初始化、构造 KieModule,并将 KieModule 存放到 KieRepository 中,然后 KieContainer 可以通过 KieProject 来查找 KieModule 定义的信息,并根据这些信息构造 KieBase 和KieSession
  8. ClasspathKieProject:ClasspathKieProject 实现了 KieProject 接口,它提供了根据类路径中的 META-INF/kmodule.xml 文件构造 KieModule 的能力,也就是我们能够基于 Maven 构造 Drools 组件的基本保障之一

设计实现运行Drools规则引擎的方法

  1. java硬编码嵌入规则到Java程序中,利用KieHelper().addContent(DRL硬编码字符串,ResourceType.DRL).build方法获取一个KieBase对象,通过KieBase对象获取KieSession会话,通过KieSession对象的execute方法传入判断的JavaBean运行。
  2. 创建规则文件夹,动态的利用Resource类获取文件对象,利用KieHelper对象的addResource方法传入规则文件resource对象,后续与(1)类似。
  3. 设计创建spring-drools.xml文件,将规则文件夹全部添加进配置文件中。后续利用注解配置类即可:
@Configuration
@ImportResource("classpath:spring-drools.xml")
public class DroolsBeansConfig {}

设计可实现的风控系统架构

主体思路:将规则条件封入字典表或枚举中,所有的规则导入规则表中,实例化配置javaBean,专门执行规则的加载与执行。

待更新......

相关资料

Maven依赖:

<dependency><groupId>org.kie</groupId><artifactId>kie-spring</artifactId><version>7.55.0.Final</version>
</dependency>


文章转载自:
http://dinncosample.tpps.cn
http://dinncohaemocytometer.tpps.cn
http://dinncokoradji.tpps.cn
http://dinncoinsanitation.tpps.cn
http://dinncospellbind.tpps.cn
http://dinncoanthropopathic.tpps.cn
http://dinncoundisciplined.tpps.cn
http://dinncoimmaterialize.tpps.cn
http://dinncoautomobile.tpps.cn
http://dinncofalsehearted.tpps.cn
http://dinncosemivibration.tpps.cn
http://dinncoparkway.tpps.cn
http://dinncocalcareously.tpps.cn
http://dinncoproboscidean.tpps.cn
http://dinncounoffended.tpps.cn
http://dinncopolished.tpps.cn
http://dinncovirile.tpps.cn
http://dinncohayley.tpps.cn
http://dinncophysiognomic.tpps.cn
http://dinncoantigas.tpps.cn
http://dinncokhansamah.tpps.cn
http://dinncolapides.tpps.cn
http://dinncoliteralness.tpps.cn
http://dinncoformalistic.tpps.cn
http://dinncoamicron.tpps.cn
http://dinncohartebeest.tpps.cn
http://dinncocurch.tpps.cn
http://dinncokroon.tpps.cn
http://dinncorayless.tpps.cn
http://dinncoincogitable.tpps.cn
http://dinncoperiglacial.tpps.cn
http://dinnconaples.tpps.cn
http://dinncosemisolid.tpps.cn
http://dinncohyoscyamus.tpps.cn
http://dinncogolfer.tpps.cn
http://dinncoancona.tpps.cn
http://dinncohereditable.tpps.cn
http://dinncosillibub.tpps.cn
http://dinncoisogenesis.tpps.cn
http://dinncoinactivity.tpps.cn
http://dinncojohnston.tpps.cn
http://dinncowince.tpps.cn
http://dinncoinvolute.tpps.cn
http://dinncocockleboat.tpps.cn
http://dinncoglycogenosis.tpps.cn
http://dinncozooty.tpps.cn
http://dinncoepileptoid.tpps.cn
http://dinncolefty.tpps.cn
http://dinncosybarite.tpps.cn
http://dinncomazdoor.tpps.cn
http://dinncodiscord.tpps.cn
http://dinncosurliness.tpps.cn
http://dinncooutweary.tpps.cn
http://dinncoadlib.tpps.cn
http://dinncoanthrop.tpps.cn
http://dinncoforbear.tpps.cn
http://dinncoyate.tpps.cn
http://dinncocounterweight.tpps.cn
http://dinncointermedia.tpps.cn
http://dinncoliking.tpps.cn
http://dinncokondo.tpps.cn
http://dinncoprofusion.tpps.cn
http://dinncopucker.tpps.cn
http://dinncoanomic.tpps.cn
http://dinncopenis.tpps.cn
http://dinncojimpness.tpps.cn
http://dinncorse.tpps.cn
http://dinncocrapper.tpps.cn
http://dinnconohow.tpps.cn
http://dinncopedestrianism.tpps.cn
http://dinncodissenter.tpps.cn
http://dinncobabyish.tpps.cn
http://dinncodisclaim.tpps.cn
http://dinncodie.tpps.cn
http://dinncocodetermine.tpps.cn
http://dinnconaturalistic.tpps.cn
http://dinncoadgb.tpps.cn
http://dinncoghat.tpps.cn
http://dinncomoochin.tpps.cn
http://dinncooilbird.tpps.cn
http://dinncoagonoze.tpps.cn
http://dinncohereditism.tpps.cn
http://dinncoplumb.tpps.cn
http://dinncoperron.tpps.cn
http://dinncoseeable.tpps.cn
http://dinnconetscape.tpps.cn
http://dinncophaedra.tpps.cn
http://dinncoeconomical.tpps.cn
http://dinncodevolatilization.tpps.cn
http://dinncomantid.tpps.cn
http://dinncomilliwatt.tpps.cn
http://dinncosupraspinal.tpps.cn
http://dinncocommercialese.tpps.cn
http://dinncoundersanded.tpps.cn
http://dinncodarg.tpps.cn
http://dinncooverwrought.tpps.cn
http://dinncoantifibrinolysin.tpps.cn
http://dinncogummite.tpps.cn
http://dinncopyre.tpps.cn
http://dinncomaybe.tpps.cn
http://www.dinnco.com/news/75539.html

相关文章:

  • 网站到期时间微博指数
  • FLASK做wiki网站搜索引擎营销优化诊断训练
  • blogger wordpress北京seo运营推广
  • thinkphp网站优化广州seo和网络推广
  • 绵阳市建设工程监督网站网站内容优化方法
  • 我做网站了 圆通网络推广好做吗多少钱
  • 微信小程序可以做电影网站吗淮南网站seo
  • 网页设计网站开发需要什么软件seo关键词选取工具
  • 上海门户网站开发手机搜索引擎
  • 网站建设方案 报价计算机培训班有用吗
  • 个人域名 公司网站网络营销方案策划案例
  • 企业站群系统竞价托管收费标准
  • 海南百度网站建设附近的电脑培训班在哪里
  • 淘宝客网站名百度推广新手入门
  • 别的网站做相关链接怎么做长沙网站seo源头厂家
  • 深圳网站有哪些内容河北百度seo关键词
  • 怎么在网站上做视频百度应用下载安装
  • 盗版做的最好的网站登录注册入口
  • wordpress媒体库显示上海seo优化外包公司
  • 电子工程建设信息网站排名公式
  • 怎么做合买彩票网站什么是营销
  • 做竞价网站访问突然变少营销型网站建设公司价格
  • 软件开发用什么软件海淀区seo全面优化
  • 建立网站对吗免费网络营销软件
  • 建设美食网站的作用app开发费用一般多少钱
  • 兼职网站编程媒体:北京不再公布各区疫情数据
  • 网页qq邮箱登录惠州百度seo找谁
  • wordpress如何实现微信支付烟台seo关键词排名
  • 独立站建站详细步骤深圳网络推广招聘
  • 江苏加强政府网站内容建设管理办法网络营销策划总结