本文是一篇教程,演示了如何使用Signavio Process Manager在Decision Model & Notation (DMN)模型中定义业务规则,然后使用Signavio Workflow Accelerator执行业务规则。DMN为您提供了一种方法,可以在单独的模型中定义业务规则,并防止业务逻辑使业务流程模型变得不必要地复杂。

使用DMN建模业务规则

为了保持简单,在本教程中,您将使用一个简单的价格计算示例。这是业务规则的典型用法,业务规则通常基于大量输入变量计算数值结果。价格计算通常是出了名的复杂,但这个例子只取决于单位价格、单位数量,以及基于单位数量计算的折扣,如DMN模型所示。

在这个模型中,“单价”和“单位数”是输入值。“折扣”是一个使用“单位数量”作为输入的商业决策,而“总价”是另一个同时使用输入值和“折扣”作为输入的商业决策。

在Signavio Process Manager中创建规则模型

首先,打开Signavio Explorer。在“New”菜单中,选择“Business Decision Diagram (DMN 1.1)”选项,创建并打开一个新的DMN模型图。

通过从左侧的“Shape Repository”调色板中拖动“决定”和“输入数据”形状,从图(上面)创建模型。要绘制箭头,请选择形状并拖动出现在形状旁边的小箭头图标,以连接到要连接的形状。

现在您有了一个基本的DMN模型,它显示了输入数据、决策以及它们之间的依赖关系。下一步是为两个输入设置正确的数据类型。

  1. 在图表中选择“单价”输入数据形状。
  2. 打开右侧的“属性”面板。
  3. 将“值域”设置为“数字”。
  4. 将“单位”设置为“货币”
  5. 将“货币单位”改为“欧元”。

对“Number of units”输入重复步骤1-3,将其域设置为“Number”。指定值域使在计算中使用数字成为可能,这是下一步。

添加决策表

现在您已经指定了' Number of units '输入是一个数字,您可以使用它来配置' Discount '决策表。

要将此表添加到编辑器中的DMN模型中,请完成以下步骤。

  1. 在该图中,单击“折扣”形状的左上角的“决策表”图标。
  2. 在“Decision logic: Discount”对话框中,双击“New Output”列标题并将其更改为“Discount”。
  3. 在“折扣”列标题下,双击“文本”标题。
  4. 在“列配置”对话框中,将“值域”设置为“数字”。
  5. 设置“数字单位”为“百分比”,然后点击“保存”。
  6. 在表格的左上角,单击“U”以打开表格配置对话框。
  7. 在表配置对话框中,将命中策略更改为“First(Single)”,因此您可以根据匹配的第一个单位指定折扣。
  8. 双击第1行第一个单元格的左侧,在操作符列表中选择“< (less)”。
  9. 在单元格的右边,双击并输入数字“100”。
  10. 在“折扣”列中,双击并输入百分比“0”。
  11. 在Annotation列中,双击并输入“无折扣”。
  12. 单击“添加新行”并重复步骤8-10以添加剩余的折扣规则,如此屏幕截图所示。

该决策表定义了每个单位数的折扣;表中的每一行都是“规则”。“首次”命中策略,显示为左上角的“f”,这意味着将评估每个规则,直到一个匹配“单位数”输入值。第一场比赛将确定“折扣”,这是该决定的输出值。

注意最后一个规则是“单位数小于或等于1000”,如果前面的规则都不匹配,那么它将与单位数匹配,因此至少有一个规则匹配。

添加基于表达式的规则

计算折扣涉及从表中选择一个折扣规则。但是,要计算总价(包括折扣),您需要配置一个算术表达式。

要根据输入和折扣定义总价格,请配置“总价格”决策以使用表达式。

要将此表添加到编辑器中的DMN模型中,请完成以下步骤。

  1. 在该图中,单击“折扣”形状的左上角的“决策表”图标。
  2. 在“Decision logic: Total price”对话框中,在左侧选择“Literal Expression”。
  3. 使用选择列表将表达式类型从“Free text”更改为“expression”。
  4. 在文本输入框中单击,并从菜单中选择“单元数”变量。
  5. 在文本输入框中,键入' * '(星号)并选择'单价'。
  6. 键入' *(1 - ',选择折扣,并键入')'来完成表达式。
  7. 选择“应用并关闭”保存更改。

DMN模型现在完成,所以您已准备好创建BPMN模型,并将其链接到DMN图。

将业务规则链接到流程模型

要使用“计算总价”DMN模型,您需要将其作为业务规则任务添加到BPMN流程模型中。

创建“发送价格报价”模型爱游戏ayx官方 通过创建一个新的BPMN 2.0带有三个任务序列的图,每个任务具有给定的名称和任务类型。

  1. 计算价格(业务规则)
  2. 检查总(用户)
  3. 发送报价(发送)

将“计算价格”任务链接到DMN模型如下。

  1. 在“属性”面板上,将“任务类型”设置为“业务规则”。
  2. 在“Decision logic”属性值中,选择浏览按钮。
  3. 在“建立链接”对话框中,选择“使用现有的图表”。
  4. 在工作空间中选择“计算总价”DMN模型,然后选择“链接图”。

现在您有一个BPMN进程模型,它链接到DMN业务规则模型,现在已准备好执行。

业务规则执行

要执行“计算总价”DMN模型中的业务规则,您需要执行链接的BPMN模型。

将BPMN模型转移到SignaVIO工作流程加速器

在SignaVio Explorer中,选择“发送价格报价”BPMN模型,并在SignaVIO工作流菜单上,选择“在signavio工作流中执行”。如果您没有看到此菜单,请询问系统管理员将工作区链接到signavio工作流程加速器

在确认对话框中,选择“Transfer”将BPMN模型复制到Signavio Workflow Accelerator:

当模型成功转移时,选择“在Signavio工作流加速器中打开工作流”:

这将在Signavio Workflow Accelerator的流程编辑器中打开模型。

准备流程模型以供执行

当您在Signavio Workflow Accelerator的流程构建器中打开流程时,“Actions”选项卡将显示您在Signavio process Manager中创建的模型。但是,流程还没有准备好执行;您仍然需要添加用于输入和查看流程数据的表单。

首先,选择' Trigger '选项卡,这样您就可以添加一个表单触发器,它将为流程捕获输入数据。

要添加触发器表单,请完成以下步骤。

  1. 在process builder的' Trigger '选项卡上,选择' When a form is submitted '来添加触发器表单。
  2. 在右侧,选择“Money”以添加货币类型字段。
  3. 输入标签“单价”。
  4. 选择“Number”添加第二个字段,并输入“Number of units”标签。

下一步是配置DMN Rule Task输入变量,将两个表单字段映射到业务规则。选择“Actions”选项卡,然后选择“Calculate price”业务规则任务。

在“业务规则”任务的配置面板上,“输入”选项卡显示了DMN模型的两个输入,“单位价格”和“单位数”。对于每个输入,选择输入旁边的字段,然后选择具有相同名称的表单字段。

接下来,使用' Outputs '选项卡配置规则任务将为DMN模型的' Total price '输出创建的流程变量。

' Outputs '选项卡自动将输出映射到具有相同名称的变量,因此您不必在这里更改配置。

接下来,配置“检查总价格”用户任务以显示计算的总价格。

要将“Total price”字段添加到表单中,请完成以下步骤。

  1. 在“流程编辑器”中,选择“用户任务”以打开其配置面板。
  2. 选择“Form”选项卡。
  3. 在右侧,选择现有字段的选择列表,并选择“Total price”将该字段添加到表单中。

最后,在页面的右上角,选择“发布更改”以创建包含表单和业务规则任务映射的进程模型的新版本。现在该过程准备执行。

执行的过程

要执行流程,请在流程构建器的“Versions”选项卡上或在“Processes”列表中,选择“Start new case”。这显示了您之前定义的开始形式,在这里您可以输入“单价”和“单位数量”的值。

在表单中输入值,然后选择' Start new case '创建一个新的' Send price quotation ' case。Signavio Workflow Accelerator自动执行业务规则任务,因此您可以立即检查结果。

在' Send price quotation #1 '案例视图中,选择' Check total price '任务来打开任务视图。任务视图显示了包含“Total price”字段的表单,该字段由业务规则执行的结果填充。

恭喜,你已经完成了!剩下要做的就是选择“完成”来完成任务,然后执行“发送报价”任务来发送电子邮件。不过,不要担心:如果你没有配置邮件任务,它实际上不会发送电子邮件到任何地方。

您现在已经看到了使用Signavio的业务转换套件定义和执行业务规则的端到端示例。如果你还没有接触到Signavio的产品,爱游戏ayx网 了解如何访问用于建模和执行的集成业务流程和规则。

发布日期:2016年9月22日,最后修改日期:2020年11月13日