主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

使用 MATLAB 类令牌在活动图中建模复杂对象

此示例展示了如何对处理包含复杂对象的令牌的系统进行活动图建模。在活动图中,您可以使用 MATLAB 类令牌对包含专门数据结构或大量函数的复杂对象进行建模。该类可以是值类,也可以是句柄类。有关此信息,请参阅句柄类和值类的比较

此示例使用存储为 MATLAB 类别的登录凭据对登录身份验证系统进行建模。活动图有以下节点:

  • Enter Login Credentials 动作节点,接受用户的登录凭据。

  • Validate Credentials 动作节点,用于验证输入的引脚是否为至少四位数的偶数。

  • 决策节点,用于判断登录是否成功。

    • 如果 IsSuccess 函数返回 True 值,则令牌流向 LoginSuccesful 动作节点。

    • 如果 IsSuccess 函数返回 false 值,则令牌流向 Increment number of tries 动作节点。

  • Increment number of tries 动作节点,用于计算登录失败的次数。

有关活动图的更多信息,请参阅使用活动图描述系统行为

打开登录会话的活动图

从示例文件中打开活动图。

open("LoginActivity.slx")

定义 LoginSession

创建一个名为 LoginSession 的自定义 MATLAB 类,并定义其相关属性与方法。要使用 MATLAB 类,它必须位于文件路径上。

LoginSession 类定义了公共属性,如用户名、出生日期和 PIN 号码,以及私有属性,如登录尝试次数和登录状态。

类方法定义了初始化登录凭据的构造函数以及活动图仿真登录会话所需的函数。

classdef LoginSession
    % Example MATLAB class that defines a login session object with
    % internal logic for validating credentials and allowing retries.
    
    properties
        UserName = ""
        DateOfBirth = datetime([0 0 0])        
        PinNumber = 0
    end

    properties (Access = private)
        NumTries = 0
        Success = false
    end

    properties (Constant)
        MaxTries = 3;
    end

    methods
        % Constructor
        function obj = LoginSession()
            % Create a LoginSession object with default property values
        end

        % Validate credentials
        function obj = ValidateCredentials(obj)        
            % Pin must an even number with at least 4 digits
            obj.Success = (obj.PinNumber > 999) && (mod(obj.PinNumber, 2) == 0);            
        end

        % Increase number of tries
        function obj = IncrementTries(obj)
            obj.NumTries = obj.NumTries + 1;
        end        

        % Whether login is successful
        function result = IsSuccess(obj)
            result = obj.Success;
        end        

        % Whether retry is allowed
        function result = IsRetryAllowed(obj)
            result = (obj.NumTries <= obj.MaxTries);
        end
    end
end

使用 MATLAB 类令牌时,请注意这些注意事项和限制。

  • 包含 MATLAB 类令牌的流程不支持信号记录和断点。

  • 端口值标签无法访问使用 MATLAB 类令牌的流。

  • 在仿真过程中向后退时,不支持恢复包含句柄对象的令牌。

配置引脚以接受 MATLAB 类令牌

要使 MATLAB 类令牌通过引脚流动,请将每个引脚配置为接受或生成 MATLAB 类令牌。

在活动图中,打开属性检查器,然后选择引脚。

Name 列表中,选择“专属”。在 Type 字段中,输入 LoginSession

例如,Enter Login Credentials 动作节点的输入引脚现在期望一个具有 MATLAB 类 LoginSession 的令牌。

Pin selected to configure

Property Inspector for MATLAB class

使用 MATLAB 类函数创建条件流

要访问决策节点的 LoginSession 类函数,请使用内置关键字 token 后面跟方法名。

在此示例中,当类的 IsRetryAllowed 函数返回 True 值时,令牌流回 Enter Login Credentials 动作节点。否则,令牌将被路由到 Display Error 动作节点。

Decision node

另请参阅

函数

工具

模块

主题