预订演示
前页 后页

跟踪属性参数Values - 示例

为了帮助您了解从 BPMN 业务流程模型的模拟中生成属性参数信息的功能, Sparx Systems提供了两个示例,您可以在 EAExample模型中探索。这些是:

  • 斐波那契过程 - 一个帮助您熟悉参数跟踪功能的非常简单的示例
  • 汽车维修过程 - 一个更复杂的示例,您可以操作它来了解如何调查现实生活中的过程
在本主题的结尾部分简要讨论了如何使用包含由“真实”分布初始化的参数的基于整数的过程,以及描述时间参数行为示例的部分。

斐波那契示例

这是一个非常简单的递归业务流程,通过十次迭代计算出一系列斐波那契数;您可以通过流程的元素看到属性参数如何在每次迭代中递增。打开示例模型>模型仿真>示例模型 > 斐波那契。

该过程的伪代码如图上的注记元素所示。语句 'print(next)' 将输出数字系列 2、3、5、8、13、21、34、55、89、144。

此流程的 BPSim 配置按此处所述进行设置。

行动

也见

1

在 StartEvent 的“元素控件”选项卡上,将“控件”设置为“ 1 ”,并在“属性”选项卡上创建并初始化属性:

  • ' N ' 作为 '10'
  • '第一'作为' 1 '
  • '第二'作为' 1 '
  • 'n' 作为 '0'

2

现在在“属性”选项卡上为流程中的每个活动定义属性。注记这些属性的值是从Expressions派生的,其组件必须用大括号括起来 - {xxx}。对于活动:

  • next=first+second - 设置属性'next'并将值定义为表达式 {first} + {second}

  • first=second - 设置属性“first”并将值定义为表达式 {second}
  • second=next - 设置属性'second'并将值定义为表达式 {next}
  • n++ - 设置属性'n'并将值定义为表达式 {n} + 1
使用参数值对话框 使用参数值对话框

3

在“条件控件条件元素发出的两个 Sequenceflow 连接器设置“属性参数”。

扩展网关 | loopNode元素和链接到:

  • next=first+控件- 将参数设置为“条件”并将值定义为表达式 {n}<{ N }

  • 控件- 将控件参数设置为“条件”并将值定义为表达式 {n}=>{ N }

4

完成配置后,单击“仿真仿真模拟控制器”对话框中的配置 BPSim上的运行按钮,选择一个标准模拟。

模拟完成后,单击“属性”按钮。

在“BPSim PropertyParameter Values”对话框中,将“Token number”字段设置为“0”,然后单击查询按钮。

5

现在检查在模拟的每次迭代中输入 first=second活动的“下一个”属性的值。单击“按属性分组”选项卡并展开“下一个”项。

值列表很长,因此右键单击列标题并选择“切换过滤器栏”选项。在“属性”列标题下,键入“first=”。这会过滤列表以仅在输入 first=活动时显示属性参数值。

汽车维修示例

这个更复杂的示例基于汽车维修过程的真实模型,其中许多个人客户要求进行维修估算,然后继续维修或拒绝继续;您可以看到属性参数如何随着过程中做出的不同决策而变化。打开示例>模型仿真>汽车进程示例模型。

整个流程如下图所示:

Repair Car活动是一个复合元素,包含以下子流程图:

行动

1

在浏览器窗口中,展开“汽车维修进程”包下的“浏览器工件”子包,双击“场景1 :主流程”。将显示配置 BPSim窗口。在“场景”选项卡上查看“持续时间”字段;这已设置为 2 天 12 小时(即 60 小时)。

2

在窗口左侧的进程层次结构中,展开“开始事件”类别并单击“顾客到达”。选择“控件”选项卡,查看“控件”参数,其值为24分钟;也就是说,每 24 分钟就有一位顾客到达(所以在 60 小时的时间里,有 150 位顾客经过维修店)。

