集成服务器 - 将管道保存到数据库

Integration Server - save pipeline to database

我正在尝试创建服务,每次调用其中一项已安装的服务时都会写入输入和输出管道 (xmldata)。当调用其他服务时,我的服务应该如何知道?是否有任何内置工具可以捕获输入和输出管道并保存到文件或任何其他来源?

您可以在 WmPublic 包中使用 webMethods 的 build-in 服务之一:

pub.flow:savePipelineToFile

请注意,不建议在生产中使用 "savePipelineToFile" ,原因很明显 performance/resources。当然,要从文件中加载管道,请使用:

pub.flow:restorePipelineFromFile

在 webMethods 中调试的通常工作流程是:

  1. 添加 "savePipelineToFile" 步骤作为第一个指令 您的流量服务。
  2. 执行流服务或从某个将触发流服务的客户端执行。
  3. 禁用流服务中的 "savePipelineToFile" 步骤。
  4. 在流服务的最顶部添加 "restorePipelineFromFile" 步骤。
  5. 运行 调试模式下的 webMethods Designer 并单步执行。一旦它 越过 "restorePipelineFromFile" 步骤,您应该会看到 管道的全部内容,包括由 客户。如果您继续逐步执行流程服务 步骤然后你应该看到最终输出是什么。

服务"savePipelineToFile"和"restorePipelineFromFile"对于调试您的服务非常有用。 "pipeline" 文件将位于:

IntegrationServer\pipeline

如果您的要求决定您需要生成 xml 平面文件,请使用以下内容:

将文档序列化为xml(WmPublic 包)

pub.xml:documentToXMLString

将xml字符串写入文件(WmPublic包)

pub.file:stringToFile

希望对您有所帮助!

编辑:

默认情况下,soap header 是隐藏的。大多数时候您不需要 soap headers,但您可以强制 webMethods 通过执行以下操作将 soap headers 添加到管道中。

1) 单击 Web 服务描述符。

2) 在属性面板中,将 "Pipeline Headers Enabled" 设置为 true。

Soap header 在设计时不会出现在您的管道中。它只会在运行时存在。如果您想查看肥皂的内容 header,那么您将需要使用我之前描述的 "savePipelineToFile" / "restorePipelineFromFile" 技术。

要使 soap header 在设计时出现,您必须隐式映射到 soap header 字段,就好像它们就在那里一样。