数据库驱动业务规则引擎

标签 database

技术栈:.NET

问题陈述:应用程序有很多业务规则,现有规则的任何更改或新规则的添加都需要整个发布周期(修改代码,然后进行测试和部署)。

要求 [Hard pressed]:业务用户应该能够使用 GUI 动态指定业务规则

探索的选项:

  1. MS BRE,但与 Biztalk 捆绑在一起
  2. .Net 堆栈开源业务规则引擎(如 SRE、Drools.NET、NxBRE)——其中大部分不活跃。

  3. 在数据库中添加规则并为用户提供一个 GUI 来添加/编辑相同的规则,尽管这看起来最有前途我不喜欢动态 sql,因为 sql 注入(inject)和可能的性能影响,更不用说缺少单元测试了覆盖范围和可预见的维护问题。

  4. WF – 未探索但 AFAIK 没有运行时构建器。

  5. 购买商业规则引擎不是一种选择

要求是在线系统,欢迎任何建议。

最佳答案

我已经用特殊表(在 Postgres 中)试验了业务规则

CREATE TABLE acces_to_tables
(
  rule_name name,
  table_name name,
  field_name name,
  field_acc_value integer,
  is_write boolean
)

和通用函数:

 create_access_temp_view(table_name name, in_write_access boolean)

用于在调用 SELECT、INSERT、UPDATE 或 DELETE 之前为当前用户生成具有来自 acces_to_tables 限制条件的数据库表的 TEMP VIEW。

TEMP VIEW 不是通常的解决方案,但工作速度非常快。

关于数据库驱动业务规则引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40583908/

相关文章:

SQL Server - 在这里使用复合主键有什么好处?

asp.net - 我需要编辑 100,000 多个产品

mysql - Wordpress 可以与现有数据库表共存吗?

mysql - 设置 SQL_MODE ="NO_AUTO_VALUE_ON_ZERO";给出一个错误

php - MySQL 更新 PHP 和 JS

mysql - 有没有办法在 mysql 服务器和本地 MS Access 之间同步(双向)表?

python ,SQL : How to update multiple rows and columns in a single trip around the database?

postgresql - 如何使用 Apache Spark 作为 Web 应用程序的后端而不是 Postgres

sql - 安全地传输存储过程

database - 如何使用单引号从 Apache Usergrid 中选择实体