规则引擎数据库实现的一个设想

看了jbossrules是实现是把规则写在一个文本文件中,然后解析翻译这个文件。规则被分成when .. then..两个部分。这种实现方式的好处是规则的变化、书写很灵活,并且和java代码很容易结合起来,但是问题是规则文件不能由系统的最终用户来编写。
有没有可能把规则用数据库来表达呢,这样就很容易针对这几张表做一个crud的操作,给最终用户一个操作界面就能维护规则了,目前没有这种把规则定义在数据库的规则引擎,不知道有没有,是否是相对于文件形式弊端太多。我的想法如下:
规则分成两部分,在jbossrules中是lhs,rhs,即左手边条件,右手边结果。条件可以理解为某个项目的取值,取值有两种情况:连续值和离散值,比如工资是个连续值,性别是离散值;结果可转化为一个数值,比如打折的折扣规则最终要的结果就是一个折扣比率,如果结果要求的是等级的划分,也可以用数值来编码,比如1代表贵宾客户,2代表普通客户。
这样规则表就分连续规则表和离散规则表两种
连续规则表:
项目        下限        下限开闭        上限        上限开闭        结果
-------------------------------------------------------------------------
工资        1000        开                2000        闭           5
工资        2000        开                3000        闭           10
上面这两条记录表示工资(1000,2000] 积分算5分,工资在(2000,3000]这个区间积分算10分。下限为空时表示没有下限,上限同理。
离散规则表:
项目        取值        结果
-----------------------------
性别        男        5
性别        女        10
上面两条记录表示性别取值是男、女分别积分算5分、10分。
一条规则由N个“项目”组成,这些“项目”就是jbossrules中的fact的度量值,比如工资、性别等等。所以规则表如下:
规则表:
规则id        项目        离散/连续
------------------------------------
1             工资        连续
1             性别        离散
这个规则表示由两个项目组成。当一个业务行为的数据传进来比如一个工资为1800男性客户需要计算他的积分,则把规则id为 1的积分规则所有项目与规则表的项目关联,分别累加每个项目的积分值得到总和。

这种想法可行吗?
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现一个用户一个数据库,可以按照以下步骤进行操作: 1. 用户注册:允许用户创建账户,并获取用户提供的唯一标识符(例如用户名、电子邮件地址)作为数据库的标识。 2. 数据库创建:在用户注册时,为每个新用户创建一个新的数据库。可以使用关系型数据库管理系统(例如MySQL、PostgreSQL)或NoSQL数据库(例如MongoDB)来创建和管理用户数据库。 3. 数据库连接:当用户登录时,根据其唯一标识符连接到对应的数据库。可以使用相关库或框架提供的连接器来建立与数据库的连接。 4. 数据库操作:通过数据库连接器执行各种数据库操作,例如创建表、插入、更新、删除数据等。这样用户就可以在其专属的数据库中执行各种操作。 5. 数据库管理:为了保证安全性和可靠性,需要对用户数据库进行管理和监控。这包括备份和恢复、性能优化、权限管理等。 需要注意的是,实现用户一个数据库需要考虑以下几点: - 数据库隔离:确保每个用户只能访问自己的数据库,而不是其他用户的数据。 - 数据安全:采取适当的安全措施,如加密敏感数据、实施访问控制等,以保护用户数据的安全性。 - 扩展性:在用户数量增加时,要确保系统能够有效地扩展,以支持更多的用户数据库。 - 用户管理:提供用户管理功能,允许管理员创建、删除和管理用户数据库。 以上是一个基本的实现思路,具体的实现细节会根据使用的数据库系统和开发环境而有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值