4.2. 데이터 인덱스 서비스
Data Index 서비스는 워크플로우 인스턴스 및 관련 작업과 관련된 데이터를 저장하는 전용 지원 서비스입니다. 이 서비스는 사용자가 해당 데이터를 쿼리할 수 있는 GraphQL 엔드포인트를 제공합니다.
데이터 인덱스 서비스는 이벤트를 통해 수신된 데이터를 처리하며, 이는 모든 워크플로우에서 시작되거나 작업 서비스에서 직접 시작될 수 있습니다.
데이터 인덱스는 워크플로우의 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는 각 워크플로우에 연결하는 데 필요한 모든 구성을 자동으로 관리합니다.
4.2.1. 워크플로우 인스턴스 및 작업에 대한 GraphQL 쿼리
워크플로우 인스턴스 및 작업에 대한 데이터를 검색하려면 GraphQL 쿼리를 사용할 수 있습니다.
4.2.1.1. 워크플로우 인스턴스에서 데이터 검색
다음 쿼리 예제를 사용하여 특정 워크플로우 인스턴스에 대한 정보를 검색할 수 있습니다.
{ ProcessInstances { id processId state parentProcessInstanceId rootProcessId rootProcessInstanceId variables nodes { id name type } } }
4.2.1.2. 작업에서 데이터 검색
다음 쿼리 예제를 사용하여 특정 작업 인스턴스에서 데이터를 검색할 수 있습니다.
{ Jobs { id status priority processId processInstanceId executionCounter } }
4.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 또는 OR 연산자와 결합하여 이 동작을 수정할 수 있습니다.
OR Operator와 필터를 결합하는 예제 쿼리
{ ProcessInstances(where: {or: {state: {equal: ACTIVE}, rootProcessId: {isNull: false}}}) { id processId processName start end state } }
AND 및 OR Operator와 필터를 결합하는 예제 쿼리
{ ProcessInstances(where: {and: {processId: {equal: "travels"}, or: {state: {equal: ACTIVE}, rootProcessId: {isNull: false}}}}) { id processId processName start end state } }
특성 유형에 따라 다음 사용 가능한 Operator를 사용할 수 있습니다.
특성 유형 | 사용 가능한 Operator |
---|---|
문자열 배열 |
|
문자열 |
|
ID |
|
부울 |
|
Numeric |
|
날짜 |
|
4.2.1.4. orderBy 매개변수를 사용하여 쿼리 결과 정렬
orderBy
매개변수를 사용하여 워크플로우 특성을 기반으로 쿼리 결과를 정렬할 수 있습니다. 오름차순 (ASC
) 또는 내림차순으로 정렬 방향을 지정할 수도 있습니다. 지정한 순서에 따라 여러 속성이 적용됩니다.
ASC
순서에서 시작 시간별로 정렬할 쿼리의 예
{ ProcessInstances(where: {state: {equal: ACTIVE}}, orderBy: {start: ASC}) { id processId processName start end state } }
4.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 } }