Apache NiFi的序列2或更多SOAP调用?

Apache NiFi的序列2或更多SOAP调用?,soap,apache-nifi,Soap,Apache Nifi,多亏了,我才能够打一个SOAP电话。使用的策略是使用GenerateFlowFile处理器,并将我的内容插入到自定义内容中。这个调用需要一个用户名和密码,以及另一个或两个变量,并且表达式语言整齐地填充了它 好 现在,我真正需要的是两个SOAP调用,其中第一个SOAP调用返回一个序列号,我提供给第二个调用以获取我返回的特定数据文件。我已经为第一次SOAP交互设置了一个ProcessorGroup,这将导致为序列号设置一个flow属性 rub:GenerateFlowFile只在计时器上工作。我还没

多亏了,我才能够打一个SOAP电话。使用的策略是使用GenerateFlowFile处理器,并将我的内容插入到自定义内容中。这个调用需要一个用户名和密码,以及另一个或两个变量,并且表达式语言整齐地填充了它

现在,我真正需要的是两个SOAP调用,其中第一个SOAP调用返回一个序列号,我提供给第二个调用以获取我返回的特定数据文件。我已经为第一次SOAP交互设置了一个ProcessorGroup,这将导致为序列号设置一个flow属性

rub:GenerateFlowFile只在计时器上工作。我还没有找到一种方法,可以使用第一个SOAP流的结果为第二个调用触发一个适当构建的流文件


想法?我一直困惑但尚未找到解决方案的事情包括RouteOnAttribute、RouteOnContent、MergeContent、等等

您可以使用
ReplaceText
接受具有正确
sequenceNumber
属性的传入流文件,并使用所需的新SOAP主体填充流文件内容。替换值属性支持表达式语言,因此可以提供如下值:

  • 搜索值:
    (?s)(^.*$)
  • 替换值:
    ${sequence\u number}
如果只需要替换部分内容或维护一些现有内容文本,则可以使用正则表达式匹配组和反向引用来标识这些内容


然后,来自
ReplaceText
处理器的输出将被路由到第二个
InvokeHTTP
处理器,以执行第二个SOAP调用

再加上@Andy说的话。您收到的包含
sequenceNumber
的响应将是XML格式的,对吗?因此,您可以使用
EvaluateXPath
处理器解析并获取序列号,然后使用Andy提到的方法。i、 e.使用
ReplaceText
处理器生成SOAP请求主体,该主体将被发送到第二个
InvokeHTTP

因此,整个流程如下所示:

GenerateFlowfile -> InvokeHTTP -> EvaluateXPath -> ReplaceText -> InvokeHTTP -> (YOUR_LOGIC)

非常感谢。我专注于GenerateFlowFile for SOAP,忽略了以其他方式生成请求文本的可能性。这就是解决方案的关键:定期生成FlowFile以发出请求(在我的情况下是每天),然后馈送到ReplaceText。谢谢!我确实需要一个路径来完成序列号。我就是这样设置最初提到的flow属性的。但是,您在这里的描述使它更清晰,以便下一个跟随您的人可以跟随。