在状态图中,节点表示状态,箭头对应触发状态变化的事件。在流程图中,节点表示动作或决策,箭头对应控制流向,即接下来会发生什么。流程图不是UML。最接近的UML图是活动图,它能够更精确地建模比流程图多出来的一些内容(因为箭头还可以表示对象流)。两者可以互补:在流程图中的某个动作/决策可能会触发导致状态变化的事件。但并不是一一对应:一个动作可能会引起多个状态变化,而在流程图中并没有显示这些可能性。简单例子: - 想象一个“订单”对象。它可能处于“已接收”、“准备交付”、“已交付”、“已开票”的状态之一。每个状态都描述了接下来可能会发生的事情。这是状态图的主题。 - 再想象一张流程图。其中按顺序发生了不同的动作:从客户那里“获取订单”、从库存中“选取订单所需物品”、将物品“发送给客户”、“所有物品都已发送吗?”如果是,就“准备并发送发票”;如果不是,则“查找缺失的物品”,然后回到“选取订单所需物品”并从那里继续进行。正如您看到的:两者都可以讲述同一个故事,但从不同角度和不同细节出发。