构建一个简单的策略树
规则树
平时进行业务开发的时候,对于某些业务有着一系列的规则流程,采用规则引擎就可以只改变规则树不需要改变代码
构建一个简单的策略树
rule_tree,rule_tree_node,rule_tree_node_line 三张表构建规则树
分别是 规则树表,里面是所有的规则树,树节点表,该表内有treeid字段与rule_tree中的规则树对应,主要描述节点的类型,表示该节点是根茎节点还是果实节点,只有果实节点上才有node_value表示果实的值也就是活动id,且只有根茎节点上才有rule_key表示该节点或开启两个分支,rule_key是判断两个分支的依据 如若值为性别,表示该节点的产生分支的依据是性别,。 树指向线表 用于描述从根茎节点发起的分支的走向信息,该表内有treeid字段与rule_tree中的规则树对应,node_id_from表示该线的来源是哪个节点,node_id_to表示指向哪个节点,通过rule_limit_type与rule_limit_value来共同决定改条线的具体判定规则 如rule_limit_type为1 rule_limit_value为男就表示该条线的规则是等于男
CREATE TABLE `rule_tree_node` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`tree_id` int DEFAULT NULL COMMENT '规则树ID',
`node_type` int DEFAULT NULL COMMENT '节点类型;1子叶、2果实',
`node_value` varchar(32) DEFAULT NULL COMMENT '节点值[nodeType=2];果实值',
`rule_key` varchar(16) DEFAULT NULL COMMENT '规则Key',
`rule_desc` varchar(32) DEFAULT NULL COMMENT '规则描述',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=123 DEFAULT CHARSET=utf8mb3;
CREATE TABLE `rule_tree` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`tree_name` varchar(64) DEFAULT NULL COMMENT '规则树Id',
`tree_desc` varchar(128) DEFAULT NULL COMMENT '规则树描述',
`tree_root_node_id` bigint DEFAULT NULL COMMENT '规则树根ID',
`create_time` datetime(3) DEFAULT NULL COMMENT '创建时间',
`update_time` datetime(3) DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2110081903 DEFAULT CHARSET=utf8mb3;
CREATE TABLE `rule_tree_node_line` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`tree_id` bigint DEFAULT NULL COMMENT '规则树ID',
`node_id_from` bigint DEFAULT NULL COMMENT '节点From',
`node_id_to` bigint DEFAULT NULL COMMENT '节点To',
`rule_limit_type` int DEFAULT NULL COMMENT '限定类型;1:=;2:>;3:<;4:>=;5<=;6:enum[枚举范围];7:果实',
`rule_limit_value` varchar(32) DEFAULT NULL COMMENT '限定值',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb3;
拓扑出的结构为