【问题标题】:Store and query Business rule存储和查询业务规则
【发布时间】:2012-07-04 16:51:49
【问题描述】:

我有关于业务规则的问题。让我们有一个实体帐户,其中包含我们定义业务规则的一些属性(金额、名称、类型等)。

我将我的规则存储在数据库表中,如下所示

Rule_id | Field | Operator | value . 

规则可以是,amount > 1000, name ="abc", type="x" 等。 规则被分组并映射到用户。

帐户是在系统中创建的,必须由管理员批准。当管理员根据他的规则集登录时,管理员应该看到相关帐户。

如果管理规则集金额>500,那么任何小于 500 的帐户都不会显示给他。

我的问题是在数据库中实现它的最佳方式,如何查询以便可以根据底层规则集获取相关帐户。

【问题讨论】:

    标签: sql oracle tsql business-rules


    【解决方案1】:

    创建一个类似这样的用户表

    用户

     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
    

    【讨论】:

      【解决方案2】:

      您所描述的与 Oracle 的细粒度访问控制(又名虚拟专用数据库)非常相似。这主要是一种安全工具,但它可用于执行通用业务规则。 Find out more.

      即使您选择不使用 FGAC(或者因为您没有企业版而无法使用),它也会为您提供一些有关如何实施解决方案的提示:使用 sys_context 和命名空间来保存规则,并使用视图引用sys_context 函数来执行它们。

      【讨论】:

        猜你喜欢
        • 2020-05-16
        • 2010-12-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多