当前位置: 首页 > 知识库问答 >
问题:

用java编写Enterprise Architect脚本-创建和修改链接文档

文德曜
2023-03-14

我的问题是:如何创建一个新的链接文档并将其插入(或连接)到一个元素中(在我的例子中是一个活动图的Note-Element)。

元素类支持以下三种方法:

GetLinkedDocument ()
LoadLinkedDocument (string Filename)
SaveLinkedDocument (string Filename)

缺少类似createLinkedDocument(string Filename)的函数

public void addLinkedDocumentToElement(Element element, String noteText) {
    String filePath = "C:\\rtfNote.rtf";
    PrintWriter writer;

    //create new file on the disk
    writer = new PrintWriter(filePath, "UTF-8");

    //convert string to ea-rtf format
    String rtfText = repository.GetFormatFromField("RTF", noteText);

    //write content to file
    writer.write(rtfText);
    writer.close();

    //create linked document to element by loading the before created rtf file
    element.LoadLinkedDocument(filePath);
    element.Update();
}

编辑编辑

也可以使用临时文件:

File f = File.createTempFile("rtfdoc", ".rtf");
FileOutputStream fos = new FileOutputStream(f);
String rtfText = repository.GetFormatFromField("RTF", noteText);
fos.write(rtfText.getBytes());
fos.flush();
fos.close();
element.LoadLinkedDocument(f.getAbsolutePath());
element.Update();

共有1个答案

南门飞
2023-03-14

首先,让我们将链接的文档(存储在EA项目中并显示在EA内置的RTF查看器中)与存储在磁盘上的RTF文件分开。

element.LoadLinkedDocument()是创建链接文档的唯一方法。它读取RTF文件并将其内容存储为元素的链接文档。一个元素只能有一个链接文档,我认为如果再次调用该方法,它就会被覆盖,但我不能绝对确定(您可能会得到一个错误,但EA API通常不会这样工作)。

为了指定链接文档的内容,您必须创建文件,然后加载它。唯一的另一种方法是在EA的内部无文档数据库中进行黑客攻击,人们有时会这样做,但我强烈建议不要这样做。

 类似资料:
  • 当 Gradle 执行一个脚本时,它会将这个脚本编译为实现了 Script 的类. 也就是说所有的属性和方法都是在 Script 接口中声明的,由于你的脚本实现了 Script 接口,所以你可以在自己的脚本中使用它们.

  • 问题内容: 假设我有以下代码: 我要做的就是在文本文件中写一些东西,在我的例子中是“出于某种原因在这里写一些文本”。然后从文件中读取数据,最后从“有原因的一些文本”中的“有原因的一些文本”中更改文件中的文本。我运行了代码,但是所有发生的事情是在文件“某些原因在这里写”中。 我试图找出代码中可能出什么问题,但不幸的是,这是徒劳的。我非常感谢任何建议或重写。 问题答案: 将您的代码更改为: 问题是您要

  • 问题内容: 是否有人知道一个脚本,该脚本可以选择对URL的所有文本引用,并自动将其替换为指向这些位置的锚标记? 注意:我想要这个是因为我不想浏览所有内容,并用锚标记将它们包装起来。 问题答案: 对我来说,这似乎是jQuery的完美任务。 …这样的事情浮现在我脑海:

  • 创建和使用脚本 游戏对象的行为由绑定的 组件 所控制。尽管 Unity 内置的组件非常灵活多样,但是你很快就会发现它们提供的功能远远不够,为了实现你所要的游戏功能,你需要超越它们才行。Unity 支持通过 脚本 创建属于你自己的组件。在组件中,随着时间的推移,你可以触发游戏事件、修改组件属性,还可以以任何你喜欢的方式来响应用户输入。 Unity 内置支持两种编程语言: C# 一种工业标准语言,类似

  • 编写HTTP/1.1和HTTP/2.0脚本 有时,我们希望编写一个快速的脚本而不会遇到创建类的麻烦。addons机制具有一种速记方式,可以将模块作为一个整体视为一个addon对象。这使我们可以将事件处理程序函数放在模块作用域中。例如,下面是一个完整的脚本,它向每个请求添加标头。 def request(flow): flow.request.headers["myheader"] = "v

  • Groovy 提供了大量的特性用来创建 DSL. Gradle 构建语言知道 Groovy 语言的工作原理,并利用这些特性帮助您编写构建脚本,特别是您在编写 plugin 或者 task 的时候,你会觉得很方便.