Loading

构建一个简单的策略树

规则树

平时进行业务开发的时候,对于某些业务有着一系列的规则流程,采用规则引擎就可以只改变规则树不需要改变代码

构建一个简单的策略树

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;

拓扑出的结构为

posted @ 2023-09-01 17:24  花园SON  阅读(113)  评论(0编辑  收藏  举报