主要内容

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

connect

创建活动图流

自 R2026a 起

说明

flow = connect(srcNode,destNode) 将指定的源节点 srcNode 和目标节点 destNode 作为一条流连接起来。生成的流类型取决于您为 srcNode 指定的节点类型:

  • 如果 srcNode 节点是一个引脚或参数节点,则该函数会创建一个对象流。

  • 如果 srcNode 节点是动作节点或初始节点,则该函数会创建一个控制流。

  • 如果 srcNode 节点是一个控制节点,则创建的流的类型取决于该特定控制节点的输入流。控制节点包括合并节点或分支节点,以及决策节点或汇合节点。

注意

如果将对象流以 destnode 的形式连接到动作节点,软件会自动在该动作节点上创建一个输入引脚。

示例

全部折叠

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

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

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');

输入参数

全部折叠

流的源节点,指定为 systemcomposer.activity.ActivityNode 对象。

流的目标节点,指定为 systemcomposer.activity.ActivityNode 对象。

输出参量

全部折叠

流,以 systemcomposer.activity.Flow 对象形式返回。

详细信息

全部折叠

版本历史记录

在 R2026a 中推出