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

比较用于检索流程和任务数据的编程接口

Business Process Choreographer 提供查询表 API 和查询 API 来用于检索流程和任务数据。这些接口中的每一种都具有不同的特征。

您选择的查询接口取决于若干因素,包括客户机应用程序必须提供的功能,您是否拥有现有的最终用户客户机基础结构,以及性能注意事项。为了帮助您决定要使用哪种接口,下表将查询表查询编程接口的特征进行了比较。
特征 查询表 API 查询 API
可用性 查询表 API 可用于业务流程管理器 EJB、Web Service 和 REST 编程接口。 查询 API 可用于 EJB、Web Service、JMS 和 REST 编程接口。
内容检索方法 此 API 提供以下方法:
  • queryEntities
  • queryEntityCount
  • queryRows
  • queryRowCount
此 API 提供以下方法:
  • query
  • queryAll
  • queryProcessTemplates
  • queryTaskTemplates
元数据检索方法 此 API 提供以下方法:
  • getQueryTableMetaData
  • findQueryTableMetaData
此 API 提供以下方法:
  • QueryResultSet.getColumnType
查询表名称 指定查询表 API 所运行于的查询表。每一次仅可以查询一个查询表。

例如,queryEntities("CUST.TASKS", ...)

SELECT 子句指定查询所运行于的列和预定义数据库视图。此规范类似于 SQL select 子句。

例如,query("TASK.TKIID, TASK.STATE, WORK_ITEM.REASON", ...)

SELECT 子句和所选属性 使用查询表 API 的过滤选项可指定查询将返回的属性。因为将针对一个查询表运行查询,所以属性可通过其名称进行唯一标识。 使用 SELECT 子句可指定属性。属性名称的语法为:view_name.attribute_name。 例如,要搜索任务状态,请在查询中指定 TASK.STATE。
WHERE 子句和过滤器 对查询表 API 使用 queryCondition 属性可进一步对查询结果进行过滤。如果已对查询表定义指定了主查询表过滤器、权限过滤器或查询表过滤器,那么查询表将提供经过预过滤的内容。 使用 WHERE 子句可对查询结果进行过滤。
WHERE 子句和选择条件 对于查询表 API,不需要此格式的查询 API WHERE 子句。对查询表 API 使用 queryCondition 属性可进行额外的过滤。

查询表定义中的选择条件将选择附加的查询表的特定 属性。除了由针对查询 API 的 WHERE 子句执行的过滤之外,还将实现此操作。

选择条件不可用于查询 API。但是,选择条件类似于 WHERE 子句的用于定义 QUERY_PROPERTY、TASK_CPROP 或 TASK_DESC 的名称或语言环境(举例而言)的部分。

例如,WHERE 子句 QUERY_PROPERTY.NAME='xyz' 等同于将 NAME='xyz' 指定为针对 QUERY_PROPERTY 附 加查询表的查询表定义的选择条件。

工作项和授权 使用 WORK_ITEM 查询表可访问工作项。您可以使用 AuthorizationOptions 对象或 AdminAuthorizationOptions 对象,来定制在开发查询表时针对查询表定义的工作项使用以及针对查询表 API 的工作项使用。

例如,要在查询 TASK 查询表时排除 everybody 工作项,请指定 queryCondition 属性 WI.EVERYBODY=0 或对 AuthorizationOptions 属性指定 setUseEverbody(Boolean.FALSE)

使用 WORK_ITEM 视图可访问工作项。 对于查询结果,所有四种类型的工作项均被考虑在内:everybody、individual、groups 和 inherited 工作项。要对工作项进行过滤以得到特定类型的工作项,请定制 WHERE 子句。

例如,要排除 everybody 工作项,请在 WHERE 子句中指定 WORK_ITEM.EVERYBODY=0

参数 您可以为组合查询表在过滤器和选择条件中使用参数。 参数不可用于查询 API,除非使用存储的查询。
存储的查询和查询表 存储的查询与查询表之间的差异是,存储的查询为一个特定的查询而定义,而查询表则为一组特定的查询而定义。 例如,查询表定义不允许指定 order-by 子句,因为通常只有当运行查询时,该信息才可用。 您可以使用存储的查询来运行包含了预定义的一组选项的查询。
具体化视图 具体化视图不可用于查询表 API。 具体化视图使用数据库技术来为查询提供性能改进。
定制表 补充查询表提供与定制表相同的功能。 定制表用于在 Business Process Choreographer 数据库模式外部的查询中包含数据。
queryAll 和授权选项 queryAll 功能由 AdminAuthorizationOptions 对象提供,可以将此对象而非 AuthorizationOptions 对象传递到查询表 API。调用者必须处于 BPESystemAdministrator、TaskSystemAdministrator、BPESystemMonitor 或 TaskSystemMonitor 角色。 queryAll 方法可供具有 BPESystemAdministrator Java EE 角色的用户使用,以在不受特定用户或组的工作项限制的情况下返回查询结果中的所有对象。
国际化 对于查询表的属性以及对于查询表,在使用查询表时可使用已本地化的显示名称和描述。 将按照在数据库中的显示或在 select 子句中的指定来返回所选视图的列的名称。