预订演示
前页 后页

汽车维修进程

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

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

创建 BPMN模型

创建主进程

Example Business Process diagram for simulation in Sparx Systems Enterprise Architect

  1. 创建一个开始事件顾客到达。
  2. 将序列流添加到目标抽象任务活动进行估计。
  3. 将序列添加到目标 Exclusive Gateway Accepted?。
  4. 将序列流添加到:
    A未接受目标结束事件初始估计
         - A目标子流程修理车
  5. Repair Car中,将序列流添加到目标抽象任务活动接受付款。
  6. 将序列流添加到目标结束事件顾客离开商店。

创建子流程修理汽车

Example Business Process diagram for simulation in Sparx Systems Enterprise Architect

  1. 创建一个开始事件开始。
  2. 将序列流添加到目标 Exclusive Gateway会聚 Gateway1。
  3. 将一个序列添加到一个抽象任务活动中检查问题。
  4. 将序列流添加到独占网关会聚网关 2。
  5. 将序列添加到独占网关New问题?。
  6. 将序列流添加到:
    - A目标抽象任务活动处理新发现的问题,然后添加一个
    流回汇聚序列
          - A目标抽象任务修复问题,然后添加一个序列一个
    target Exclusive Gateway还有其他问题吗?
  7. 从网关还有问题吗?将序列流添加到:
    - 目标结束事件修复完成
         -汇聚网关1

配置 BPSim

任务

描述

工件和包

  1. 打开配置 BPSim窗口('仿真>过程分析>进程>打开BPSim 管理器')。
  2. 创建一个业务流程仿真工件的场景1 :主流程。
  3. 选择包含对应BPMN 2.0模型的包。

开始和持续时间

我们将模拟一家汽车维修店的流程,该店的营业时间为上午 9:00 至下午 5:00,即 8 小时。我们还假设下午 4:50 之后走进的顾客当天不会得到服务。因此模拟开始时间为上午 9:00,持续时间为 7 小时 50 分钟。

在“业务流程仿真”图上,单击“汽车维修名称”,在“配置 BPSim窗口中,单击“主1 ”和“汽车维修名称”,更新这些工件:

  • 开始- 用任何日期(格式为 dd/mm/yyyy)改写“值”字段并将时间部分更改为“上午 9:00”
  • 持续时间 - 单击“值”字段中的Browse.按钮并将其设置为“0 07:50:00”的恒定持续时间

顾客来了

我们将模拟每 24 分钟到达的客户。

第一个客户在上午 9:00 到达,最后一个在下午 4:36 到达(下午 5:00 到达的客户今天将不会得到服务,因为这受“持续时间”设置的限制)。

用笔和纸,我们可以计算出服务了 20 位客户(上午 9:00 到下午 4:36 = 456 分钟;客户数量为 456/24 + 1 = 19 + 1 = 20)。稍后我们将通过仿真结果验证这一点。

在“Car Repair”图表上,单击开始事件元素顾客,然后在配置 BPSim开始中:

  1. 单击新参数下拉箭头,然后选择“控件”。
  2. 单击“参数”下拉箭头并选择“InterTriggerTimer”。
  3. 在“值”字段中单击Browse.按钮并设置常数数值“24 分钟”。单击确定按钮和保存工具栏图标。

属性Parameters

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

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

  1. 在“汽车维修”图表上,单击开始事件顾客到达
  2. 在配置 BPSim配置的“配置”选项卡上,单击新参数下拉箭头并创建一个名为noOfIssues的属性参数。
  3. 在“值”字段中单击Browse.按钮;显示“CustomerArrives”对话框的“配置”配置。
  4. 单击“分布”选项卡并选择“截断正常”;在田野里:
    - '平均值',输入'2'
    - '标准偏差',输入' 1 '
    - 'Min',输入' 1 '
    -“最大”,输入“1000”
重要注记:诸如'TruncatedNormal'之类的分布,返回一个浮点值,但该属性用作整数。设置属性的类型很重要,尤其是在进行相等测试时的条件表达式中。例如,条件表达式getProperty('noOfIssues') = 0几乎永远不会满足,因为noOfIssues是由浮点分布初始化的。

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

创建属性并设置值后,单击工具栏上的图标,然后单击图标以显示“属性参数”对话框。在属性的“类型”字段中,单击下拉箭头并选择值“ int ”而不是默认的“double”。

  1. 在“维修汽车”图表上,单击活动维修问题。
  2. 在配置 BPSim配置的“配置”选项卡上,单击新参数下拉箭头并创建一个名为noOfIssues的属性参数。
  3. 在“值”字段中单击Browse.按钮。显示“修复问题”对话框的“配置”配置。
  4. 单击“表达式”选项卡,然后在“表达式”字段中输入{noOfIssues} -1 ;点击确定按钮。
  5. 在“修理汽车”图表上,单击活动处理新发现问题
  6. 在配置 BPSim配置的“配置”选项卡上,单击新参数下拉箭头并创建一个名为noOfIssues的属性参数。
  7. 在“值”字段中单击Browse.按钮。显示“处理新发现的问题”对话框的“配置”配置。
  8. 单击“表达式”选项卡,然后在“表达式”字段中输入{noOfIssues} +1 ;点击确定按钮。

概率上的序列流

我们估计三分之一的客户不会接受最初的维修估价,剩下的两个会接受。我们还估计,四分之一的维修会发现新问题,其余三个维修不会发现新问题。

在“汽车维修”图上,参考网关元素接受了吗? .点击:

  • 初始接受序列流和配置 BPSim窗口中单击参数下拉箭头,并创建一个名为“概率参数”的控件参数;在“值”字段中输入“0.67”
  • Initial Not Accepted序列流,在配置 BPSim中点击参数-down箭头,并创建一个控件参数,名为'参数概率';在“值”字段中输入“0.33”
在“汽车维修”图上,请参阅网关元素新发现问题? .点击:
  • No More to Repair SequenceFlow 和配置 BPSim序列中单击参数下拉箭头,并创建一个控件“参数参数”的概率;在“值”字段中输入“0.75”
  • 修复序列流的更多问题,并在配置 BPSim窗口中单击参数下拉箭头,并创建一个名为“参数概率”的控件参数;在“值”字段中输入“0.25”

条件序列条件

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

在“维修汽车”图表上,请参阅还有其他问题?网关元素。点击:

  • 修复序列流的更多问题,并在配置 BPSim窗口中单击新参数下拉箭头,并创建一个名为“条件”的控件参数;在“值”字段中单击Browse.按钮,单击“表达式”选项卡并在“表达式”字段中键入{noOfIssues} != 0
  • No More to Repair SequenceFlow 并在配置 BPSim序列单击参数向下箭头,并创建一个名为“参数条件”的控件参数;在“值”字段中单击Browse.按钮,单击“表达式”选项卡并在“表达式”字段中键入{noOfIssues} = 0
注记:网关的所有传出转换都应包含 100% 的逻辑;例如,您不会输入{noOfIssues} > 10{noOfIssues} < 5作为条件表达式,因为[5, 10]范围内的值不会被任何传出序列流处理。

运行仿真

  1. 在配置 BPSim窗口中,单击“执行”选项卡和工具栏中的图标。
  2. 当模拟完成时,执行选项卡提供类似于以下的结果:

代币分析

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

个人客户分析

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

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