☢️ Drafts
The following directives are currently in draft state and may or may not be implemented.
Concurrency (expeditions)
The concurrency
directive would be used to control how many instances of the expedition can run simultaneously.
yaml
_: Expedition
concurrency: 3
steps: []
Event handlers (steps)
The dispatch
directive would be used to trigger tasks with on
/once
directives.
A task with an on
/once
would not be executed naturally in the sequence, but only when the specified event is dispatched.
yaml
- on: foobar
example:
foo: bar
- example:
foo: bar
dispatch: foobar
Remarks:
- This feature is inspired by Ansible's event handlers.
- But the naming
on
/once
suggests that it would not necessarily run at the end.
- But the naming
- It might makes expeditions confusing to read, as the execution order would not be linear anymore.
- The
on
/once
must be templated before all other steps ?
Asynchronous execution (steps)
The async
/await
directives would be used to run tasks asynchronously.
yaml
- id: foo
async: true
- id: bar
async: true
- _: Waiting for foo and bar to complete
await: [foo, bar]
Parallel loops (steps)
The for.await
directive would be used to run loop iterations in parallel.
yaml
- _: Say hi to each member in parallel
log: Bonjour, ${__} !
for.await: [ Gustave, Maëlle, Lune, Sciel ]