存储查询是指存储在数据库中并由名称标识的查询。虽然查询定义存储在数据库中,但存储查询中包含的项是在它们被查询时以动态方式组装的。所有存储查询都可供任何人访问。但是,仅当您具有业务流程管理员或任务管理员权限时,才能创建和删除这些存储查询。您可以使用业务流程对象或任务对象的存储查询,也可以同时使用这两种对象类型的存储查询。
- 创建存储查询。
例如,以下代码段为流程实例创建查询并使用特定的名称来保存该查询。
process.createStoredQuery("CustomerOrdersStartingWithA",
"DISTINCT PROCESS_INSTANCE.PIID, PROCESS_INSTANCE.NAME",
"PROCESS_INSTANCE.NAME LIKE 'A%'",
"PROCESS_INSTANCE.NAME",
null,null);
此查询返回所有以字母 A 开头的流程实例名及其相关流程实例标识(PIID)的有序列表。
- 运行由存储查询定义的查询。
QueryResultSet result = process.query("CustomerOrdersStartingWithA",
new Integer(0));
此操作返回满足条件的对象。在本例中,此操作返回所有以 A 开头的客户订单。
- 可选: 列示可用的存储查询。
例如,以下代码段说明如何获取流程对象的存储查询列表。
String[] storedQuery = process.getStoredQueryNames();
- 可选: 检查由特定存储查询定义的查询。
StoredQuery storedQuery = process.getStoredQuery("CustomerOrdersStartingWithA");
String selectClause = storedQuery.getSelectClause();
String whereClause = storedQuery.getWhereClause();
String orderByClause = storedQuery.getOrderByClause();
Integer threshold = storedQuery.getThreshold();
- 删除存储查询。
以下代码段说明如何删除步骤 1 中创建的存储查询。
process.deleteStoredQuery("CustomerOrdersStartingWithA");