本主题仅适用于 IBM Business Automation Workflow Advanced 配置。

异步调用

Draft comment:
This topic only applies to BAW, and is located in the BAW repository. Last updated on 2025-01-20 10:38
以异步方式调用服务组件时,服务请求者和服务提供者将在不同的执行线程中运行。 对于异步调用,当提供程序处理请求时,IBM® Workflow Server 中的调用组件不会被阻塞。 SCA 运行时会立即将控制权返回给请求者,从而允许它继续执行处理。

对于 SCA 中的异步调用而言,可以采用三种类型的异步交互方式:单向、延迟响应和具有回调的请求。 对于全部这三种类型的异步调用而言,服务请求者都将立即从 SCA 运行时接收回控制权。

以后,服务请求者可以通过两种方法捕获响应。
  • 具有延迟响应的异步方式,在这种方式下,服务请求者对服务提供者调用操作,然后继续处理。 以后,服务请求者调用服务提供者以获取响应。
  • 具有回调的异步方式,在这种方式下,服务请求者对服务提供者调用操作并指定回调处理程序。 当响应可用时,SCA 运行时通过调用此回调处理程序将响应返回给请求者。

具有延迟响应的异步方式 SCA 调用

如果服务请求者需要进一步执行不依赖于响应所返回的信息的处理,那么具有延迟响应的异步方式 SCA 调用适用。

在使用具有延迟响应的异步方式调用时,SCA 运行时线程中的资源将保留到可以从服务提供者获得响应为止。 如果服务提供者需要几小时甚至几天来处理请求,那么应使用具有回调的异步方式调用。 异步与延迟响应 SCA 调用在 图 1中显示。
图 1. 具有延迟响应的异步方式 SCA 调用

带有延迟响应的异步 SCA 调用显示服务请求者如何继续处理。

异步与延迟响应 SCA 调用的示例方案

车辆保险对比 Web 站点优先使用具有延迟响应的异步方式调用。 服务请求者请求搜索由两个不同的车辆保险供应商提供的车辆保险。 响应相互无关。 当车辆保险供应商返回响应时,服务请求者可以选择最便宜的报价。 图 2 显示服务请求者如何同时调用服务提供者 A 和 B。
图 2. 使用具有延迟响应的异步方式调用的车辆保险对比 Web 站点

带有延迟响应的异步 SCA 调用显示服务请求者如何继续处理。 服务请求者能够向多个服务提供者发送多个调用。

服务请求者创建针对服务提供者 A 的请求并调用 SCA 运行时。 SCA 运行时会立即将控制权返回给请求者,从而允许它继续执行处理。 然后,服务请求者能够针对服务提供者 B 创建第二个请求。

服务请求者对 SCA 运行时进行进一步调用以收集响应。 系统将处理这些调用,然后向用户返回最终响应。

具有回调的异步方式 SCA 调用

在此调用样式中,主调组件(服务请求者)指定用来接收和处理响应的回调处理程序。 在服务请求者发送请求之后,发出请求的线程将完成处理。 然后,释放与该线程相关联的 SCA 运行时资源。 可以获得服务提供者的响应时,将使用新的 SCA 运行时线程来调用回调处理程序以执行服务请求者所需的处理。

这种样式的调用用于可能需要几小时或几天才能返回响应的长时间运行流程或服务。 图 3中显示了具有回调 SCA 调用的异步操作。
图 3。 具有回调的异步方式 SCA 调用

具有回调的异步 SCA 调用显示了如何继续处理服务请求者。

具有回调 SCA 调用的示例方案异步

一间公司希望在执行审计时使用此样式的调用。 服务请求者希望更新员工的工资详细信息,并且只需要在更新完成后接收通知。

服务请求者向服务提供者发送一系列调用以更新员工的工资详细信息。 服务提供者对每个请求调用审计服务。 此审计可能需要数小时到一整天的时间来记录每位员工的工资详细信息。 审计服务完成后,将使用回调处理程序将响应返回给服务请求者,并向用户发送电子邮件来通知他们更新已成功。