每个客户带着一个或多个需要评估和维修的问题进入维修店。每个客户提出的问题数量可以使用 BPSim 支持的发行版之一随机生成。由于问题编号以离散单位计算(而不是按连续规模测量),我们将使用“整数”分布。如果您为“到达”开始事件选择“顾客属性”选项卡,您将看到“属性”属性值是从平均值为 3 的泊松分布初始化的。

3

现在扩展决定网关“接受?”及其连接器,在流程层次结构中。 'In Estimate概率'有一个控件参数',设置为0.67。替代的“初始概率连接器未接受”设置为控件。也就是说,我们预计平均有三分之一的问题会被客户撤回或不追究。

4

在此过程中,当评估车辆上的问题时,可能会发现另一个问题。

在网关元素列表中,最后一个“未命名元素”有两个路径:“新问题发现”和“未添加问题”。单击每个这些并查看“控件”选项卡; 'New QuestionFound'的'问题'参数设置为0.25,对于'问题概率',设置为0.75。因此,平均而言,每报告和评估四个问题,就会发现一个新问题。

“新发现问题”路径将流程带到“处理新发现问题”活动,这会将要为当前客户处理的问题数量加1 。展开活动组,然后单击“处理新发现的问题”元素和“属性”选项卡。您将看到此处的属性“noOfIssues”具有表达式值 {noOfIssues} + 1

5

当车辆出现问题时,“维修”问题活动会从当前客户需要维修的问题数量中扣除1 。单击活动组中的“修复问题”元素和“属性”选项卡。您将看到此处的属性“noOfIssues”具有表达式值 {noOfIssues} - 1

6

来自“修复问题”活动的值在“还有其他问题?”中测试。网关。

单击“要修复的更多问题”连接器和“控件”选项卡;遵循此路径的条件参数设置为表达式值 {条件} > 0 ;流程在“检查问题”活动之前传递到网关。

同样,如果您单击“No More Issues to Repair”连接器并在“控件”选项卡上,遵循该路径的条件参数设置为表达式值 {条件} =< 0 ,并且流程传递到“修复”完成'结束事件。

现在您已经检查了流程和配置设置,您可以运行模拟并审阅结果。

7

在配置 BPSim窗口,点击运行按钮,然后在“运行仿真仿真控制器”对话框中,再次点击“Standard”模拟(但模拟类型对属性参数没有影响) )。

在“仿真仿真控制器”对话框中,您可以审阅令牌状态(并看到另一个客户在最后一分钟设法进入商店),但很难确切地看到这些汇总数据是如何产生的。单击“属性”按钮可在“属性PropertyParameter Values”对话框中获取详细的属性参数值信息。

8

对话框的左侧是进程中每个元素的属性参数(属性)的最小值和最大值的摘要。例如,对于“顾客到达”元素,“顾客”参数的最小值为 0,最大值为 8,由泊松 (3) 分布生成。

在“令牌编号”字段中,输入一个介于 0 和 150 之间的数字 ( N ),为进入维修店的第 N 个客户选择。单击查询按钮以获取该客户在流程中使用的属性参数值。在两个选项卡中的每个选项卡上审阅结果:

  • 在“按元素分组”选项卡上,查看每个元素中属性的值如何变化;例如,对于客户 24,“noOfIssues”参数由随机分布初始化为 4,并且“检查问题”活动被调用六次,其中三个调用的参数值在循环前被调整为 3到1 ,并且“处理新发现问题”活动被调用两次,参数值都为 3
  • 在“按属性分组”选项卡上,查看参数值如何随着流程循环完成活动而变化,从 4 开始,在 3 和 4 之间多次调整,然后在结束时递减到 0

9

根据需要继续探索结果,选择不同的客户(代币)。您还可以返回到 BPSim 配置并更改参数初始化并添加新参数,或更改决策点,以试验该过程。

在基于整数的过程的模拟中响应实数

在某些情况下,当流程中的活动使用整数运行时,或者当您想查看强制整数值对流程的影响时,您可能需要使用返回“实数”的分布来生成属性参数值。

