Попробуйте Sparrow6 - независимая от языка инфраструктура автоматизации, которая выполняет задачи - плагины, написанные на многих языках (Perl, Python, Bash, Ruby, Powershell). DSL высокого уровня - Perl6, например:
#!perl6
directory "foo/bar"; # create directory, this is a core plugin
bash "uptime"; # execute Bash scripts, this is a core plugin
task-run "custom task", "cool-task" # execute custom plugin, created by user
Теперь, когда создает плагин , вы можете вернуть ему состояние и обработать это состояние внутри кода DSL:
my %state = task-run "get balance", "ATM", %( action => "get_balance" );
if %state<balance> > 0 {
task-run "withdraw cash", "ATM", %(
amount => %state<balance>
)
}
Вот идея, как вы можете реализовать конвейеры / ветки через плагины и состояния.