实现RMI扩展以支持自定义文档类型金宝app
需求管理接口(RMI)提供了在基于模型的设计元素和需求文档之间创建和审查链接的工具。RMI为许多文档类型提供了内置支持。金宝app此外,还可以实现自定义链接类型扩展,以支持链接到其他文档类型。本示例演示了用于链接Microsoft®PowerPoint®演示文稿的RMI扩展的实现。
与本例一起使用的文件
对于本示例教程的目的,您将链接对象slvnvdemo_powerwindowController.slx
模型中有幻灯片powerwindowController.pptx
演示文稿。打开Simulin金宝appk®模型slvnvdemo_powerwindowController.slx
。
open_system (“slvnvdemo_powerwindowController”);
设置需求管理器来使用链接
在应用程序选项卡,打开要求经理。
在需求选项卡中,确保布局>要求浏览器被选中。
在要求浏览器,在视图下拉菜单,选择
链接
。
在本例中,您将专门在需求选项卡和任何对工具条按钮的引用都在此选项卡中。
外部存储链接
在slvnvdemo_powerwindowController
模型,配置设置,以存储外部链接。在需求选项卡上,选择链接设置>默认链路存储。这将打开要求设置对话框。在标题下追溯性数据的默认存储方式选择存储在外部(在一个单独的*。slmx文件)。或者,计算下面的代码。
rmipref (“StoreDataExternally”,真正的);
已安装的链路类型定义文件
方法来实现基本的支持,包括链接创建,具体取决于用于定制类型文档的应用程序金宝app外部链接对话框和链接导航通过上下文菜单的快捷方式,或者你可以选择实现一个功能更丰富的支持,通过上下文菜单的快捷方式,一致性检查,选择链接等。金宝app
在本教程中,您将使用从头创建的自定义链接类型定义。要了解更多关于自定义链接类型扩展API的信息,请参考所包含的linktype_TEMPLATE.m
通过以下评估:
编辑([matlabroot,' /工具箱/ slrequirements linktype_examples / linktype_TEMPLATE.m '])
您还可以查看已发布产品使用的实际链接类型定义文件。例如,通过计算以下值来引用最小文本文件链接类型:
编辑([matlabroot,' /工具箱/ slrequirements linktype_examples / linktype_rmi_text.m '])
您也可以参考更高级的Microsoft Excel®工作簿链接类型:
编辑([matlabroot,' /工具箱/ slrequirements linktype_examples / linktype_rmi_excel.m '])
创建并注册一个stub链接类型文件
该文件rmidemo_pp_linktype.m
在当前工作目录中包含RMI使用Microsoft PowerPoint文件的链接类型信息。通过计算以下内容向RMI注册链接类型。
rmi (“注册”,“rmidemo_pp_linktype”)
这指示RMI识别文件名扩展名ppt
而且.pptx
作为支金宝app持的文件,并使用这里为RMI功能定义的方法。
创建第一个链接
的背景单击右键
slvnvdemo_powerwindowController
模型的例子。在上下文菜单中,选择本级别要求>打开外向链接对话框…,弹出“Outgoing Links”对话框。点击新创建一个新的链接。
扩大文档类型下拉列表。选择微软演示文稿在名单的末尾。
使用浏览定位按钮
powerwindowController.pptx
。输入一个描述标签,如例子演示。
点击好吧保存新链接并关闭对话框。
或者,您可以计算以下代码来创建链接。该代码首先填充链接目标信息,然后使用rmi
函数创建链接。
firstReq = rmi(“createempty”);firstReq。reqsys =“rmidemo_pp_linktype”;firstReq.doc =“powerwindowController.pptx”;firstReq.description =的例子演示;rmi (“设置”,“slvnvdemo_powerwindowController”, firstReq);
文档导航
中的函数提供了导航到PowerPoint文档的功能rmidemo_pp_linktype.m
文件。这种方法和所有其他方法的实现需要对管理需求文档的应用程序中可用的api有详细的了解。对于这个微软PowerPoint的例子,你将使用COM API。您将使用actxserver
命令在MATLAB®中创建与PowerPoint应用程序的连接。然后,你将使用像Application.Presentations.Open(文件名)
来操作PowerPoint应用程序rmidemo_pp_linktype
方法。看到微软的开发人员参考页面浏览有关哪些PowerPoint对象和方法可透过COM API提供的资料。
的rmidemo_pp_linktype.m
文件中包含查找正确的函数.pptx
文件。
返回到Simulink模型金宝appslvnvdemo_powerwindowController
。右键单击Simulink图背景并金宝app导航到需求在这个层次上还是从上下文菜单。注意子菜单顶部的新导航快捷方式。当单击这个新快捷方式时,MATLAB将打开PowerPoint文件。
你可以像以前一样导航到链接,或者通过计算下面的值:rmi(“视图”、“slvnvdemo_powerwindowController ', 1)
实现对给定幻灯片编号的导航
假设你想链接真值表
块连接到司机
的输入控制
子系统块对应的幻灯片编号5在PowerPoint演示。导航到真值表
阻塞或计算以下代码。
rmidemo_callback (“定位”,“slvnvdemo_powerwindowController /真值表”)
右键单击块,选择需求>打开外向链接对话框…,弹出“Outgoing Links”对话框。
点击新创建一个新的链接。
像以前一样指定文档类型和文件名。
输入司机输入到描述字段。
输入5到位置/标识符输入字段。
点击好吧保存新建链接。
如果您从Simulink图中导航该链接,文档将像以前一样打开,但它现在金宝app将向下滚动到第5张幻灯片。助手goToSlide ()
方法中的代码NavigateFcn ()
函数打开正确的幻灯片。
函数goToSlide(hDoc, slideNum) disp([“开幕幻灯片#”num2str (slideNum)]);hDoc.Slides.Item (slideNum) .Select;结束
控件导航到该链接真值表
块,右键单击并选择> 1.执行以下命令。“司机输入”。ppt演示窗口将向下滚动到第5张幻灯片。
或者,通过计算下面的代码来创建链接。该代码首先填充链接目标信息,然后使用rmi
函数创建链接。
secondReq = rmi(“createempty”);secondReq。reqsys =“rmidemo_pp_linktype”;secondReq.doc =“powerwindowController.pptx”;secondReq.description =“司机输入”;secondReq。id =“# 5”;rmi (“设置”,“slvnvdemo_powerwindowController /真值表”, secondReq);
你可以像以前一样导航到链接,或者通过计算下面的值:rmi('view','slvnvdemo_powerwindowController/真值表',1)
链接和导航到幻灯片ID
链接到存储的幻灯片编号可能会有问题:当您修改文档时,链接可能会失效。例如,复制演示文稿中的第一张幻灯片:
现在其他的幻灯片都往下移了一张。从驱动输入导航真值表
Block会弹出错误的幻灯片。您需要使用不同的位置类型,而不是页面/项目编号
。
选择相同的
真值表
块,它连接到司机
的输入控制
子系统。下面的代码导航到真值表
块。
rmidemo_callback (“定位”,“slvnvdemo_powerwindowController /真值表”)
右键单击块,选择需求>打开外向链接对话框…,弹出“Outgoing Links”对话框。
点击新创建一个新的链接。
选择
命名项目
从位置(类型/标识符)下拉列表。输入
260
到位置输入字段。点击好吧保存修改后的链接。
对象的持久ID司机输入
幻灯片(详见下文)。
现在,在这个改变之后,从驱动输入导航真值表
Block将调出正确的幻灯片,即使在其顺序编号更改之后。
不幸的是,在PowerPoint应用程序UI中看不到幻灯片id。要找到第5张幻灯片的ID,你可以使用COM API:
>> hApp = actxGetRunningServer('powerpoint.application');>> hDoc = hap . activepresentation;> > hDoc.Slides.Item(5)。SlideID ans = 260
下面的部分将介绍这个问题的更友好的解决金宝搏官方网站方案。
或者,您也可以使用以下代码创建链接。该代码首先填充链接目标信息,然后使用rmi
函数创建链接。
betterLink = rmi(“createempty”);betterLink。reqsys =“rmidemo_pp_linktype”;betterLink.doc =“powerwindowController.pptx”;betterLink.description =驱动程序输入-更好的链接;betterLink。id =“@260”;rmi (“设置”,“slvnvdemo_powerwindowController /真值表”, betterLink);
你可以像以前一样导航到链接目的地,或者计算以下值:rmi('view','slvnvdemo_powerwindowController/真值表',1)
使用文档索引标签链接
如上所示,您可以创建持久链接,在链接演示文稿中的幻灯片重新排序后,这些链接不会变得陈旧,但是您不容易访问持久链接SlideID价值观。一种可能的解决方案是在Outgoing Links对话框的Document Index选项卡中选择所需的幻灯片。“文档索引”选项卡的内容由ContentsFcn ()
方法中的链接类型定义文件。您可以为这个方法提供实现,这样持久性SlideIDvalue在创建链接时由RMI存储,而不是volatileSlideNumber价值。
的ContentsFcn ()
方法返回三个数组:
标签
用于文档索引列表项和导航快捷方式深度
指示所列项目的层次关系(本例中未使用)位置
用于存储的唯一id
的ContentsFcn ()
实现依赖于下面的PowerPoint API调用来填充位置价值观:
hDoc.Slides.Item .SlideID (k)
这确保了即使在幻灯片顺序改变之后,导航信息仍然是持久的。请注意,您使用@作为一个前缀位置
值,以指示后面的数字存储命名项目位置值代替幻灯片(页)编号位置值。
使用文档索引页中的输出链接编辑器创建一个链接。
导航到
事实表
块,它连接到乘客
的输入控制
子系统。下面的代码导航到事实表
块。
rmidemo_callback (“定位”,“slvnvdemo_powerwindowController /真理Table1”)
右键单击块,选择需求>打开外向链接对话框…,弹出“Outgoing Links”对话框。
点击新创建一个新的链接。
指定
微软演示文稿
随着文档类型。指定
powerwindowController.pptx
随着文档从浏览菜单。离开描述输入。
而不是指定位置手动切换到文档索引选项卡,找到“乘客输入”幻灯片对应的线路,双击该线路。
请注意,其余的输入字段将自动填充正确的信息。
点击好吧保存新建链接。
控件导航到该链接事实表
块和选择需求>1."乘客输入在powerwindowController.pptx中由一个包含三个元素的向量组成"。即使在幻灯片移位或重新排序后,此链接也应正确工作。
或者,您可以通过计算下面的代码来创建链接。的链接ID
是按照与前一节相同的方式创建的,其中设置了持久ID。该代码首先填充链接目标信息,然后使用rmi
函数创建链接。
indexLink = rmi(“createempty”);indexLink。reqsys =“rmidemo_pp_linktype”;indexLink.doc =“powerwindowController.pptx”;indexLink.description =“乘客输入-通过索引标签链接”;indexLink。id =“@259”;rmi (“设置”,“slvnvdemo_powerwindowController /真理Table1”, indexLink);
导航到链接的相同方式,或评估以下:rmi('view','slvnvdemo_powerwindowController/Truth Table1', 1)
链接到PowerPoint中的当前幻灯片
支持健壮持久链接的更好方法是通过选择链接快捷金宝app方式。RMI API允许您定义SelectionLinkFcn ()
函数用于链接到当前文档中的当前对象。在本教程的下一步中,您将自动链接到当前打开的PowerPoint演示文稿中的当前幻灯片。
的需求上下文菜单的部分将显示与PowerPoint中当前幻灯片链接的快捷方式。
在PowerPoint演示示例副本中,导航到标题为
到达窗框的顶部或底部
。在Simuli金宝appnk图中,右键单击
endstop
块。
rmidemo_callback (“定位”,“slvnvdemo_powerwindowController / endstop”)
右键单击块并选择需求>在PowerPoint中链接到幻灯片从上下文菜单。
RMI将自动创建到SlideID对应于活动表示中的当前位置。RMI将尝试使用目标幻灯片的标题文本作为新链接的标签。
要导航到链接,右键单击endstop
再次阻塞并选择需求>1.“窗框的顶部或底部是…”。PowerPoint程序应该打开到正确的幻灯片。
或者,您也可以使用以下代码创建链接。的链接ID
是按照与前一节相同的方式创建的,其中设置了持久ID。该代码首先填充链接目标信息,然后使用rmi
函数创建链接。
select link = rmi(“createempty”);selectionLink。reqsys =“rmidemo_pp_linktype”;selectionLink.doc =“powerwindowController.pptx”;selectionLink.description =“终止信号-选择链接”;selectionLink。id =“@261”;rmi (“设置”,“slvnvdemo_powerwindowController / endstop”, selectionLink);
你可以用同样的方法导航到链接,或者你可以评估以下内容:rmi(“视图”、“slvnvdemo_powerwindowController / endstop ', 1)
创建双向链接
作为本教程的最后一步,您将扩展SelectionLinkFcn ()
函数可选地在当前幻灯片中插入超链接,用于从PowerPoint导航到Simulink中的链接对象。金宝app
您的PowerPoint链接类型允许在使用时自动将Simulink导航控件插入到链接的幻灯片中金宝app在PowerPoint中链接到幻灯片在Simulink对象的上下文菜单中使用快捷方式。金宝app要激活此功能,请在Simulink模型中选择金宝app需求选项卡。然后选择链接设置>连接选项。或者,计算下面的代码将打开这个对话框:rmi_settings_dlg
。
下创建基于选择的链接时航向,确保修改双向链接的目标检查。或者,下面的代码将设置这些设置。
origMcState = rmipref(“UnsecureHttpRequests”,真正的);origTwoWayPref = rmipref(“BiDirectionalLinking”,真正的);
从R2019a开始,MATLAB的嵌入式HTTP服务在安全端口31515上激活,而不是在不安全端口31415上激活。因为我们的导航url在没有安装证书的情况下不能使用安全端口,所以您还应该选择在MATLAB启动时启用外部连接此选项卡底部的复选框。
控件的选择链接过程障碍
信号输入块,以便将其与示例演示中的相应幻灯片相关联。
导航到滑动7
powerwindowController.pptx
(让它成为活动幻灯片)。导航到
障碍
块在Simulink模型。金宝app
rmidemo_callback (“定位”,“slvnvdemo_powerwindowController /障碍”)
右键单击块并选择需求>在PowerPoint中链接到幻灯片从上下文菜单。
您现在应该在幻灯片的左上角看到一个新的RMI图标。
按照Microsoft PowerPoint的说明来链接,它应该突出显示在slvnvdemo_powerwindowController
模型。
将项目从PowerPoint文档导入需求工具箱
需求工具箱™包括文件导入能力,如果你的自定义链接类型定义包括所有需要的部分。使用定制文件rmidemo_pp_linktype.m
而且slreq.import ()
API中,您可以自动将内容作为类型的对象拉入slreq。参考
或slreq。要求
,并保存到.slreqx
文件。指slreq.import
获取更多信息。
因为我们的自定义文档类型定义没有提供的实现HtmlViewFcn ()
,只有纯文本导入才能工作。
操作之前,请确保该文档在PowerPoint中已打开slreq.import ()
命令。导入器将显示导入项目的数量,对于我们的例子,这对应于幻灯片的数量。使用slreq.editor
命令调出要求编辑器。展开文档节点以浏览导入的项。点击“显示在文档中”按钮,从导入导航参考到源文件中的原始项目。
或者,按照以下步骤从命令行导入需求。
确保
powerwindowController.pptx
文件在导入前打开:
rmi (“视图”,“slvnvdemo_powerwindowController”, 1)
使用以下方法导入需求:
slreq.import (“rmidemo_pp_linktype”,“AsReference”,真的,“RichText”假)
中查看需求要求编辑器与
slreq.editor
从这里去哪里
与链接到整个幻灯片不同,您可能需要修改SelectionLinkFcn ()
实现链接到幻灯片中的特定文本或图片。参考微软的开发人员参考页面参阅有关如何调整Simulink导航控件的锚定和外观的信息。金宝app例如,您可能希望将超链接附加到当前幻灯片上选定的文本,而不是插入带有超链接的图标。
如果你需要链接到搜索文本模式,无论哪张幻灯片包含存储的文本,您都可以扩展受支持的位置类型的声明,以包括金宝app?性格:
linkType。locdelimators = '#@?';
然后,您应该提供额外的信息情况下
为开关(locationStr (1))
在NavigateFcn ()
方法。相应的findText ()
helper查询所有ppt演示对象TextFrame全部项目幻灯片并选择具有匹配文本的项。
RMI链接类型模板支持其他方法,具体取决于您的需要。金宝app例如,为了让您的自定义链接被Requirements Consistency Checking覆盖,可以考虑实现以下方法:
IsValidDocFcn ()
IsValidIdFcn ()
IsValidDescFcn ()
要调整生成报告中链接的显示方式,您可以使用:
CreateURLFcn ()
UrlLabelFcn ()
DocDateFcn ()
DetailsFcn ()
HtmlViewFcn ()
如果你的应用程序不是基于文件的,而是使用私有数据库来存储需求文档,你必须将链接类型标记为“非文件”:
linkType。IsFile = 0;
并提供专门的实现BrowseFcn ()
。这是在单击时调用的函数浏览“传出链接”对话框中的按钮。
rmi (“编辑”,“slvnvdemo_powerwindowController”);
清理
清除命令。注销rmidemo_pp_linktype
,清除开放的需求集而不保存更改,关闭开放的模型而不保存更改。
rmi (“注销”,“rmidemo_pp_linktype”);slreq.clear ();bdclose所有;