Skip to content

[WIP] - Suporte a Workflows Dinâmicos #10

@ovvesley

Description

@ovvesley

Descrição:
Atualmente, os workflows do AkoFlow são definidos estaticamente em arquivos YAML. No entanto, em cenários como os de Machine Learning (ML), o número de atividades frequentemente depende da natureza e estrutura dos dados de entrada, o que torna definições estáticas insuficientes. Esta issue propõe o design e a implementação de um recurso de workflows dinâmicos.


Requisitos do Recurso

1. Características de Workflows Dinâmicos:

  • Geração de Atividades por Dados: Os workflows devem se adaptar com base nos dados analisados durante a execução.
  • Leitura e Escrita Atributivas: Cada atividade conterá atributos para indicar de onde os dados serão lidos (inputPath) e para onde serão escritos (outputPath), permitindo a criação de novas atividades antes ou após a execução.

2. YAML Exemplo para Workflow Dinâmico:

name: example-workflow
spec:
  image: "example-docker-image:latest"
  namespace: "example-namespace"
  storageClassName: "hostpath"
  storageSize: "10Gi"
  storagePolicy:
    type: "distributed"
  mountPath: "/data-path"
  activities:
    - name: step-1
      dynamicActivitySources: "/data/output-folder/step-1-result"  # pasta que será lida, antes de executar a próxima atividade, criando as devidas tarefas.
      run: |
        echo "Step 1 is running"
        process-input --input /data/input-folder --output /data/output-folder/step-1-result
      memoryLimit: "1Gi"
      cpuLimit: 1

    - name: step-2
      dynamicActivitySources: "/data/output-folder/step-2-result"
      run: |
        echo "Step 2 is running"
        process-step --input /data/output-folder/step-1-result --output /data/output-folder/step-2-result
      memoryLimit: "2Gi"
      cpuLimit: 2
      dependsOn:
        - "step-1"

    - name: step-3
      dynamicActivitySources: "/data/output-folder/final-result"
      run: |
        echo "Step 3 is running"
        finalize --input /data/output-folder/step-2-result --output /data/output-folder/final-result
      memoryLimit: "4Gi"
      cpuLimit: 4
      dependsOn:
        - "step-2"

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions