Oracle GoldenGate · Arazzo Workflow

Oracle GoldenGate Provision Extract Pipeline

Version 1.0.0

Create a credential alias, create an Extract process, start it, and poll until running.

1 workflow 1 source API 1 provider
View Spec View on GitHub CDCData IntegrationData SynchronizationDatabaseEnterpriseReal-Time ReplicationArazzoWorkflows

Provider

oracle-goldengate

Workflows

provision-extract-pipeline
Register a credential alias then create, start, and verify an Extract process.
Creates a credential alias in a domain, creates a CDC Extract that uses it, starts the Extract, and confirms it reaches a running state.
4 steps inputs: alias, authorization, config, domain, extract, password, trail, userid outputs: extractName, finalStatus, lag
1
createCredential
createCredentialAlias
Create the credential alias the Extract will use to connect to the source database.
2
createExtract
createExtract
Create a change-data-capture Extract that references the credential alias and writes to the supplied trail.
3
startExtract
issueExtractCommand
Issue a START command to the newly created Extract process.
4
pollStatus
getExtractStatus
Poll the Extract runtime status until it reports running, branching back to retry while it is still starting.

Source API Descriptions

Arazzo Workflow Specification

oracle-goldengate-provision-extract-pipeline-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Oracle GoldenGate Provision Extract Pipeline
  summary: Create a credential alias, create an Extract process, start it, and poll until running.
  description: >-
    Stands up a change-data-capture Extract from scratch. It first registers a
    database credential alias in the credential store, then creates an Extract
    process that references that alias, issues a START command to the process,
    and polls the Extract status until it reports running. Every step spells out
    its request inline so the flow can be read and executed without opening the
    underlying OpenAPI description.
  version: 1.0.0
sourceDescriptions:
- name: goldengateApi
  url: ../openapi/oracle-goldengate-rest-api-openapi.yml
  type: openapi
workflows:
- workflowId: provision-extract-pipeline
  summary: Register a credential alias then create, start, and verify an Extract process.
  description: >-
    Creates a credential alias in a domain, creates a CDC Extract that uses it,
    starts the Extract, and confirms it reaches a running state.
  inputs:
    type: object
    required:
    - authorization
    - domain
    - alias
    - userid
    - password
    - extract
    - trail
    - config
    properties:
      authorization:
        type: string
        description: HTTP Basic Authorization header value (e.g. "Basic dXNlcjpwYXNz").
      domain:
        type: string
        description: Credential store domain name.
      alias:
        type: string
        description: Credential alias to create.
      userid:
        type: string
        description: Database user ID including connect string.
      password:
        type: string
        description: Password for the database user.
      extract:
        type: string
        description: Name of the Extract process to create.
      trail:
        type: string
        description: Trail file prefix the Extract writes to (e.g. aa).
      config:
        type: array
        items:
          type: string
        description: Extract parameter file content lines.
  steps:
  - stepId: createCredential
    description: >-
      Create the credential alias the Extract will use to connect to the source
      database.
    operationId: createCredentialAlias
    parameters:
    - name: Authorization
      in: header
      value: $inputs.authorization
    - name: domain
      in: path
      value: $inputs.domain
    - name: alias
      in: path
      value: $inputs.alias
    requestBody:
      contentType: application/json
      payload:
        userid: $inputs.userid
        password: $inputs.password
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      credentialAlias: $response.body#/alias
  - stepId: createExtract
    description: >-
      Create a change-data-capture Extract that references the credential alias
      and writes to the supplied trail.
    operationId: createExtract
    parameters:
    - name: Authorization
      in: header
      value: $inputs.authorization
    - name: extract
      in: path
      value: $inputs.extract
    requestBody:
      contentType: application/json
      payload:
        type: cdc
        trail: $inputs.trail
        config: $inputs.config
        credentials:
          domain: $inputs.domain
          alias: $inputs.alias
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      extractName: $response.body#/name
      extractStatus: $response.body#/status
  - stepId: startExtract
    description: Issue a START command to the newly created Extract process.
    operationId: issueExtractCommand
    parameters:
    - name: Authorization
      in: header
      value: $inputs.authorization
    - name: extract
      in: path
      value: $inputs.extract
    requestBody:
      contentType: application/json
      payload:
        action: start
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      commandMessage: $response.body#/response/message
  - stepId: pollStatus
    description: >-
      Poll the Extract runtime status until it reports running, branching back
      to retry while it is still starting.
    operationId: getExtractStatus
    parameters:
    - name: Authorization
      in: header
      value: $inputs.authorization
    - name: extract
      in: path
      value: $inputs.extract
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      status: $response.body#/status
      lag: $response.body#/lag
    onSuccess:
    - name: stillStarting
      type: goto
      stepId: pollStatus
      criteria:
      - context: $response.body
        condition: $.status == "starting"
        type: jsonpath
  outputs:
    extractName: $steps.createExtract.outputs.extractName
    finalStatus: $steps.pollStatus.outputs.status
    lag: $steps.pollStatus.outputs.lag