Comments (5)
The StreamFlow implementation is already using actionStatus
on CreateAction
instances (both the workflow run and the tool runs). Other actions represented in the profiles are the step executions (ControlAction
) and the workflow engine execution (OrganizeAction
).
One could try to be as precise as possible and mark failures (actionStatus
: FailedActionStatus
and optionally error
: <ERROR DESCRIPTION>
) exactly where they happen. So if the workflow engine itself fails (e.g., bad parameters passed to the cwltool
executable, or a cwltool bug), there should be a failure in the OrganizeAction
, and the other actions should probably be missing altogether from the crate. Similarly, if an error can be ascribed to the workflow's own code (and not to one of the tools it orchestrates), then there should be a failure in the workflow's CreateAction
, and actions corresponding to steps / tools that were not executed should be missing. When does a step execution (ControlAction
) fail? In this case the instrument
is the step itself, i.e., a logical section of the workflow. In principle it could be said that the error happens exactly in the step execution (and not in the tool execution) if the tool does not even begin to run, i.e., the failure happens while the step is "being prepared". This could be hard to pinpoint: some workflow engines might not even have a step preparation concept. Mapping errors in the execution of the tool (either the wrapper or the wrapped command) is more straightforward: they should be reported in the corresponding CreateAction
.
Another thing to consider is dependencies between the actions. For instance, if a step fails, then the workflow also fails; If a tool fails, then the corresponding step and the workflow also fail.
We should try to avoid making things too complicated in the profiles, making sure they stay flexible. I think the main things to cover are:
- Recommend using
CompletedActionStatus
for successful actions andFailedActionStatus
for failed ones; in the latter case, a consumer should not assume the presence ofobject
/result
in the action, nor the presence of dependent actions in the crate - Recommend propagating
FailedActionStatus
to dependent actions - Don't make specifying
actionStatus
a MUST, but say that consumers will assume a successful action in this case - Specifying
error
needs to be optional (additional information might not be available)
I would leave ActiveActionStatus
and PotentialActionStatus
out for now.
from workflow-run-crate.
Success = Exit status is zero
from workflow-run-crate.
This is already detailed in https://www.researchobject.org/ro-crate/1.1/provenance.html#recording-changes-to-ro-crates, so we can simply direct the reader there for the JSON-LD details. We just need to add the recommendation to use FailedActionStatus
if there was an error (unhandled exception, non-zero exit status) and CompletedActionStatus
otherwise. Maybe we should also say that for failed executions the action's object
and result
could be empty / missing or incomplete.
from workflow-run-crate.
Agree to use actionStatus
as proposed.
How to show the error message: https://schema.org/error on the CreateAction
of tool or ControlAction
of the step? Do both of them fail?
Additionally intermediary provenance while a workflow is running could have ActiveActionStatus showing PotentialActionStatus for steps not executed yet.
from workflow-run-crate.
Another thing to consider is dependencies between the actions. For instance, if a step fails, then the workflow also fails; If a tool fails, then the corresponding step and the workflow also fail.
As discussed at the last meeting, this is not always true due to the fault tolerance featured by some engines.
from workflow-run-crate.
Related Issues (19)
- Join the working group (post here to be added) HOT 40
- CQ2 - Resource usage HOT 25
- CQ3 - Configuration files HOT 5
- CQ4 - environment/container file HOT 16
- CQ5 - Step running time HOT 2
- CQ6 - Workflow running time HOT 4
- CQ8 - Workflow inputs and outputs HOT 2
- CQ9 - Software version
- CQ10 - Tool wrappers HOT 6
- cwlprov_to_crate: support for nested workflows HOT 1
- cwlprov_to_crate: test converting cwlprovs created for each CWL conformance tests HOT 6
- CQ11 - Parameter connections HOT 4
- Resource requirements HOT 3
- Representing conditional execution HOT 7
- Representing secondary files HOT 2
- Add extra columns in ro-crate requirements HOT 1
- Representing environment variables HOT 5
- CQ1 - Container image HOT 11
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from workflow-run-crate.