规则引擎

规则引擎

之前为一家公司设计过规则引擎,现在把这个东西整理一下。对于现在很多商用软件开发本质为对于规则的一种软件化开发,对规则的实现,通过定义一个规则引擎可以更快更方便的实现标准业务下的业务流程,简化开发过程保证了绝大部分业务流程可以通过配置完成。

 

一、概要

    因为公司业务需求,需要开发一种灵活的统一配置的平台,方便公司快速部署规则,为解决这个问题决定开发一套规则引擎来满足需求,规则引擎包含:规则路由,规则容器两部分组成。

规则路由:负责对传入参数进行规则判断,最终路由到目标处理容器中,其本质是一个二叉树表。

规则容器:负责处理规则路由传入的数据,并返回处理结果。

 

二、数据库设计

设计上包含:规则主体表,规则入参表,规则路由表

规则主体:用于存放规则相关描述信息

规则入参表:存放此规则需要的入参

规则路由表:以二叉树结构,存放入参规则(支持入参>,=,<,包含等逻辑)并指定下一层规则流向

 

三、程序设计

程序设计使用,多个独立的job进行驱动,其中包括:

驱动引擎:部分规则需要定时检查,所以设计驱动引擎处理

规则路由:规则路由向外开发规则端口,通过传入的参数判断最终调用服务(有2种返回方式,方式1:直接返回可以处理此结果的目标服务url,方式2:直接调用处理规则的服务,并返回结果)

规则容器:用于存放规则具体处理的服务容器

 

四:程序执行流程

1)传入规则后处理流程
驱动引擎首先调用规则路由,并得到路由规则最终结果,之后通过最终结果调用处理服务

规则引擎

 

2)规则判断处理流程

通过规则驱动引擎,按照规则要求调用规则引擎入口,规则引擎通过判断入参参数,使用在路由规则表中存放的规则判断此参数是否满足条件,并判断下一步参数判断流向,最终成找到最终服务则返回,否则返回失败。

规则引擎