在UML状态机图上,条件与转换关联。该转换具有“trigger-signature [guard]/activity
”形式的3部分标签。 Guard
是有条件的,并且为了进行转换必须评估为真。转换标签的所有3个部分都是可选的。
从您的问题描述,我可以定义3种状态为“等待命令”,“准备命令”和“交付订单”。从“等待订单”过渡到“准备订单”,并且该过渡可以标记为“order placed [order is available] /
”。我选择放弃这项活动,因为从问题描述中,我没有看到与此转换相关的任何活动。你可以画另一个标签为“order placed [order is unavailable]/refuse order
”的转换。然而,这种转变将从“等待订单”开始,并返回到“等待订单”,因为当订单被拒绝时我们不会更改状态。在此转换中,我包含了refuse order
活动,因为我认为有一些实际活动与拒绝订单相关。
或者,我已经看到了包含决策钻石的过渡,其中钻石的箭头标有trigger
,钻石中的一个箭头标记为[guard]/activity
,而钻石外的另一个箭头标有[else]/activity
。但我不确定这是否是技术上正确的UML。
我认为您在准备和交付状态的条目活动中放入的条件非常好。因为这些条件似乎与它们进入这些状态时发生的活动相关联,而不是任何状态转换。
查看示例http://www.uml-diagrams.org/examples/online-shopping-user-account-state-diagram-example.html?context=stm-examples和http://www.uml-diagrams .org/dicom-hosted-application-uml-state-machine-diagram-example.html?context = stm-examples – xmojmr