数据驱动的业务规则。
我正在使用 SQL SERVER 2005。
我有一个表现
table1(ID,col1,col2,col3,col4);
在我有一个业务逻辑,例如:
If col1 >= 126 and col2 > 1 then col3 = 0
if col1 >=126 and col2 < 1 then col3 = col1+col4
现在我想做的是将所有这些规则存储在数据库中并使其成为数据驱动的。这样做的原因是为了给最终用户更大的灵活性。如果明天业务规则发生变化,最终用户可以通过 GUI 灵活地进行更改。例如。如果明天企业想要将比较值从 126 更改为 200,他们应该能够通过界面进行更改。我尽可能提供灵活性,例如更改列的能力,就像业务应该能够更改规则一样,因此他们可以将新规则更改为 col2,而不是 col1。如果可能的话,他们也可以更改运算符,而不是 >=,他们可以将其更改为 <=。
我想将其更改为更多数据驱动,因此当表中的值发生更改时,我们不需要更改代码。
可以在数据库中做这件事吗?有人可以建议支持该业务规则的数据模型是数据驱动的吗?
I am using SQL SERVER 2005.
I have a table
table1(ID,col1,col2,col3,col4);
Now I have a business logic like:
If col1 >= 126 and col2 > 1 then col3 = 0
if col1 >=126 and col2 < 1 then col3 = col1+col4
Now what I am trying to do is store all these rules in database and make it data driven. THe reason for that is to give the end user more flexibility. If tomorrow the business rules changes, end user have the flexibility to change it through the GUI. For eg. if tomorrow the business wants to change the comparision value from 126 to 200 they should be able to change that through the interface. As far as possible I am trying to give flexibility like ability to change columns too like business should able to change the rule so instead of col1 they can change new rules to col2. and if possible they can also have the ability to change the operators too instead of >= they can change it to <=.
I want to change it more data driven so when the value is changes in the table we don't need to change the code.
Is it possible to do this thing in database? Can someone suggest the data model that supports this business rules to be data driven?
不要将代码存储在数据库中。数据库是用来存储数据的。代码是为了代码。
请参阅内部平台效应反模式。
Maaaybe 您可以将 126 和 200 之类的值存储在数据库中,但我会将它们放在配置文件中。但是,一旦用户需要如此多的灵活性,以至于您必须为他们设计数据驱动的业务规则引擎,那么您就完全是在重新发明轮子。
在以下方面这对您来说将是一场噩梦:
更新:有一些业务规则平台,例如 Drools,但这些平台应该有自己的语言来执行业务规则。 SQL 并不是执行此操作的最佳语言。
Do not store code in the database. The database is for data. Code is for code.
See the Inner-Platform Effect antipattern.
Maaaybe you could store values like your 126 and 200 in the database, but I'd put them in a config file. But once the users want so much flexibility that you have to design a data-driven business rules engine for them, you're totally reinventing the wheel.
It'll be a nightmare for you in the following ways:
Update: there are business rules platforms such as Drools, but these should have their own language for executing business rules. SQL is not the best language to do that.