繁体   English   中英

如何调用异步BPEL流程?

[英]How to call an asynchronous BPEL process?

我有一个异步BPEL流程,我想从我的Java EE Web应用程序中调用它。 我怎样才能做到这一点? 我正在使用Oracle SOA-Suite 11g PS3。

异步SOAP / HTTP发送器与同步SOAP / HTTP客户端基本相同,只是它会丢弃响应。 仅检查响应的HTTP状态,以验证接收方是否理解您的消息。

异步接收器基本上是SOAP / HTTP服务器,侦听请求的“ ReplyTo / Adress”字段中发送的地址。 收到消息后,它将发送带有“ 200”状态代码的空响应。

使用WS-Addressing SOAP标头字段“ MessageID”(请求)和“ RelatesTo”(响应)将发送和接收的消息进行关联。

如果您对“低技术含量”解决方案感到满意,则可以像通过HTTP的XML一样发送/接收Asynch SOAP请求。 BPEL流程“ AsynchDummy”会将以下HTTP请求理解为异步请求。 AsynchDummy是使用JDeveloper生成的默认异步BPEL流程:

<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" env:encodingStyle="">
  <env:Header>
    <ReplyTo xmlns="http://schemas.xmlsoap.org/ws/2003/03/addressing">
      <Address>http://localhost:3333/my/j2ee/servlet</Address>
      <PortType xmlns:ptns="http://xmlns.oracle.com/AsynchDummy">ptns:AsynchDummyCallback</PortType>
      <ServiceName xmlns:snns="http://xmlns.oracle.com/AsynchDummy">snns:AsynchDummyCallbackService</ServiceName>
    </ReplyTo>
    <MessageID xmlns="http://schemas.xmlsoap.org/ws/2003/03/addressing" ans1:rootId="610005" xmlns:ans1="http://schemas.oracle.com/bpel" ans1:parentId="160005" ans1:priority="0">ABC123</MessageID>
  </env:Header>
  <env:Body>
    <AsynchDummyProcessRequest xmlns="http://xmlns.oracle.com/AsynchDummy">
      <input>this is the request</input>
    </AsynchDummyProcessRequest>
  </env:Body>
</env:Envelope>

不要忘记将SOAPAction HTTP标头设置为“ initiate” (包括引号)。

您可以从BPEL流程的回调客户端步骤中看到类似的消息:

<?xml version="1.0" encoding="UTF-8"?>
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
  <soap-env:Header xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:add="http://schemas.xmlsoap.org/ws/2003/03/addressing" xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
    <add:RelatesTo>ABC123</add:RelatesTo>
    <add:MessageID ans1:rootId="" ans1:parentId="" ans1:priority="0" xmlns:ans1="http://schemas.oracle.com/bpel">ABC456</add:MessageID>
  </soap-env:Header>
  <soap-env:Body>
    <AsynchDummyProcessResponse xmlns="http://xmlns.oracle.com/AsynchDummy">
      <result>this is the result</result>
    </AsynchDummyProcessResponse>
  </soap-env:Body>
</soap-env:Envelope>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM