apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: orders-etl-
  namespace: example-apps
spec:
  entrypoint: etl
  serviceAccountName: example-workflow
  ttlStrategy:
    secondsAfterCompletion: 3600
  arguments:
    parameters:
      - name: window
        value: 24h

  templates:
    - name: etl
      dag:
        tasks:
          - name: ingest
            template: step
            arguments:
              parameters:
                - name: label
                  value: ingest
          - name: validate
            template: step
            dependencies: [ingest]
            arguments:
              parameters:
                - name: label
                  value: validate
          - name: transform
            template: step
            dependencies: [validate]
            arguments:
              parameters:
                - name: label
                  value: transform
          - name: load
            template: step
            dependencies: [transform]
            arguments:
              parameters:
                - name: label
                  value: load
          - name: refresh
            template: step
            dependencies: [transform]
            arguments:
              parameters:
                - name: label
                  value: refresh
          - name: notify
            template: step
            dependencies: [load, refresh]
            arguments:
              parameters:
                - name: label
                  value: notify

    - name: step
      inputs:
        parameters:
          - name: label
      container:
        image: registry.example.invalid/example-org/etl:1.2.0
        args:
          - --stage={{inputs.parameters.label}}
          - --window={{workflow.parameters.window}}
