Skip to content

DSL Flow

DarkBladeDev edited this page Feb 22, 2026 · 2 revisions

DSL — Flow (nodos)

event.flow.nodes es una lista. Cada elemento es un mapa que representa un nodo.

flow:
  nodes:
    - action: broadcast
      message: "Inicio"
    - delay: 5s
    - repeat:
        times: 3
        every: 20t
        flow:
          nodes:
            - action: log
              message: "tick"

action

Ejecuta una acción.

Forma 1 (config “inline”):

- action: broadcast
  message: "hola"

Forma 2 (config bajo config:):

- action: broadcast
  config:
    message: "hola"

delay

Pausa el runtime por una cantidad de ticks.

- delay: 5s

Admite ms/s/m/h/t.

repeat

Repite una subsecuencia N veces, con espera opcional entre iteraciones.

- repeat:
    times: 5
    every: 1s
    flow:
      nodes:
        - action: log
          message: "Iteración"

Atajos:

- repeat: 5
  flow:
    nodes:
      - action: log
        message: "Iteración"

Detalles:

  • times default: 1
  • every default: 0
  • flow.nodes o nodes: lista de nodos internos

loop

Alias de repeat sin every (se ejecuta “en loop” inmediato).

- loop:
    times: 10
    nodes:
      - action: log
        message: "loop"

condition_loop

Repite una subsecuencia mientras la expresión MVEL sea true en cada iteración.

- condition_loop:
    times: 100
    expression: "participants_count < 5"
    nodes:
      - action: log
        message: "Esperando..."
      - delay: 20t
  • times es un máximo de iteraciones.
  • expression default: true.

async

Ejecuta ramas en paralelo (runtimes hijos asíncronos).

- async:
    branches:
      - nodes:
          - action: log
            message: "rama A"
      - nodes:
          - action: log
            message: "rama B"

Notas:

  • También acepta flows: en vez de branches:.
  • Cada entrada puede ser { nodes: [...] } o directamente una lista [...].

task

Invoca una task (definida en event.tasks o en plugins/CustomEventEngine/tasks/*.yml).

Forma corta:

- task: "nombre_task"

Forma completa:

- task:
    name: "add"
    with:
      a: 2
      b: 3
    into:
      sum: "result"
    max_depth: 64

Detalles:

  • with: mapa de parámetros (se resuelven valores/expresiones en runtime).
  • into: mapa returnName -> variableDestino.
  • max_depth: corta recursión/composición excesiva (default: 64).
  • override: permite redefinir la task solo para esta llamada:
- task:
    name: "base"
    with: { x: 1 }
    into: { out: "value" }
    override:
      params: { x: number }
      returns: { out: number }
      nodes:
        - return:
            out: "= x + 5"

return

Finaliza la ejecución de la task actual y entrega valores de retorno a la llamada (task.into).

- return:
    sum: "= a + b"
    ok: true

Notas:

  • Si una task termina sin return, se considera retorno vacío.

Clone this wiki locally