行和单元格

在决策表中,行的单元格中的值定义规则的条件和操作。

通过将行添加到表,并在条件和操作的单元格中输入值来创建规则。 在决策表中运行规则时,决策引擎通常逐行运行规则,从第一行到最后一行。 无论执行模式RetePlus,顺序和快速路径)如何。

但是,如果决策表具有绑定到工作内存或生成器的定义,那么可更改规则运行的顺序。 对于快速路径和顺序,决策引擎首先运行工作内存中第一个对象的所有行,然后传递到下一个对象。 使用RetePlus,引擎会运行所有对象的所有行,这些对象按行号从第 1 行开始向下排序。

  成绩 贷款金额 需要保险 保险费率
最小值 最大值
1 A 100000 300,000 true 0.001
2 A 300,000 600,000 true 0.003
3 B 600,000 900,000 true 0.005

分区

对于给定条件,可以对具有相同值的一组连续行进行分组。 在这种情况下,分组值右边的单元格是同一分区的一部分。 缺省情况下,表的第一列中的所有单元格都属于同一分区。

注: 如果使用的是具有从右到左方向的编辑器,那么分区包含在分组值左侧的单元格中。

Rule Designer中,通过合并单元格来对其进行分组。

在下表中,行 1 和 2 的 A 级单元格分组为一个单元格。 因此,对应于贷款金额的单元格将成为同一分区的一部分。

  成绩 贷款金额 需要保险 保险费率
最小值 最大值
1 A 100000 300,000 true 0.001
2 300,000 600,000 true 0.003

您可以按如下所示来理解这两个规则:

  • 规则 1

    如果
       all of the following conditions are true:
          - the loan grade is A
          - the amount of loan is between 100000 and 300000
    那么
       -将所需保险设置为 true
       -将贷款利率设置为 0.001
  • 规则 2

    如果
       all of the following conditions are true:
          - the loan grade is A
          - the amount of loan is between 300000 and 600000
    那么
       -将需要的保险设置为 true
       -将贷款利率设置为 0.003

不能仅根据行具有相同值这一事实来派生分区。 在下表中,我们添加了与其他行具有相同等级值的行。 由于其等级值未与其他等级一起分组,因此将为贷款金额创建新分区,并且现有分区保持不变。

  成绩 贷款金额 需要保险 保险费率
最小值 最大值
1 A 5 万 100000 false 0.001
2 A 100000 300,000 true 0.001
3 300,000 600,000 true 0.003

以下示例显示了具有多个分区的更大表。 单元格ABGrade列中的每个列都有一个单元格分区。Amount of loan列。 这意味着如果贷款请求具有 A 级,那么根据贷款金额,可能会应用规则 1-4 之一。 例如,在此处,金额的可能值被划分为以下范围: 等于或小于 100000 , 100000-300000 , 300000-600000 以及超过 600000。 这些范围在 A 级右侧的单元格中进行测试。

  成绩 贷款金额 需要保险 保险费率
最小值 最大值
1 A < 100,000 false
2 100000 300,000 true 0.001
3 300,000 600,000 true 0.003
4 ≥ 600,000 true 0.005
5 B < 100,000 false  
6 100000 300,000 true 0.0025
7 300,000 600,000 true 0.005
8 600,000 800,000    
9 ≥ 600,000 true 0.0075

表中每个编号的行仍然形成一个规则。 分区有助于比较具有类似条件的规则,并查找规则值之间的重叠和差距。

在条件列中,可以更改特定单元格的运算符。 可以使用 is between <min> and <max> 运算符来定义该列,此运算符用于大多数行,并且可以覆盖分区的最后一行的此运算符,以将所有其余值与 more than <min> 运算符相匹配。 由于这些运算符不需要相同数目的参数,因此列可能根据行显示不同数目的子列。

空单元格

一行可包含空的单元格。 如果空单元格在条件列中,并且该行中至少有一个条件,那么将忽略与空单元格相关联的条件。 在这种情况下,将对其右侧的下一个单元格或分区 (如果有) 进行求值。 如果某行仅包含条件列中的空单元格,那么该规则不适用,并且将忽略整个行,即使操作列中存在操作也是如此。

下表说明了包含空单元格的不同行:
  • 在第 3 行中,决策基于等级和贷款持续时间。 将忽略贷款金额。
  • 在第 4 行中,决策仅基于等级。
  • 将忽略行 5 ,因为它不包含任何条件。
  成绩 贷款金额 贷款期限 需要保险 保险费率
