在 activity 图中是否允许在 INITIAL NODE 之后使用 DECISION NODE?

Is it allowed to use DECISION NODE after INITIAL NODE in activity diagram?

我正在为项目建模 activity 图。可以直接在初始节点之后使用决策节点。我只是google。但我什至找不到类似的例子。 例如:- 想象一个人可以搜索狗名Select动物类别,然后搜索狗一开始......

我的一个队友提到,根据上面的例子,这是两个不同的活动,我们应该为它创建两个 activity 图。

条件允许。

有关决策节点输入流的规则是(formal 2017 § 15.3.3.6 决策节点第 390 页):

A DecisionNode shall have at least one and at most two incoming ActivityEdges, and at least one outgoing ActivityEdge. ... If the DecisionNode has only one incoming edge, then it is the primary incoming edge. If the primary incoming edge of a DecisionNode is a ControlFlow, then all outgoing edges shall be ControlFlows and, if the primary incoming edge is an ObjectFlow, then all outgoing edges shall be ObjectFlows.

也知道(§ 15.3.3.1 初始节点第 ​​387 页):

The outgoing ActivityEdges of an InitialNode must all be ControlFlows.

这意味着在您的情况下,假设 DecisionNode 没有其他输入边,DecisionNode 的所有输出边应是 ControlFlows,否则这是不允许的

你的队友没有错。这是一个设计问题,应该事先弄清楚。活动是用例内部的功能部分。它们代表 "sunny day"、各种错误场景等场景。再退一步,用例代表所考虑的系统为其主要参与者带来的附加值。

现在从你的例子中很难说出那个系统应该是什么。 Search for dog name 可能是一个用例,但在哪种情况下?是给新狗命名还是在数据库中搜索现有狗? Select animal category(然后是狗?)也一样。两者作为用例都没有多大意义。一旦你想出了有意义的用例,你就可以准确地告诉活动应该将哪些步骤作为行动。只有这样你才能有决定的需要。决定在系统外部实际使用哪个用例,您不会看到为它完成的步骤。

作为推荐:Bittner/Spence 有一本关于用例的优秀书籍,它(与 UML 规范不同)非常有意义。还有其他知名作家在同一所学校任教(与 Ivar Jacobson 一起)。