<div dir="ltr"><span style="font-size:13px">We assume WF is in paused/errored state when 1) user manually pause the WF, 2) pause is specified on transition (on-condition(s) such as on-error), and 3) task errored.</span><br><div dir="ltr" style="font-size:13px"><div><br></div><div>The resume feature will support the following use cases.</div><div>1) User resumes WF from manual pause.</div><div>2) In the case of task failure, user fixed the problem manually outside of Mistral, and user wants to re-run the failed task.<br></div><div>3) In the case of task failure, user fixed the problem manually outside of Mistral, and user wants to resume from the next task.</div><div><br></div><div>Resuming from #1 should be straightforward.</div><div>Resuming from #2, user may want to change the inbound context.</div><div>Resuming from #3, users is required to manually provide the published vars for the failed task(s).</div><div><br></div><div>In our offline discussion, there's ambiguity with on-error clause and whether a task failure has already been addressed by the WF itself.  In many cases, the on-error tasks may just be logging, email notification, and/or other non-recovery procedures.  It's hard to determine that automatically, so we let users decide where to resume the WF instead.  Mistral will let user resume a WF from specific point. The resume function will determine the requirements needed to successfully resume.  If requirements are not met, then resume returns an error saying what requirements are missing.  In the case where there are failures in multiple parallel branches, the requirements may include more than one tasks.  For cases where user accidentally resume from an earlier task that is already successfully completed, the resume function should detect that and throw an exception.</div><div><br></div><div>Also, the current change to separate task from action execution should be sufficient for traceability.</div><div><br></div><div>We also want to expose an endpoint to let users view context for a task.  This is to let user have a reference of the current task context to determine the delta they need to change for a successful resume.</div></div></div>