逻辑引擎介绍
逻辑引擎,是这样一种程序,它能够去处理逻辑表达式,它还能够依据用户所输入的表达式,计算出该表达式的值。在实际应用里头,逻辑引擎通常是被运用在处理规则引擎、决策系统、业务规则配置等这些领域当中,有着广泛的应用前景。
原理与核心功能描述基础原理
以下是JVS逻辑引擎的一般实现原理:
定义规则:首先而言,得去定义出一组规则,这组规则把在特定状况下所要执行的操作给描述出来了。规则一般是由条件和操作构成的。条件是个布尔表达式,用来查验输入是不是符合规则。操作是一组指令,用于在规则得以满足之际去执行。规则匹配:一旦规则给定义好了,那JVS逻辑引擎会把输入和规则做匹配。要是输入满足规则的条件,那么这条规则就会被触发。规则执行:当规则被触发之时,JVS逻辑引擎会去执行该规则的操作。操作能够充当任何有效的指令,像是输出消息,或者更新数据库,又或者调用其他函数。结果输出:最终,JVS逻辑引擎会给出执行结果。这能够是任何有效的输出,比如消息,或者日志,再或者其他数据。
在JVS逻辑引擎里头,规则借助编程语言予以定义,以下呈现的是一个示例规则定义的代码块。
@Service
@AllArgsConstructor
@Rule(value = "生成唯一ID",
group = RuleGroup.工具插件,
explain = "生成唯一ID",
test = true,
returnType = ClassType.文本,
// iconUrl = "rule-ziyuan",
testShowEnum = TestShowEnum.TEXT
)
public class IdNumberServiceImpl implements BaseCustomFunctionInterface {
@Override
public Object execute(Object o, Map params) {
return IdWorker.get32UUID();
}
}
于这个示例里头,界定了节点 ,以及节点功能 ,其作用是去生成一个32位的uid。这仅仅是一个简易的示例 ,而实际的规则能够为更为繁杂且灵活。
功能架构说明
逻辑引擎整体功能结构图如下所示:
如上图所示系统发起逻辑引擎的调用有三种方式:
1、从对应页面,发起相关功能,此功能提前对接逻辑引擎,之后,通过业务网关,触发逻辑的执行。
2、对端系统通过api调用发起
3、系统支持通过定制器触发逻辑。
从整体来看,逻辑引擎的核心架构被切分为这三大部分,其一为逻辑执行器,其二是数据处理模块,其三乃基础管理模块。
逻辑执行模块涵盖这些功能,有逻辑查找功能,有图形化计息功能,有节点处理功能,有参数构建功能,有路由判断功能,有推理执行功能,还有数据引入绑定功能。
数据处理模块涵盖,节点设计数据的加载,动态参数的加载,公式数据的加载,扩展节点数据的加载等。
其中,基础管理模块涵盖了这些功能,有逻辑进行设计的数据存储管理,有针对定时任务的管理,有关于扩展组件的管理,还有执行的日志管理,也包括执行的日志分析。
技术栈

有着这样一个情况,JVS逻辑引擎它是以java语言作为运用基础,借助spring cloud来进行编写创作、从而形成的一个工具,其详细技术栈展列如下:
业务与功能解耦
业务与功能的解耦是逻辑引擎基础的设计思想。
大致的理解是,代码里存在着各部分关联程度过高的状况,要把可变的业务规则同相对固定的功能分离开来,凭借标准的调用达成。
解开耦合的关键其实存在于两个不同的方面之中,其中的第一个方面是把业务执行的整个过程进行抽象化处理,从而使固定的功能能够与存在变化可能性的业务逻辑得以明确区分;而第二个方面则是针对如何进行触发展开相应的设计。
选出一个众人都遭遇过的典型耦合场景,用户注册变成成功状态之后,要开展发送短信通知或者邮件通知的行为,把用户注册逻辑跟发送短信通知或者邮件通知的逻辑放置在一起,这就是一种耦合现象,要是短信功能或者邮件功能出现异常状况,整个用户注册功能就会出现异常,会造成不良的用户体验,除此之外的缺点是维护起来很复杂,不方便进行拓展。把业务逻辑和功能性逻辑予以拆分开来,这就属于解耦。
在进行解耦的这个方面,其核心所展现出来的表现,便是怎样去达成关联动作事件。并且呢,为了能够使得逻辑引擎拥有更为便捷、更为广泛的使用情况,它是需要更多的场景来促使逻辑配置的结果被触发的。就如同下方所呈现的图那样:
API触发:
定时任务触发:
下期预告:jvs逻辑引擎的规则推理与判断(函数)
在线演示示例:网址为https://frame.bctools.cn/。