前页 | 后页 |
跟踪属性参数Values - 示例
为了帮助您了解从 BPMN 业务流程模型的模拟中生成属性参数信息的功能, Sparx Systems提供了两个示例,您可以在 EAExample模型中探索。这些是:
- 斐波那契过程 - 一个帮助您熟悉参数跟踪功能的非常简单的示例
- 汽车维修过程 - 一个更复杂的示例,您可以操作它来了解如何调查现实生活中的过程
斐波那契示例
这是一个非常简单的递归业务流程,通过十次迭代计算出一系列斐波那契数;您可以通过流程的元素看到属性参数如何在每次迭代中递增。打开示例模型>模型仿真>示例模型 > 斐波那契。
该过程的伪代码如图上的注记元素所示。语句 'print(next)' 将输出数字系列 2、3、5、8、13、21、34、55、89、144。
此流程的 BPSim 配置按此处所述进行设置。
节 |
行动 |
也见 |
---|---|---|
1 |
在 StartEvent 的“元素控件”选项卡上,将“控件”设置为“ 1 ”,并在“属性”选项卡上创建并初始化属性:
|
|
2 |
现在在“属性”选项卡上为流程中的每个活动定义属性。注记这些属性的值是从Expressions派生的,其组件必须用大括号括起来 - {xxx}。对于活动:
|
使用参数值对话框 用户接口组件 |
3 |
在“条件控件条件元素发出的两个 Sequenceflow 连接器设置“属性参数”。 扩展网关 | loopNode元素和链接到:
|
|
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 个客户选择。单击查询按钮以获取该客户在流程中使用的属性参数值。在两个选项卡中的每个选项卡上审阅结果:
|
9 |
根据需要继续探索结果,选择不同的客户(代币)。您还可以返回到 BPSim 配置并更改参数初始化并添加新参数,或更改决策点,以试验该过程。 |
在基于整数的过程的模拟中响应实数
在某些情况下,当流程中的活动使用整数运行时,或者当您想查看强制整数值对流程的影响时,您可能需要使用返回“实数”的分布来生成属性参数值。
在这种情况下应用的一种机制是设置条件以避免绝对数字。因此,例如,您可能有一个递减1的计数器,它被初始化为一个“实数”。如果将条件设置为 'value==0' (等于 0)或 'value !=0' (不等于 0),这两个条件可能永远不会分别为True或始终为True ,从而导致无限循环。为避免这种情况,您将使用以下运算符:
'值 > 0'
'值 < 0'
'值> = 0'
'值 <= 0'
另一种机制是编辑BPSim引擎使用的代码模板,截取提供给特定参数的实数并将其替换为整数,如图所示:
- 选择“开发 >源代码 > 选项 > 编辑代码模板”功能区选项。
- 在代码模板编辑器的“语言”字段中,单击下拉箭头并选择“MDGBPSimExecutionEngineExtension”。
- 在 ( Java ) 模板列表中,单击“MDGBPSimExecutionEngineExtension Compute Value”。模板内容显示在“模板”面板中。
- 找到这一行:
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();
%结束如果% - 将属性参数名称替换为您自己的属性参数。
- 单击保存按钮,关闭代码模板编辑器并重新加载项目。
如前所述,对于每个指定的参数,代码模板将简单地将任何由分布初始化的“实数”替换为整数。如果您愿意,可以改用注释行之一:
- 数学。 ceil () 将获取“真实”数字并将其转换为下一个最大整数
- 数学。 floor () 将采用“实数”并将其转换为下一个最小整数
- 数学。 round () 将取“实数”并根据它是否大于或小于 n.5 向上或向下round入
时间参数行为
在 BPSim 配置中,您可以为一个活动设置多个时间参数,例如队列时间和等待时间。您还可以为每个自定义模拟设置结果请求。然而,BPSim 模拟引擎将这些参数组合成一个单一的“处理时间”量。
考虑示例模型中的简单模型时间参数(示例模型>模型仿真>示例模型>时间参数),如下图所示:
如果双击 Artifact2元素,将显示配置 BPSim窗口。单击图中的 Activity1元素以展开活动组,在对话框左侧的层次结构中选择 Activity1,并显示配置中元素的第一个选项卡“时间”,如图所示。
注记在上面的面板中有七个系统提供的“时间”参数,它们的初始值依次为 - 1和 64 分钟(64 分钟为1小时)和 4 分钟)。注记在下面的面板中,每一个都有一个参数的平均运行时间值的结果请求。
点击运行按钮,在“运行仿真控制器”对话框中点击运行按钮,选择“标准仿真”。模拟被配置为循环通过该过程一次。模拟完成后,点击“打开结果”按钮,在“BPMN仿真报告视图”上单击鼠标右键,选择“仅显示非空项”选项。对于设置了参数的 Activity1元素,这将为您提供以下结果:
所有这些导出的结果都是 127 分钟,即原始七个“时间”参数的初始值之和。各个参数不单独处理。
如果您返回“仿真仿真控制器运行”对话框并单击“仿真仿真运行”按钮,这次选择“仿真”,“打开结果”按钮将显示“BPMN仿真报告视图”。在配置中,结果请求是针对七个参数的平均值。在模拟的报告视图中,您只能看到单个聚合参数 ProcessingTime 的平均值为 127 分钟。