2015-10-11 42 views
0

在Content Server用戶通過在PC上打開單詞創建單詞文檔後使用單詞宏獲取OpenText Content Server節點標識後,保存(使用企業連接對話框),並關閉單詞文檔之前 - 我正在構建一個宏來鉤住項目編號並將一些元數據拉入文檔,允許用戶插入/更新文檔頁腳。有沒有辦法使用單詞宏來獲取OpenText Content Server節點ID

在這種情況下,是否有各種API或SDK的某些方面允許單詞宏訪問自己的節點ID(可能還有其他元數據)?

我發現了文件C:\ Users [用戶名] \ AppData \ Roaming \ OpenText \ OTEdit \ sync.fedb,它似乎在文件位置/名稱和內容服務器中的文檔之間存在映射,但是詢問這直接看起來有點像黑客,因爲OTEdit.exe總是對文件鎖定,我想知道是否有支持的方式來執行此操作。

我已經研究過DPS,將內容服務器節點標識標記爲單詞文檔屬性,並且在用戶關閉並重新打開該文檔時這起作用,但在文檔關閉之前該屬性不可用所以在這種情況下它是沒有用的。

+0

您是否需要當前打開的文檔的節點ID? –

+0

是的 - 更新了問題以表明這一點。任何其他屬性也會很方便。 – meataxe

回答

0

我發現了一種不同的方法,因爲sync.fedbOTEdit進程鎖定,並且似乎沒有任何方式通過使用單詞宏訪問文檔元數據。這有點駭人聽聞,但是我已經提供了詳細信息以防其他人對此感興趣。

編輯的文檔存儲在一個文件夾下的類似的路徑:C:\Users\[username]\AppData\Roaming\OpenText\OTEdit\EC_[servername]\[folder]\[current document name]

[folder]可能匹配在內容服務器的文件夾,也可能不會 - 這是更好地檢查~otdirinfo.ini文件,並解析父文件夾ID出來的網址爲Browse

從這裏我們可以使用類似做一個數據庫搜索:

SELECT 
    t.DataID AS NodeId, 
    CAST(t.CreateDate AS DATE) AS CreateDate, 
    CASE WHEN k.FirstName IS NULL 
      AND k.LastName IS NULL THEN k.Name 
     ELSE LTRIM(RTRIM((ISNULL(k.FirstName, '') + ' ' + ISNULL(k.LastName, '')))) 
    END AS CreatedByFullName, 
    CASE WHEN kr.FirstName IS NULL 
      AND kr.LastName IS NULL THEN kr.Name 
     ELSE LTRIM(RTRIM((ISNULL(kr.FirstName, '') + ' ' + ISNULL(kr.LastName, '')))) 
    END AS ReservedByFullName, 
    t.CreatedBy, 
    t.ReservedBy, 
    t.ParentID, 
    t.Name AS Title, 
    v.FileName 
FROM 
    DTree t 
    INNER JOIN KUAF k 
    ON t.CreatedBy = k.ID 
    LEFT OUTER JOIN KUAF kr 
    ON t.ReservedBy = kr.ID 
    INNER JOIN DVersData v 
    ON t.DataID = v.DocID AND t.VersionNum = v.Version 

在實踐中,我寫了一個API來包裝數據庫查詢返回的興趣JSON的結果,這是稍微容易處理而不是管理數據庫連接,並且比我的站點上的CWS更快地返回結果。我使用方便的VBA-Web宏來調用並處理解析,將調用的結果放入word doc屬性中,然後調用我們現有的頁腳生成宏。

注意:我使用的是Content Server 10.5,顯然,提取父ID的方法有時會因版本而異。

相關問題