前页 后页

汽车维修过程

本示例模拟了汽车维修店的流程。 BPSim配置:

  • 使用通过分发初始化的属性参数为每个客户生成随机数量的问题
  • 应用概率来模拟:
    -是否接受初步估计
    -维修期间是否会发现新问题
  • 在每个任务中增加或减少属性参数的值
  • 在网关发出的序列的条件下使用属性参数的值
  • 模拟给定开始时间和持续时间的客户到达

创建BPMN模型

创建主要流程

Example Business Process diagram for simulation in Sparx Systems Enterprise Architect

  • 创建客户到达的开始事件
  • 向目标抽象任务添加序列流活动进行估算
  • 将序列流添加到目标专用网关是否接受?
  • 将序列流添加到:
    - 不接受目标结束事件初始估算
         -目标子流程维修车
  • Repair Car中 ,向目标抽象任务中添加序列流活动接受付款
  • 将序列流添加到目标最终事件客户离开商店

创建子流程修复车

Example Business Process diagram for simulation in Sparx Systems Enterprise Architect

  • 创建开始事件开始维修
  • 将序列流添加到目标互斥网关融合Gateway1
  • 将序列流添加到抽象任务活动检查问题
  • 向专有网关汇聚网关2添加序列流
  • 向专有网关添加序列流是否发现新问题?
  • 将序列流添加到:
    -目标抽象任务“活动处理新发现的问题” ,然后将序列流添加回
    汇聚Gateway2
          -目标抽象任务修复问题 ,然后将序列流添加到目标专用网关
    还有其他问题吗?
  • 来自网关还有其他问题吗?将序列流添加到:
    -目标结束事件维修已完成
         - 汇聚Gateway1

配置BPSim

任务

描述

工件和包装

  • 打开“配置BPSim”窗口(“模拟>过程分析> BPSim>打开BPSim Manager”)
  • 创建名为IntermediateEvent-Boundary-Error的业务流程模拟工件
  • 选择包含相应的BPMN 2.0模型的包
所有BPMN元素都将被加载到“配置BPSim”窗口中。

开始和持续时间

我们将在一家汽车维修店(其营业时间为9:00 am至5:00 pm)(其为8小时)进行模拟。我们还假设当天下午4:50之后进入的客户将不会得到服务。因此,模拟开始时间为9:00 am,持续时间为7小时50分钟。

在“配置BPSim”对话框的左侧面板上,单击树中的“场景”项; “方案”标签被激活。

  • 在“开始”字段中,选择任何日期,并将时间部分更改为“ 9:00 AM”
  • 将“持续时间”字段设置为“ 0000 007:50:00”(提示:格式为:dddd hh:mm:ss)

客户到达

我们将模拟一个每24分钟到达的客户。第一个客户在9:00 AM到达,最后一个客户在4:36 PM到达(今天下午5:00 PM到达的客户将不再受到服务,因为这受“持续时间”设置的限制)。

使用笔和纸,我们可以计算出有20个客户得到服务(上午9:00到下午4:36 PM = 456分钟,客户数量:456/24 +1 = 19 +1 = 20)。我们稍后将通过仿真结果对此进行验证。

展开“ StartEvent”组,然后选择“ 客户到达” 。单击“控制”选项卡和“新参数”下拉箭头,然后选择“ InterTriggerTimer”。在“值”和“单位”字段中,输入24,然后选择“分钟”(“ 24分钟”)。

属性参数

我们假设每个客户的汽车最初可能会有不同数量的问题。这可以使用随机数生成器反映出来。 BPSim提供了许多发行版以满足您的需求。

在此示例中,我们使用TruncatedNormal分布初始化属性noOfIssues。任务修复问题处理新发现的问题将分别减少和增加noOfIssues的值。

  • 单击客户到达开始事件,然后单击“属性”选项卡
  • noOfIssues覆盖 新属性 ,然后在“值”字段中单击Browse.按钮;显示“参数值”对话框
  • 单击“分发”选项卡,然后选择“ TruncatedNormal”分发类型;在“均值”,“标准差”,“最小”和“最大”字段中,分别输入值2、1、1和1000
重要说明:某些分布(例如“ TruncatedNormal”)返回浮点值,但该属性用作整数。设置属性的类型很重要,尤其是在进行相等性测试时的条件表达式中。例如,几乎不会满足条件表达式getProperty('noOfIssues')= 0,因为noOfIssues是由浮点分布初始化的。

