3.9 KiB
Publish/output in case of task/workflow failure
https://blueprints.launchpad.net/mistral/+spec/mistral-publish-on-error
Currently it is not possible to provide any reasonable output in case of a task or workflow failure. Implementing this would greatly simplify error handling in workflows.
Problem description
This blueprint is a proposal to introduce two new attributes, publish-on-error for tasks and output-on-error for workflows for this purpose.
Use Cases
* As a user, I would like to define a workflow with a generic error handler task. * As a user, I would like to simplify error handling in my complex workflow system.
Proposed change
To solve the problem I would like to introduce the following new task and workflow attributes:
- Task - publish-on-error: Any data structure arbitrarily containing YAQL
-
expressions that defines output of a task to be published into workflow context if it goes into error state.
- Workflow - output-on-error: Any data structure arbitrarily containing YAQL
-
expressions that defines output of a workflow to be returned if it goes into error state.
Example workbook:
workflows:
main:
tasks:
task_1:
workflow: sub-workflow
publish-on-error:
failure_cause: <% task(task_1).result.failure_cause %>
detailed_cause: <% task(task_1).result.detailed_cause %>
on-error:
- error-handler
task_2:
...
publish-on-error:
failure_cause: <% task(task_2).result.failure_cause %>
detailed_cause: <% task(task_2).result.detailed_cause %>
on-error:
- error-handler
error-handler:
action: send_email
input:
body: |
<% $.failure_cause %>
Details:
<% $.detailed_cause %>
sub-workflow:
output:
result: <% $.result %>
output-on-error:
failure_cause: <% $.failure_cause %>
detailed_cause: <% $.detailed_cause %>
tasks:
task1:
...
publish-on-error:
failure_cause: "Failure in sub-workflow.task1!"
detailed_cause: <% task(task1).result %>
on-success:
- task2
task2:
...
publish-on-error:
failure_cause: "Failure in sub-workflow.task2!"
detailed_cause: <% task(task2).result %>
Alternatives
N/A
Data model impact
Two new fields introduced: * Task spec - publish-on-error * Workflow spec - output-on-error
REST API impact
None
End user impact
Workflow language additions that allow to handle errors in a more flexible way. Existing workflows will work without any change.
Performance Impact
None
Deployer impact
None
Implementation
Assignee(s)
- Primary assignee:
-
István Imre <istvan.imre@nokia.com>
- Other contributors:
-
Endre János Kovács <endre.kovacs@nokia.com>
Work Items
- add publish-on-error to task spec
- add output-on-error to workflow spec
- documentation
Dependencies
None
Testing
- new engine test for the two new attributes
References
None