使用 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
的令牌。
使用 MATLAB 类函数创建条件流
要访问决策节点的 LoginSession
类函数,请使用内置关键字 token
后面跟方法名。
在此示例中,当类的 IsRetryAllowed
函数返回 True
值时,令牌流回 Enter Login Credentials
动作节点。否则,令牌将被路由到 Display Error
动作节点。
另请参阅
函数
工具
模块
- Initial Node | Action Node | Decision or Merge Node | Join or Fork Node | Flow Final Node | Activity Final Node