我在Content Server用户通过在他们的电脑上打开单词并保存(使用企业连接对话框)之前和word doc之前使用word宏获取OpenText Content Server节点ID之后已关闭 - 我正在构建一个宏来挂钩项目编号并将一些元数据拉入文档,允许用户插入/更新文档页脚。
在这种情况下,各种API或SDK的某些方面是否允许word宏访问自己的节点ID(可能还有其他元数据)?
我找到了文件C:\ Users [用户名] \ AppData \ Roaming \ OpenText \ OTEdit \ sync.fedb,它似乎在文件位置/名称和内容服务器中的文档之间存在映射,但是因为OTEdit.exe总是锁定文件,所以直接询问这看起来有点像黑客,我想知道是否有支持这种方法。
我已将DPS调查为将内容服务器节点ID标记为单词doc属性的方法,虽然这可以在用户关闭并重新打开文档时起作用,但在文档之前属性不可用关闭,因此在这种情况下无用。
答案 0 :(得分:0)
我发现了一种不同的方法,因为sync.fedb
进程锁定了OTEdit
,并且似乎没有任何方法可以通过SDK使用word宏访问文档元数据。这有点像黑客,但我已经把这些细节放在这里以防其他人有兴趣这样做。
已修改的文档存储在路径中的文件夹中,如:C:\Users\[username]\AppData\Roaming\OpenText\OTEdit\EC_[servername]\[folder]\[current document name]
[folder]
可能与Content Server中的文件夹匹配,或者可能不匹配 - 最好检查~otdirinfo.ini
文件并从Browse
网址解析父文件夹ID。
从这里我们可以使用以下内容进行数据库搜索:
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的方法有时因版本而异。