This topic applies only to the IBM Business Process Manager Advanced configuration.

调用方式

借助 SCA,您可以使用同步和异步编程方式来调用服务组件。可以将各个模块组成总体解决方案,而服务组件与模块之间的异步通道可以提高系统的总体吞吐量和灵活性。

组件向其应用程序业务逻辑呈示业务级别的接口,以便可以使用或调用服务。组件的接口用于定义可以调用的操作以及传递的数据(例如,输入参数、返回值以及异常)。导入和导出也具有接口,以便可以调用已发布的服务。

所有组件都具有 WSDL 类型的接口。只有 Java™ 组件才支持 Java 类型的接口。如果组件、导入或导出具有多个接口,那么所有接口必须为同一类型。

您可以采用同步或异步方式来调用组件,这与实现是同步实现还是异步实现无关。组件接口是采用同步形式定义的,但是也为它们生成了异步支持。您可以将首选交互方式指定为同步方式或者异步方式。如果指定为异步类型,则告知接口用户,它至少包含一项要花相当长时间才能完成的操作。因此,调用服务在等待完成操作并发送其响应时,一定要避免让事务保持打开状态。此交互方式适用于接口中的所有操作。

在 IBM Integration Designer 中编写应用程序时,最好显式地设置各个组件进行相互调用时采用的调用方式。当您进行性能分析或者开发错误处理策略时,至少希望知道整个应用程序中使用的调用方式。当您考虑/设置事务边界时,肯定需要了解应用程序中的交互。用户通常会惊奇地发现,设置或确定组件之间的调用方式并不是表面上看起来那么容易。本节说明了在运行时如何根据应用程序的具体特征来设置或确定使用哪种调用方式。

SCA 提供了下列调用方式:
  • 同步方式
  • 使用单向操作的异步方式
  • 具有回调的异步方式
  • 具有延迟响应的异步方式
Java 实现中用于进行调用的 SCA API 会确定在运行时使用哪种调用方式:
  • invoke():同步
  • invokeAsync():异步
  • invokeAsyncWithCallback():异步

通常,在考虑一个组件(源或客户端)与另一个组件(目标)之间的交互时,服务客户端将确定使用哪种类型的调用。例如,如果源组件是一个 Java 组件,那么源与目标之间的调用方式由实现中使用的特定 SCA 调用 API(例如,invoke()、invokeAsync() 或 invokeAsyncWithCallback())确定。Integration Designer 中提供的其他每个组件都有一组规则,用来确定调用是同步调用还是异步调用。

某些组件/导入被认为是异步的:
  • 长时间运行的 BPEL
  • 人员任务
  • MQ/MQ 导入
  • JMS/通用导入
  • JMS/JMS 导入
对于这些类型的组件或导入的所有调用都必须是异步调用。如果执行调用的组件(或源)同步启动交互,那么 SCA 会将此交互切换为异步交互。