gpt4 book ai didi

architecture - 如何在 UML 事件图中可视化协作事件?

转载 作者:行者123 更新时间:2023-12-05 05:34:16 25 4
gpt4 key购买 nike

我目前一直致力于为许多用户以协作方式发生的工作流建模事件图。这在某种程度上类似于多个用户同时编辑和验证同一个 Confluence 页面,所以我决定以此作为一个易于理解的示例。

单个用户的工作流程如下所示:

用户编辑一个页面(在我的例子中是复杂的事件),发布它,然后在发布的页面上执行某种验证(另一个复杂的事件)。如果不满意,用户返回编辑页面并重复此循环,直到满意为止。

Activity Diagram

现在想象一下它的协作版本(这当然是一个糟糕的工作流程,但想象一下您无论如何都必须对其建模):

多个用户协作编辑同一页面,并且在任何时候,其中一个用户可以发布当前内容并开始验证到目前为止已编辑的内容。然而,其他用户将停留在编辑步骤,并可能在第一个用户验证时编辑更多内容。各个用户的“状态”彼此独立,因此用户 1 可以开始验证,然后用户 2 和 3 可以发布更改并开始验证,同时用户 1 返回编辑,在此期间用户 4 发布更改等。仅当所有用户都决定不希望进行任何进一步更改后,工作流程才会结束。

这引出了一个问题:我必须如何更改图表才能表达我在此处描述的协作工作流?整个事件图是一个< >展开区域吗?我是否在末尾添加一个同步点?它是 < > 区域吗?还是内部事件是并行的,但不是整个工作流?

最佳答案

如果所有 Example 编辑/验证周期都是独立的,即用户编辑页面以进行他/她的更改并独立验证他/她的更改,则您当前的表示会很好,因为工作流将为每个用户独立开始和结束。

如果您希望明确记录多个用户可以并行启动这些事件,则需要一个“封闭”事件图来显示多用户上下文,而不会中断各个循环。此事件将有一个调用 Example 编辑/验证周期事件的 CallBehavioraction。要显示并发情况,您确实会使用扩展区域,或者更好的简写符号:

enter image description here

小星星看起来是一个类型,其实意思是activity有多个并发执行:

(UML 2.5.1 specs, page 483): (...) instead of using a mode keyword, a “*” is placed in the upper right-hand corner of the symbol (this is intended to indicate “multiple execution.” The notation maps to an expansion region containing the CallBehaviorAction (as in Figure 16.50) with mode=parallel.

(注意:引号中缺少的右括号是规范中的错字)。

如果编辑/验证周期不是那么独立,例如,如果验证不仅要验证本地更改,还要验证其他人所做的更改,它会更复杂:

  • 首先,您需要以某种方式明确协作编辑或将更改与其他更改合并。
  • 那么,如果这个修改后的模型允许针对每个用户独立考虑每个“联合循环”,那么最好使用与上述相同的方法。但如果没有,您需要将其封闭在一个扩展区域中。我不得不承认,我不清楚它的模式是 parallel 还是 stream
  • 然后,您还需要澄清验证后其他用户的更改是否会要求已经验证的用户在未进行任何更改的情况下重新验证​​。这可能需要进一步增强您的初始周期。

关于architecture - 如何在 UML 事件图中可视化协作事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73663091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com