在绘图状态机图中苦苦挣扎

时间:2017-06-19 10:51:57

标签: uml state-machine

嘿那里我正在尝试为这个场景绘制状态机图,但它缺少大量信息。如果有人在这里可以提供帮助。

情景

  1. 游客将通过选择旅程开始旅程 自动售票系统(ATS)。
  2. 自动售票系统(ATS)将显示行程详情。
  3. 此旅行详情将包括座位号和目的地。
  4. 根据提供的旅行详情,ATS将计算付款。
  5. 游客可以选择以现金或信用卡支付 卡。
  6. 如果游客会插入错误的现金,ATS会 在屏幕上显示“Insert More Cash”消息,直到正确为止 金额将被插入。
  7. 如果游客选择了卡付款,ATS将会执行 两个并行的任务。它将验证卡的到期日期 并检查贷方余额。如果卡被接受,银行将 授权付款,并将更新游客的帐户。 但是,如果卡不被接受或无效,ATS将再次询问 来自旅游者的付款选项(返回第5步)。
  8. 付款完成后,机票和收据将由打印 ATS。
  9. 现金支付可能会导致一些变化,因此也会发生变化 由ATS配发。游客将获得机票和 变化。
  10. ATS将在结尾处显示“交易完成”消息  交易。
  11. 我的画作:

    enter image description here

1 个答案:

答案 0 :(得分:0)

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

enter image description here

这是一个脚手架,它没有阅读上面的细节。请注意,您可以使用来自可中断区域的常规异常而不是var arrChildOptions2 = [ {id:1, name:'john'}, {id:2, name:'mike'}, {id:3, name:'ben'}, {id:4, name:'brian'}, ]; var myArray = [1,3]; var result = jQuery.grep(arrChildOptions2, function( n, i ) { //return ( n.id === 2); return myArray.indexOf(n.id) > -1; }); $( "#result" ).text( JSON.stringify(result) ); 转换,最终清除付款。在实践中,您可能会这样做,因为取消应该(从用户的角度来看)在任何时候都是可能的。当然也有可能暂停(如果已经支付了一些现金怎么办?)。

此外,我没有包含cancel行动。对于现金,这将是do/entry/exit,所以我们知道什么时候支付了足够的钱。