软件建模 CodeArts Modeling-消息线连线规则:连线算法

时间:2025-02-12 15:04:03

连线算法

  • 目标端寻源:一条消息线M1尝试连接到生命线L2上。

    从当前消息线M1出发,如果该消息线M1的源端S1在生命线L2上,则S1为M1的目标端(同时也是源端),在S1内创建子激活块并将M1指向它【图1】;否则继续如下流程;

    查找源端S1的引入消息线(From Message),如果找不到,则终止寻源过程,目标端寻源失败,在L2上新创建一个激活块并将M1指向它【图2】;如果能找到,则命名为FM1,继续如下流程【图3】;

    检测消息线FM1的源端FS1,查看其是否是生命线L2上的激活块,如果是则FS1为M1的目标端,在FS1内创建子激活块并将M1指向它【图4】;如果不是,则重复步骤b【图5】;

    当查找到顺序图第一根消息线依旧未找到目标端,则此次寻源过程终止,目标端寻源失败,在L2上新创建一个激活块并将M1指向它【图5】;如果找到则在其内创建子激活块并将M1指向它【图6】。

    图6中M1的逆向寻源不会经过2、3两根消息线,因为M1的源端S1的引入消息线是第一条线,直接能找到目标。

    逆向寻源过程中,如果寻源过程中遇到异步消息线(Async Message)或者返回消息线(Reply Message),则终止寻源过程;此时如果M1不是返回消息线(Reply Message),则在L2上新创建一个激活块并将M1指向它。

    寻源过程中断后或者未找到对应激活块,并且M1是返回消息线:

    1. 那么如果M1有源端引入线(源端引入连线类型不是返回消息线),则从M1的目标端所在生命线找到其内位置最低的激活点作为寻源目标(图7.1)。
    2. 如果M1没有源端连线,或者源端连线是返回消息线(Reply Message),则在L2上新创建一个激活块并将M1指向它(图7.2,图7.3)。

support.huaweicloud.com/usermanual-codeartsmodeling/modeling_ug_0003_4_4.html