在应用程序中合并动态规则

时间:2016-05-11 13:56:39

标签: java oracle rule-engine

我正在开发一个Java应用程序,根据客户端设置的规则设置PRODUCT的各种属性。系统应该能够保存客户端定义的规则,并且应该根据规则中定义的条件设置属性。示例规则将如下:

------------RULE1
 IF CLIENT_TYPE='INDIVIDUAL' and SALARY < 5000
       FEECODE = 101
       VALUECODE =102
 ELSE
       FEECODE = 103
       VALUECODE= 100

------------RULE2
  IF CLIENT_TYPE='COMPANY'
        FEECODE = 105
        VALUECODE =302
  ELSE
        FEECODE = 303
        VALUECODE= 402

我将条件和运算符存储在CONDITION表和参数(SALARYCLIENT_TYPEFEECODEVALUECODE等等中)及其在PARAMETERS表中的类别。 IF - ELSE块之间的中间语句存储在单独的表CONDITION_STATEMENT中。 (与第二个答案中定义的表结构类似(不完全):Storing Business Logic in Database

现在我遇到一个问题,即在解雇规则时这些PARAMETERS已填充在内存中(而不是在数据库中),并且每个PARAMETER行为彼此不同。在上面的规则中说,SALARY将填充在一个变量中(在每个方案中并不总是在同一个变量中)和另一个变量中的CLIENT_TYPE。考虑到这一点,如何为所有这些场景编写通用规则引擎?或者我错过了一些东西吗?

表格结构如下:

PARAMETER Table
---------------
PARAM_ID
CATEGORY_ID
PARAMETER
PARAMETER_DESC

CONDITION Table
---------------
RULE_ID
RELATION_OPERATOR
PARAMETER
CONDITIONAL_OPERATOR
VALUE


CONDITION_STATEMENT Table
---------------------
id
RULE_ID
STATEMENT
VALUE

0 个答案:

没有答案