最小值 最大值
1 A 100000 300,000 12 个月 true 0.001
2 A 300,000 600,000 24 true 0.003
3 A   12 个月 true 0.008
4 B       true 0.004
5         false 0.005

如果空单元格位于某个操作列中,那么将忽略该操作单元格。 在下表中,第一个规则未设置保险费率。

  成绩 贷款金额 需要保险 保险费率
最小值 最大值
1 A < 100,000 false
2 100000 300,000 true 0.001
3 300,000 600,000 true 0.003
4 ≥ 600,000 true 0.004

否则单元格

您可以使用Otherwise以收集分区中尚未覆盖的所有值。

否则,单元格的行为会在空单元格存在时发生更改。 建议不要在同一分区中同时使用其他单元格和空单元格,因为这可能会产生重叠并使表难以理解。

否则单元格的含义遵循以下原则:
  • 如果分区包含 otherwise 单元格和具有值的单元格,那么 otherwise 单元格将应用于尚未由分区中的其他单元格覆盖的值。
  • 如果一个分区包含一个单元格、空单元格和有值的单元格,则首先计算第一个值之前有空单元格的行,然后计算所有有值的单元格,最后计算其他单元格。 最后,在有值的第一单元格之后的空行将在其他情况下进行评估。
  • 如果分区包含 otherwise 单元格而不包含其他单元格,那么 otherwise 单元格将变得不相关并被忽略。
  • 如果分区包含 otherwise 单元格,并且其所有其他单元格都为空,那么 otherwise 单元格将变得不相关并被忽略。

在下表中,Otherwise单元格收集 100000 之前和 600000 之后的所有值:

  成绩 贷款金额 需要保险 保险费率
最小值 最大值
1 A 100000 300,000 true 0.001
2 300,000 600,000 true 0.003
3 否则 true 0.004

您按如下所示阅读三条规则:

  • 规则 1

    如果
       all of the following conditions are true:
          - the loan grade is A
          - the amount of loan is between 100000 and 300000
    那么
       -将所需保险设置为 true
       -将贷款利率设置为 0.001
  • 规则 2

    如果
       all of the following conditions are true:
          - the loan grade is A
          - the amount of loan is between 300000 and 600000
    那么
       -将需要的保险设置为 true
       -将贷款利率设置为 0.003
  • 规则 3

    如果
       all of the following conditions are true:
          - the loan grade is A
          -贷款金额在 30 万至 60 万之间,这是不正确的。
    那么
       -将需要的保险设置为 true
       -将贷款利率设置为 0.004

第三行是应用的最后一行。 如果行 1 和 2 与条件不匹配,那么将运行第三条规则,并且保险费率将设置为 0.004。

否则,单元格为空

本节包含两个内容相同的表格,用于显示行评估的顺序。

在第一个表格中,“等级”列包含空行、数值和“否则”条件:

  成绩 贷款金额 需要保险 保险费率
最小值 最大值
1     ≤50,000 false
2 A   < 100,000 false
3 A 100000 300,000 true 0.001
4 A 300,000 600,000 true 0.003
5 B   < 100,000 false
6 B 100000 300,000 true 0.003
7 B 300,000 600,000 true 0.005
8     ≥600,000 true 0.008
9 否则 100000 300,000 true 0.05
10 否则 300,000 600,000 true 0.07
1100 C   < 100,000 true 0.004
12 个月 C 100000 300,000 true 0.006
13 C 300,000 600,000 true 0.006
14 日 C   ≥600,000 true 0.015
15 日     ≥600,000 true 0.016
根据成绩列中单元格的内容,按以下顺序处理各行:
  1. 第一行,为空。 在第一个有值的行之前,空行会先被计算。
  2. 第 2-7 行和第 11-14 行,包含 A、B 和 C®。
  3. 第9行和第10行包含“否则”条件。
  4. 第8行和第15行是空的。 它们按出现的顺序进行评估,因此第8行排在第15行之前。

下表显示了表1中各行的评估顺序:

  成绩 贷款金额 需要保险 保险费率
最小值 最大值
1     ≤50,000 false
2 A   < 100,000 false
3 A 100000 300,000 true 0.001
4 A 300,000 600,000 true 0.003
5 B   < 100,000 false
6 B 100000 300,000 true 0.003
7 B 300,000 600,000 true 0.005
1100 C   < 100,000 true 0.004
12 个月 C 100000 300,000 true 0.006
13 C 300,000 600,000 true 0.006
14 日 C   ≥600,000 true 0.015
9 否则 100000 300,000 true 0.05
10 否则 300,000 600,000 true 0.07
8     ≥600,000 true 0.008
15 日     ≥600,000 true 0.016