主要内容

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

systemcomposer.activity.Pin

活动图中的引脚

自 R2026a 起

    说明

    Pin 对象负责将令牌导入或导出到动作节点。

    创建对象

    使用函数 addPin 在动作节点上创建一个引脚。

    OutputPin1 = addPin(action1,"OutputPin1","out");

    属性

    全部展开

    包含该引脚的动作节点,指定为 systemcomposer.activity.Action 对象。

    在为动作节点定义的 MATLAB 函数中,每个输入和输出参量分别对应一个输入或输出引脚,由引脚的参量顺序指定。

    数据类型: uint32

    引脚方向,指定为 outin

    该引脚是否处于流传输状态,指定为 0(false)1(true)

    该操作开始执行时必须存在的令牌最小数量。

    引脚接受的令牌的数据类型。

    引脚名称,指定为字符向量。

    示例: 'OutputPin1'

    在画布上的位置,指定为坐标向量(以像素为单位):[left top right bottom]

    每个向量指定了组件左上角和右下角的位置,指定为 1×4 数值数组。数组用左上角的 xy 坐标表示左上角,然后是右下角的 xy 坐标。

    数据类型: double

    父活动图模型,指定为 systemcomposer.activity.Model 对象。

    Simulink® 句柄,指定为双精度类型。

    此属性对于多个 Simulink 工作流以及使用 Requirements Toolbox™ 编程接口而言是必不可少的。

    示例: handle = get(object,'SimulinkHandle')

    数据类型: double

    统一唯一标识符,指定为字符向量

    示例: '91d5de2c-b14c-4c76-a5d6-5dd0037c52df'

    数据类型: char

    唯一外部标识符,指定为字符向量。外部 ID 在元素的整个生命周期以及所有保留 UUID 的操作中都会被保留。

    数据类型: char

    对象函数

    addProperty为构造型定义自定义属性
    changeStereotype将当前应用的构造型更改为其构造型层次结构中的新构造型
    destroy移除模型元素
    getEvaluatedPropertyValue从元素中获取属性的计算值
    getFlow从活动图获取流
    getProperty获取与应用于元素的构造型相对应的属性值
    getPropertyValue获取架构属性值
    getStereotypeProperties获取元素上的构造型属性名称
    getStereotypes获取应用于模型元素的构造型
    hasProperty查找元素是否具有属性
    removeStereotype从配置文件中删除构造型
    setProperty设置与应用于元素的构造型相对应的属性值
    applyStereotype将构造型应用于模型元素
    connect创建活动图流
    hasStereotype查找元素是否已应用构造型

    示例

    全部折叠

    本示例演示了如何通过编程方式创建活动图。活动图描述系统行为,它通过受控动作序列对从输入到输出的令牌流进行建模。您可以使用活动图来构建系统的概念模型,通过动作或决策可视化功能流,并了解系统组件之间是如何相互交互的。如需进一步了解如何绘制活动图,请参阅绘制简单的活动图

    在此示例中,您将创建一个活动图,以说明下单、检查库存可用性以及在商品缺货时取消订单的各个步骤。

    Activity diagram for shopping process.

    创建新活动图

    使用 systemcomposer.createActivity 函数创建一个名为 AuthorActivity 的新活动图。

    activityName = 'AuthorActivity';
    adModel = systemcomposer.createActivity(activityName,true);
    activity = adModel.Activity;

    添加初始节点和动作节点

    使用 addNode 函数添加一个初始节点和所需的动作节点。

    init1 = addNode(activity,'init1','initial');
    action1 = addNode(activity,'Place Order','action');   
    action2 = addNode(activity,'Authorize Payment','action');  
    action3 = addNode(activity,'Check Inventory','action');  
    action4 = addNode(activity,'Cancel Order','action');  
    action5 = addNode(activity,'Fulfill Order','action'); 

    定义动作节点的行为并添加引脚

    使用 setBehaviorType 函数 . 为动作节点添加行为类型。对于行为类型为 MATLAB 的动作节点,您可以通过 BehaviorDefinition 属性指定 MATLAB® 函数。

    setBehaviorType(action1,'MATLAB');
    action1.BehaviorDefinition = 'PlaceOrder';
    setBehaviorType(action2,'Activity');
    setBehaviorType(action3,'MATLAB');
    action3.BehaviorDefinition = 'CheckInventory';

    您可以使用 addNode 函数在动作节点上添加引脚。有关引脚的详细信息,请参阅Pin

    outPin1 = addPin(action1,'order','out');
    inPin1 = addPin(action2,'order1','in');
    outPin2 = addPin(action2,'order2','out');
    inPin2 = addPin(action3,'order3','in');
    outPin3 = addPin(action3,'order4','out');
    inPin1.IsStreaming = true;
    outPin2.IsStreaming = true;

    创建嵌套活动

    您可以为行为类型为 Activity 的动作节点创建一个嵌套活动。

    childActivity = action2.ChildActivity;
    childAction1 = addNode(childActivity,'Enter Card Details','action');
    childAction2 = addNode(childActivity,'Authenticate Details','action');

    添加控制节点

    添加一个连接节点或分支节点,以及一个合并节点或决策节点。有关控制节点的详细信息,请参阅systemcomposer.activity.ControlNode

    jfork = addNode(activity,"jfork","joinfork"); 
    decMerge1 = addNode(activity,"decMerge1","mergedecision");
    decMerge2 = addNode(activity,"decMerge2","mergedecision");

    添加流终止节点和活动终止节点

    添加一个流终止节点和一个活动终止节点。

    ffinal = addNode(activity,"ffinal","flowfinal");
    afinal = addNode(activity,"afinal","activityfinal");

    连接流

    将流连接起来,以完成活动图。您可以为从决策节点输出的流创建守护表达式。

    flow1 = connect(init1,action1);
    flow2 = connect(outPin1,jfork);
    flow3 = connect(jfork,inPin1);
    flow4 = connect(jfork,inPin2);
    flow5 = connect(outPin2,decMerge1);
    flow6 = connect(outPin3,decMerge2);
    flow7 = connect(decMerge2,action5);
    flow8 = connect(decMerge2,action4);
    flow9 = connect(decMerge1,action5);
    flow10 = connect(decMerge1,action4);
    flow11 = connect(action4,ffinal);
    flow12 = connect(action5,afinal);

    为从决策节点输出的数据流创建 guard 表达式。

    flow7.Guard = 'token == 1';
    flow8.Guard = 'token == 0';

    您可以使用 Simulink.BlockDiagram.arrangeSystem 函数来优化活动图模型的布局。

    Simulink.BlockDiagram.arrangeSystem('AuthorActivity');

    详细信息

    全部展开

    版本历史记录

    在 R2026a 中推出