在这种情况下应用的一种机制是设置条件以避免绝对数字。因此,例如,您可能有一个递减1的计数器,它被初始化为一个“实数”。如果将条件设置为 'value==0' (等于 0)或 'value !=0' (不等于 0),这两个条件可能永远不会分别为True或始终为True ,从而导致无限循环。为避免这种情况,您将使用以下运算符:

'值 > 0'

'值 < 0'

'值> = 0'

'值 <= 0'

另一种机制是编辑BPSim引擎使用的代码模板,截取提供给特定参数的实数并将其替换为整数,如图所示:

  1. 选择“开发 >源代码 > 选项 > 编辑代码模板”功能区选项。
  2. 在代码模板编辑器的“语言”字段中,单击下拉箭头并选择“MDGBPSimExecutionEngineExtension”。
  3. 在 ( Java ) 模板列表中,单击“MDGBPSimExecutionEngineExtension Compute Value”。模板内容显示在“模板”面板中。
  4. 找到这一行:

    double %bpsimPropertyParameterName% = (double) distribution.next();

    将其更改为:

    %如果bpsimPropertyParameterName == "noOfIssues" 或 bpsimPropertyParameterName == "noOfVisitors"%
    双 %bpsimPropertyParameterName% = ( int ) distribution.next();
    //double %bpsimPropertyParameterName% = Math. ceil (distribution.next());
    //double %bpsimPropertyParameterName% = Math. floor (distribution.next());
    //double %bpsimPropertyParameterName% = Math. round (distribution.next());
    % else %
    double %bpsimPropertyParameterName% = (double) distribution.next();
    %结束如果%
  5. 将属性参数名称替换为您自己的属性参数。
  6. 单击保存按钮,关闭代码模板编辑器并重新加载项目。

如前所述,对于每个指定的参数,代码模板将简单地将任何由分布初始化的“实数”替换为整数。如果您愿意,可以改用注释行之一:

  • 数学。 ceil () 将获取“真实”数字并将其转换为下一个最大整数
  • 数学。 floor () 将采用“实数”并将其转换为下一个最小整数
  • 数学。 round () 将取“实数”并根据它是否大于或小于 n.5 向上或向下round入

时间参数行为

在 BPSim 配置中,您可以为一个活动设置多个时间参数,例如队列时间和等待时间。您还可以为每个自定义模拟设置结果请求。然而,BPSim 模拟引擎将这些参数组合成一个单一的“处理时间”量。

考虑示例模型中的简单模型时间参数(示例模型>模型仿真>示例模型>时间参数),如下图所示:

Time Parameters, Business Process Simulation in Sparx Systems Enterprise Architect

如果双击 Artifact2元素,将显示配置 BPSim窗口。单击图中的 Activity1元素以展开活动组,在对话框左侧的层次结构中选择 Activity1,并显示配置中元素的第一个选项卡“时间”,如图所示。

注记在上面的面板中有七个系统提供的“时间”参数,它们的初始值依次为 - 1和 64 分钟(64 分钟为1小时)和 4 分钟)。注记在下面的面板中,每一个都有一个参数的平均运行时间值的结果请求。

点击运行按钮,在“运行仿真控制器”对话框中点击运行按钮,选择“标准仿真”。模拟被配置为循环通过该过程一次。模拟完成后,点击“打开结果”按钮,在“BPMN仿真报告视图”上单击鼠标右键,选择“仅显示非空项”选项。对于设置了参数的 Activity1元素,这将为您提供以下结果:

所有这些导出的结果都是 127 分钟,即原始七个“时间”参数的初始值之和。各个参数不单独处理。

如果您返回“仿真仿真控制器运行”对话框并单击“仿真仿真运行”按钮,这次选择“仿真”,“打开结果”按钮将显示“BPMN仿真报告视图”。在配置中,结果请求是针对七个参数的平均值。在模拟的报告视图中,您只能看到单个聚合参数 ProcessingTime 的平均值为 127 分钟。