提示:如何自定义属性的类型

创建属性并设置值后,单击工具栏上的“保存”按钮,以使创建的属性名称显示在“属性”选项卡的底部面板中。单击“值类型”下拉箭头,然后选择值“ int”而不是默认的“ double”。

  • 单击“活动修复问题”,然后在“属性”选项卡上,然后使用noOfIssues覆盖 新属性文本。
  • 在“值”字段中,单击Browse.按钮;显示“参数值”对话框
  • 单击“表达式”选项卡,然后在“表达式”字段中,输入{noOfIssues} -1 ;点击确定按钮
  • 单击“活动处理新发现的问题”并在“属性”选项卡上,然后使用noOfIssues覆盖 新属性文本。
  • 在“值”字段中,单击Browse.按钮;显示“参数值”对话框
  • 单击“表达式”选项卡,然后在“表达式”字段中,输入{noOfIssues} +1 ;点击确定按钮

序列流的概率

我们假设1/3的客户不会接受维修的初始估计,而2/3的客户会接受。我们还假设对于1/4的维修,将发现新的问题,而对于3/4的维修,将不会发现新的问题。

展开左侧树中的“网关”组,然后展开“ 接受”?元件。为了:

  • 接受初始估计的序列流,单击“控制”选项卡上的“新参数”下拉箭头,然后选择“概率”;在“值”字段中输入0.67
  • 初始估计不接受序列流,单击“控制”选项卡上的“新参数”下拉箭头,然后选择“概率”;在“值”字段中输入0.33
在“网关”组中,展开“ 发现新问题?”。元件。为了:
  • 没有更多问题可修复序列流程,单击“控制”选项卡,然后在“新参数”下拉箭头上,然后选择“概率”;在“值”字段中输入0.75
  • 要修复序列流程,请单击“控制”选项卡上的“新参数”下拉箭头,然后选择“概率”;在“值”字段中输入0.25

序列流条件

我们使用表达式返回布尔值作为序列流的条件,该条件在流的逻辑中起关键作用。

在“网关”组中,展开“ 还有其他问题?”。元件。为了:

  • 要修复序列流程,请单击“控制”选项卡上的“新参数”下拉箭头,然后选择“条件”;在“值”字段中,单击Browse.按钮以打开参数对话框,单击“表达式”选项卡,然后在“表达式”字段中输入{noOfIssues}!= 0
  • 没有更多问题可修复序列流程,单击“控制”选项卡和“新参数”下拉箭头,然后选择“条件”;在“值”字段中,单击Browse.按钮以打开参数对话框,单击“表达式”选项卡,然后在“表达式”字段中键入{noOfIssues} = 0
注意:网关的所有传出转换应包括100%的逻辑;例如,您不会输入{noOfIssues}> 10{noOfIssues} <5作为条件表达式,因为任何传出序列流都不会处理范围[5,10]的值。

运行模拟

  • 在“配置BPSim”对话框工具栏中,单击“运行”按钮;显示“ BPSim Simulation Controller”对话框
  • 单击运行按钮,然后选择“标准仿真”
  • 模拟完成后,它将提供以下结果:

代币分析

  • 到达了20个客户,与我们手动计算的数量相匹配(请参阅“ 配置BPSim”表中的“ 客户到达 ”)
  • 20名顾客中有8名顾客不接受最初的估算,而20名顾客中有12名顾客接受并修理了汽车;这些数字大致匹配1/3和2/3概率
  • 64个令牌已通过网关发现的新问题? ,其中19个有新问题,而45个没有新问题;这些数字大致匹配1/4和3/4概率

个别客户分析

单击工具栏上的按钮以打开“ BPSim PropertyParameter Values”对话框。由于有20个客户(令牌),因此您可以在“令牌编号”字段中输入0到19之间的值,然后单击“查询”按钮进行一些分析:

  • 该客户不接受初始估算,如“按属性分组”标签上所示:
  • 该客户的汽车只有一个问题,已解决:
  • 该客户的汽车有三个已知问题,在维修过程中发现了三个其他问题,因此总共修复了六个问题(也许这是一辆真正的旧汽车);切换到“按元素分组”标签: