5.2. Data Index サービス
Data Index サービスは、ワークフローインスタンスとそれに関連付けられたジョブに関連するデータを保存する専用のサポートサービスです。このサービスは、GraphQL エンドポイントを提供します。これにより、ユーザーはそのデータをクエリーできます。
Data Index サービスは、イベントを介して受信するデータを処理します。このイベントは、任意のワークフローから、または直接 Job サービスから発生する場合があります。
Data Index は、ワークフローからの CloudEvents メッセージを消費する Apache Kafka または Knative Eventing をサポートします。このイベントデータをインデックス化してデータベースに格納し、GraphQL 経由でアクセスできるようにします。これらのイベントは、ワークフロー実行に関する詳細情報を提供します。Data Index サービスは、OpenShift Serverless Logic の検索、インサイトおよび管理機能の中心となります。
Data Index サービスの主な機能は以下のとおりです。
- 柔軟なデータ構造
- 分散可能なクラウド対応形式
- Apache Kafka、Knative、および CloudEvents を介したワークフローとのメッセージベースの通信
- 強力な GraphQL ベースのクエリー API
OpenShift Serverless Operator を使用してワークフローをデプロイする場合は、Data Index サービスを手動でインストールしたり、設定したりする必要はありません。Operator は、各ワークフローがこれに接続するために必要なすべての設定を自動的に管理します。
5.2.1. ワークフローインスタンスとジョブの GraphQL クエリー リンクのコピーリンクがクリップボードにコピーされました!
ワークフローインスタンスとジョブに関するデータを取得するには、GraphQL クエリーを使用できます。
5.2.1.1. ワークフローインスタンスからのデータの取得 リンクのコピーリンクがクリップボードにコピーされました!
次のクエリー例を使用して、特定のワークフローインスタンスに関する情報を取得できます。
{
ProcessInstances {
id
processId
state
parentProcessInstanceId
rootProcessId
rootProcessInstanceId
variables
nodes {
id
name
type
}
}
}
5.2.1.2. ジョブからのデータの取得 リンクのコピーリンクがクリップボードにコピーされました!
以下のクエリー例を使用して、特定のジョブインスタンスからデータを取得できます。
{
Jobs {
id
status
priority
processId
processInstanceId
executionCounter
}
}
5.2.1.3. where パラメーターを使用してクエリーの結果をフィルタリングする リンクのコピーリンクがクリップボードにコピーされました!
where パラメーターを使用してクエリーの結果をフィルタリングし、ワークフロー属性に基づいて複数の組み合わせを許可できます。
状態別にフィルタリングするクエリーの例
{
ProcessInstances(where: {state: {equal: ACTIVE}}) {
id
processId
processName
start
state
variables
}
}
ID 別にフィルタリングするクエリーの例
{
ProcessInstances(where: {id: {equal: "d43a56b6-fb11-4066-b689-d70386b9a375"}}) {
id
processId
processName
start
state
variables
}
}
デフォルトでは、フィルターは AND Operator を使用して組み合わせています。この動作は、フィルターを AND Operator または OR Operator と組み合わせることで変更できます。
フィルターを OR Operator と組み合わせるクエリーの例
{
ProcessInstances(where: {or: {state: {equal: ACTIVE}, rootProcessId: {isNull: false}}}) {
id
processId
processName
start
end
state
}
}
フィルターを AND Operator および OR Operator と組み合わせるクエリーの例
{
ProcessInstances(where: {and: {processId: {equal: "travels"}, or: {state: {equal: ACTIVE}, rootProcessId: {isNull: false}}}}) {
id
processId
processName
start
end
state
}
}
属性タイプに応じて、次の使用可能な Operator を使用できます。
| 属性タイプ | 利用可能な演算子 |
|---|---|
| String array |
|
| String |
|
| ID |
|
| Boolean |
|
| 数値 |
|
| Date |
|
5.2.1.4. orderBy パラメーターを使用してクエリー結果をソートする リンクのコピーリンクがクリップボードにコピーされました!
orderBy パラメーターを使用して、ワークフロー属性に基づいてクエリー結果をソートできます。昇順 (ASC) または降順 (DESC) でソート順序を指定することもできます。指定した順序で複数の属性が適用されます。
開始時刻を ASC 順序でソートするクエリーの例
{
ProcessInstances(where: {state: {equal: ACTIVE}}, orderBy: {start: ASC}) {
id
processId
processName
start
end
state
}
}
5.2.1.5. pagination パラメーターを使用して結果の数を制限する リンクのコピーリンクがクリップボードにコピーされました!
pagination パラメーターを使用して、返される結果の数を制御し、オフセットを指定できます。
オフセット 0 から始まる結果を 10 に制限するクエリーの例
{
ProcessInstances(where: {state: {equal: ACTIVE}}, orderBy: {start: ASC}, pagination: {limit: 10, offset: 0}) {
id
processId
processName
start
end
state
}
}