2

事实上,我想知道如何在 Webmethods 中的两个进程之间进行通信。

示例->

我在 SAG Designer 上有两个流程:

在此处输入图像描述

这是我的第一个过程:

在此处输入图像描述

这是我的第二个过程:

在此处输入图像描述

它们同时运行,我想获取“StepTwo”的信息

在此处输入图像描述

我没有发送或接收消息,我只是希望能够通过另一个进程获取管道。

如果需要更多细节或不够清楚,请告诉我。

谢谢你。

4

3 回答 3

3

一般来说,您可以使用 WmMonitor 包中的服务,您可以使用公共服务提供对流程和步骤管道的访问,例如使用“pub.monitor.process.instanceSteps:getStepPipeline”服务。当然,您必须为此特定步骤打开管道日志记录。

但是,我认为您尝试做的事情没有用。为什么一个进程要访问另一个进程的管道?在不知道您的用例细节的情况下,我认为您应该:

  1. 在进程之间发送和接收消息,或者
  2. 进程 P1 和 P2 之间存在父子关系,或
  3. 流程 P1 应该根据一些唯一的业务 ID 将业务相关数据存储在某个数据库或 P2 从中检索信息的任何其他永久存储中。

我不建议直接使用另一个流程的管道。根据您的业务需求而非某些技术要求对流程进行建模。这就是 BPM 的用途。

于 2015-12-21T09:11:45.120 回答
1

我从未使用过 SoftwareAG 的 BPM 工具,但我对 webMethods 有很多经验。直觉上,我认为这是不可能的。

但是,这里有一个可能的解决方法:

  1. 在流程一中,将管道信息序列化为 XML 字符串并将其保存到数据库中。

  2. 在过程二中,从数据库中检索信息并将 XML 字符串反序列化为管道文档。

不幸的是,您的问题中没有足够的信息来给出更详细的答案。

希望能帮助到你!

于 2015-12-14T15:43:05.593 回答
0

我认为我们可以通过保存 P1 的管道数据并在 P2 中使用它来做到这一点,因为您可以使用内置服务pub.flow:savePipelinepub.flow:restorePipeline

请记住,如果您在两者之间重新启动 IS,管道数据将会丢失。如果您仍想重新启动,请将管道数据保存到文件并在重新启动后使用该文件。

请参阅以下服务:- pub.flow:savePipelineToFile 和 pub.flow:restorePipelineFromFile

于 2016-01-21T11:29:01.377 回答