0

每次我尝试使用服务“POST /codeTemplateLibraries/_bulkUpdate”导入 codeTemplates 时都会出错。

我正在使用节点客户端发送它:

const options = {
method: 'POST',
url: `...`,
headers:
{
'content-type': 'multipart/form-data',
Cookie: this.cookie
},
multipart: {
chunked: true,
data: [
{
'Content-Disposition': "form-data; name='libraries'",
'Content-Type': 'application/xml',
body: `<list>${xmlSetCodeLibs}</list>`
}
,
{
'Content-Disposition': "form-data; name='updatedCodeTemplates'",
'Content-Type': 'application/xml',
body: `<list>${xmlSetCodeTemplates}</list>`
}
]
}
};

我也尝试过 PUT /codeTemplateLibraries 但结果不是我所期望的。我收到 http 状态 200 并插入库,但不是 codeTemplates

4

1 回答 1

0

我自己偶然发现了解决方案,我可以回答该解决方案充其量是违反直觉的。

复制 codeTemplateLibrary(不要与 codeTemplate 混淆)时,Mirth 会更新 codeTemplateLibrary 和 codeTemplates,但 codeTemplates 不可见。为了使它们可见(并修复错误),您必须在对 codeTemplateLibrary 进行完整更新后,使用 PUT /codeTemplates/{codeTemplateId} 调用单独更新每个 codeTemplate。

所以你的代码解决方案应该:

  1. 调用完整的 codeTemplateLibraries(请务必发送标头以指示您也希望包含 codeTemplate 代码,因为默认情况下会省略它)
  2. 将 codeTemplateLibraries 推送到您想要的任何 Mirth 实例
  3. 使用 E4X 或类似的 XML 解析工具来提取在您之前调用的 codeTemplateLibraries 中找到的每个 codeTemplate 实例(您不需要知道哪个 codeTemplate 在哪个 codeTemplateLibrary 下,因为该数据已经发送)。
  4. 提取 codeTemplate ID(使用 E4X 或类似的)
  5. 使用您提取的 ID,调用 PUT /codeTemplates/{codeTemplateId}(将 {codeTemplateId} 替换为您提取的 ID)对现在添加的 codeTemplate 发出“更新”(因此您需要再次包含完整代码)在您拥有的 codeTemplateLibraries 列表中找到的每个单独出现的 codeTemplate。这将使特定的 codeTemplate 可见。

对每个 codeTemplate 实例执行步骤 4 到 5 后,您应该会发现 codeTemplate 现在在 Mirth 中可见。是的,它效率低下且速度慢,但目前这是我设法开始工作的唯一方法。

于 2018-09-21T13:53:13.513 回答