Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This commit makes a lot of changes in order to allow support for dynamic workflows. Dynamic workflows are workflows that can be passed as inputs or outputs of functions. This allows many interesting new features to be implemented as functions, such as loops, wrapped functions, etc. To this end, this change....
added the workflow fnenv; basically allowing the workflow engine to recursively call it self to execute nested (dynamic) workflows.
Added an integration test which uses a workflow as an input value.
Introduced the TASK_ADDED and AddDynamicTask API action, which allow injecting a new task into a workflow.
Added support for resolving tasks within a inner workflow in the Resolver. Also removed the too broad WorkflowSpec as a an parameter in the Resolver, in favor of just a map[string]*TaskSpec; more is not needed.
Enabled the YAML parser to deal with workflowSpecs
Removed old validator package in favor of the new, improved one (introduced in a previous PR)
Aside from the dynamic workflow implementation, some code quality improvements:
Actions and Filters have been extracted from the monolithic controller in an attempt to make the controller better understandable and testable.
Scheduler now uses the gonum-based dependency graph package to determine the task horizon.
Implemented the missing FAILED event for invocations (before invocations could only be aborted, which assumes external/user influence rather than errors)
Added a variety of helper functions and extensions to the pb models in the types package.