我有与业务规则有关的问题。让我们有一个实体账户,其中包含我们定义业务规则的一些属性(金额,名称,类型等)。
我将规则存储在数据库表中,如下所示
Rule_id | Field | Operator | value .
规则可以是,amount > 1000, name ="abc", type="x"
等。
规则被分组并映射到用户。
帐户是在系统中创建的,管理员必须批准它们。当管理员根据其规则集登录时,管理员应该看到相关帐户。
如果管理规则设置的金额> 500,则不会向他显示任何少于500的帐户。
我的问题是在数据库中实现它的最佳方法,如何查询以便根据基础规则集获取相关帐户。
答案 0 :(得分:0)
创建类似这样的用户表
用户
userId | Username | UserType | Rule_id
当用户登录时,使用Rule_id上的规则表加入用户表 并使用像这样的查询生成条件
select 'Select * from Account where '+Field+Operator+value from rules
where Rule_id=1
此查询的结果将为执行相同操作提供另一个sql查询,以获取该用户可访问的帐户
上述查询的结果
Select * from Account where amount>1000
答案 1 :(得分:0)
您所描述的与Oracle的细粒度访问控制(AKA虚拟专用数据库)非常相似。这主要是一种安全工具,但它可用于实施通用业务规则。 Find out more
即使您选择不使用FGAC(或因为您没有企业版而不能),它也会为您提供有关如何实施解决方案的一些提示:使用sys_context和命名空间来保存规则和视图引用sys_context用于强制执行它们。