努力绘制状态机图

Struggling in drawing State machine diagram

嘿,我正在尝试为这种情况绘制状态机图,但它缺少很多信息。如果这里有人可以帮忙。

场景

  1. 游客将通过使用 自动售票系统 (ATS)。
  2. 自动售票系统 (ATS) 将显示行程详细信息。
  3. 此行程详细信息将包括座位号和目的地。
  4. 根据提供的行程详情,ATS 将计算费用。
  5. 游客可选择现金或信用卡支付 卡.
  6. 如果游客投入了错误数量的现金,ATS 将 在屏幕上显示 "Insert More Cash" 消息,直到正确 将插入金额。
  7. 如果游客选择刷卡支付,ATS将执行 两个并行任务。它将验证卡的到期日期 并查看贷方余额。如果卡被接受,银行将 授权付款并将更新游客的帐户。 但是,如果卡不被接受或无效,ATS 将再次询问 用于游客的付款选项(返回第 5 步)。
  8. 付款完成后,车票和收据由 ATS.
  9. 现金支付可能会产生一些零钱,所以零钱也是 由 ATS 分发。然后游客将获得门票和 改变。
  10. ATS 将在结束时显示消息 "Transaction Complete" 交易。

我的绘图:

好的,我试着给你一些提示。状态机总是为单个 class 创建,而不是为所考虑的整个系统创建。因此,让我们假设 ATS 是单个 class(实际上它可能更像是一个由多个 class 组成的组件)。现在这个 ATS 一开始是空闲的。选择行程时会以某种方式触发它。然后它必须完成旅程细节。它等待付款,最后它会吐出一张票。现在(基本上!)状态机如下所示:

这是一个脚手架,它是在没有阅读上面的细节的情况下完成的。请注意,除了 cancel 转换之外,您还可以使用来自最终清除付款的可中断区域的一般异常。在实践中,您可能会这样做,因为(从用户的角度来看)取消应该在任何时候都是可能的。当然也可以暂停(如果已经支付了一些现金怎么办?)。

我也没有包含 do/entry/exit 操作。对于现金,这类似于 add new cash sum 这样我们就知道何时支付了足够的钱。