本文将介绍如何配置和使用分页查询,还将介绍在 IBM BPM 中集成分页查询功能的几种方法。
WebSphere Adapter for JDBC(后面简称为 JDBC Adapter)是 IBM Business Process Manager V7.5 (IBM BPM) 提供的一个">功能强大的数据库资源适配器。运行在 IBM BPM 上的应用程序可以通过 JDBC Adapter 实现与任意数据库的双向通信。具体来说,它使 J2EE 项目和面向服务架构(SOA)项目能够以业务对象的形式与 IBM BPM 交换数据。
数据库查询是 JDBC Adapter 的基本功能之一。实际上,在处理大型数据集时可能会遇到性能下降问题。根据不同的数据库产品,人们开发了大量分页查询技术来提高数据库查询操作的效率。一个常见的做法是对结果集进行分页,然后以可管理的大小返回查询结果。从 Version 7.5 开始,JDBC Adapter 为分页查询提供了一个内置功能,允许您更有效地处理大型数据集。本文将介绍一个业务流程解决方案,帮助您在 IBM BPM 中使用分页查询功能。
要完成本文中的步骤,您需要具备以下产品:
IBM
WebSphere Adapter for JDBC V7.5 IBM Business Process Manager V7.5 IBM
Integration Designer V7.5
WebSphere Adapter for JDBC 的分页查询功能
在这一小节中,我们将通过一个使用 JDBC Adapter 的样例业务场景介绍分页查询的一种实用应用。
样例业务场景
为了维护账单信息,开发人员在 DB2® 数据库中创建了一个表。如清单 1 所示,该表共有四列,用于保存各种账单明细。
清单 1. 账单信息表
CREATE TABLE Bill( ID INTEGER NOT NULL PRIMARY KEY, PERSONID VARCHAR(50), BILLDATE TIMESTAMP, AMOUNT DOUBLE);
在系统中,可以采取一些必要的步骤来检索信息,包括按 BILLDATE 对账单信息分类,然后对所有数据记录进行查询,直到找到特定的记录。整个过程开销很大,并将随着业务的增长而变慢。然而,由于账单是在特定时间段内生成的,例如,具体某一天,因此不需要对整个表进行处理,可以使用分页查询来查找记录的特定部分,从而提高操作效率。
现有查询功能的局限性
RetrieveAll 是 JDBC Adapter 出站流程 (outbound process) 提供的基本数据库操作之一。它允许您指定检索特定数据记录的搜索条件。在 Version 7.5 以前,RetrieveAll 并不支持分页查询功能。您必须自己编写代码来实现此功能,或者对数据库检索行为进行优化。然而,这两种方法都非常繁琐和笨拙,难以满足多变的业务需求。
分页查询机制
从 Version 7.5 开始,JDBC Adapter 提供了内置的分页查询功能,为 RetrieveAll 操作添加了三个 InteractionSpec 属性:
enablePaging:RetrieveAll 将在 enablePaging 设置为 true 时执行分页查询。默认情况下,该属性被设置为 false,JDBC Adapter 将对所有记录执行查询。 pageSize:该属性指定返回的结果集的大小。 startIndex:该属性指定分页查询的起始位置。例如,startIndex=100 和 pageSize=50 意味着分页查询将返回 50 条记录,起始位置为第 101 条记录。
在预配置向导中,还可以在 JDBC Adapter 运行于 IBM BPM 时动态设置这些属性,IBM BPM 支持动态修改 InteractionSpec 属性。因此,您可以通过修改 pageSize 和 startIndex 的值来针对特定目标运行查询。