5.2. 数据索引服务


Data Index 服务是一个专用的支持服务,它存储了与工作流实例及其关联的作业相关的数据。此服务提供了一个 GraphQL 端点,允许用户查询这些数据。

Data Index 服务处理通过事件接收的数据,这些事件可能源自任何工作流或直接来自作业服务。

数据索引支持 Apache Kafka 或 Knative Eventing 来消耗来自工作流的 CloudEvents 信息。它对数据库进行索引并将其存储在数据库中,使其可通过 GraphQL 访问。这些事件提供有关工作流执行的详细信息。Data Index 服务是 OpenShift Serverless Logic 搜索、insights 和管理功能的核心。

Data Index 服务的主要功能如下:

  • 灵活的数据结构
  • 一个可分布式、云就绪的格式
  • 通过 Apache Kafka、Knative 和 CloudEvents 与工作流进行基于消息的通信
  • 强大的基于 GraphQL 的查询 API
注意

当使用 OpenShift Serverless Operator 部署工作流时,您不需要手动安装或配置 Data Index 服务。Operator 会自动管理每个工作流要连接的所有必要配置。

5.2.1. 图形ql 查询工作流实例和作业

要检索有关工作流实例和作业的数据,您可以使用 GraphQL 查询。

5.2.1.1. 从工作流实例检索数据

您可以使用以下查询示例检索有关特定工作流实例的信息:

{
  ProcessInstances {
    id
    processId
    state
    parentProcessInstanceId
    rootProcessId
    rootProcessInstanceId
    variables
    nodes {
      id
      name
      type
    }
  }
}
Copy to Clipboard Toggle word wrap

5.2.1.2. 从作业检索数据

您可以使用以下查询示例从特定作业实例检索数据:

{
  Jobs {
    id
    status
    priority
    processId
    processInstanceId
    executionCounter
  }
}
Copy to Clipboard Toggle word wrap

5.2.1.3. 使用 where 参数过滤查询结果

您可以使用 where 参数过滤查询结果,允许基于工作流属性的多个组合。

按状态过滤的查询示例

{
  ProcessInstances(where: {state: {equal: ACTIVE}}) {
    id
    processId
    processName
    start
    state
    variables
  }
}
Copy to Clipboard Toggle word wrap

按 ID 过滤的查询示例

{
  ProcessInstances(where: {id: {equal: "d43a56b6-fb11-4066-b689-d70386b9a375"}}) {
    id
    processId
    processName
    start
    state
    variables
  }
}
Copy to Clipboard Toggle word wrap

默认情况下,使用 AND Operator 合并过滤器。您可以通过将过滤器与 AND 或 OR 运算符组合来修改此行为。

将过滤器与 OR Operator 组合的查询示例

{
  ProcessInstances(where: {or: {state: {equal: ACTIVE}, rootProcessId: {isNull: false}}}) {
    id
    processId
    processName
    start
    end
    state
  }
}
Copy to Clipboard Toggle word wrap

将过滤器与 AND 和 OR Operator 组合的查询示例

{
  ProcessInstances(where: {and: {processId: {equal: "travels"}, or: {state: {equal: ACTIVE}, rootProcessId: {isNull: false}}}}) {
    id
    processId
    processName
    start
    end
    state
  }
}
Copy to Clipboard Toggle word wrap

根据属性类型,您可以使用以下 avaialable Operator:

Expand
属性类型可用的 Operator

字符串数组

  • 包含: 字符串
  • containsAll: 字符串数组
  • containsAny: 字符串数组
  • isNull: 布尔值(true 或 false)

字符串

  • in: 字符串数组
  • 类似于: 字符串
  • isNull: 布尔值(true 或 false)
  • 等于 :字符串

ID

  • in: 字符串数组
  • isNull: 布尔值(true 或 false)
  • 等于 :字符串

布尔值

  • isNull: 布尔值(true 或 false)
  • 等于 :布尔值(true 或 false)

数字

  • 在 中 :整数阵列
  • isNull: 布尔值
  • 等于 :整数
  • betterThan: 整数
  • greaterThanEqual: Integer
  • lessThan: 整数
  • lessThanEqual: Integer
  • :数字范围
  • 来自 :Integer
  • to: 整数

Date

  • isNull: 布尔值(true 或 false)
  • 等于 :日期时间
  • greaterThan: 日期时间
  • greaterThanEqual: 日期时间
  • lessThan: 日期时间
  • lessThanEqual: 日期时间
  • between: 日期范围
  • : 日期时间
  • :日期时间

5.2.1.4. 使用 orderBy 参数对查询结果进行排序

您可以使用 orderBy 参数根据工作流属性对查询结果进行排序。您还可以以升序(ASC)或降序(DESC)顺序指定排序方向。按照您指定的顺序应用多个属性。

ASC 顺序排序的开始时间的查询示例

{
  ProcessInstances(where: {state: {equal: ACTIVE}}, orderBy: {start: ASC}) {
    id
    processId
    processName
    start
    end
    state
  }
}
Copy to Clipboard Toggle word wrap

5.2.1.5. 使用分页参数限制结果数量

您可以控制返回的结果数量,并使用 分页 参数指定偏移量。

从偏移 0 开始将结果限制为 10 的示例

{
  ProcessInstances(where: {state: {equal: ACTIVE}}, orderBy: {start: ASC}, pagination: {limit: 10, offset: 0}) {
    id
    processId
    processName
    start
    end
    state
  }
}
Copy to Clipboard Toggle word wrap

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat