2014-09-04 81 views
4

我的問題:如何創建一個新的鏈接文檔並將其插入(或連接)到一個元素中(在我的情況下是一個活動圖的註釋元素)。Enterprise Architect腳本編寫 - 創建和修改鏈接的文檔

元素級支持三種方法:

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

我缺少一個功能類似 CreateLinkedDocument (string Filename)

我的目標:我編程創建活動圖和一些筆記往大了漂亮顯示它在活動圖中。所以我的目標是將此文本放入鏈接文檔中,而不是直接放入活動圖中。

問候

編輯

非常感謝您對Uffe我的問題的解決方案。這裏是我的解決方案代碼:

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

回答

3

首先亮相,讓我們分開鏈接的文檔,該文件存儲在EA項目中,並在存儲在磁盤上的RTF文件中顯示在EA的內置RTF查看器中。

Element.LoadLinkedDocument()是創建鏈接文檔的唯一方法。它讀取RTF文件並將其內容存儲爲元素的鏈接文檔。一個元素只能有一個鏈接文檔,如果再次調用該方法,我認爲它會被覆蓋,但我並不完全確定(您可能會得到一個錯誤,但EA API往往不能這樣工作)。

爲了指定鏈接文檔的內容,您必須創建該文件並加載它。唯一的方法是在EA的內部和無證數據庫中進行黑客入侵,這些人有時會這樣做,但我強烈建議不要這樣做。

在.NET中,您可以使用Microsoft的Word API創建RTF文檔,但據我所知,沒有用於Java的相應API。快速搜索可以找到jRTF,一個用於Java的開源RTF庫。我沒有測試它,但它看起來好像它會做的伎倆。

您也可以使用EA的API來創建RTF數據。然後,您可以使用EA的內部顯示格式創建預期內容,並使用Repository.GetFormatFromField()將其轉換爲RTF,然後將其保存在文件中。

如果需要,您可以使用Repository.GetFieldFromFormat()將純文本格式或HTML格式的文本轉換爲EA的內部格式。

+0

你好,非常感謝你的完美答案。有用!我將用我的解決方案代碼編輯我的問題 – flipperweid 2014-09-25 11:56:29

相關問題