-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
How to achieve a better process rollback workflow #1246
Comments
Use saga pattern |
@brucezlata Can you please let me know how I can implement saga transaction. I am using EventPublish to forward the workflow step and in each step i have perform some database transaction through service injection. if error raises on any step, it will suspend the workflow and rollback my service transaction for current step only. |
@MOwaisfarooq you can check the above link, for example, throw exception once there is any error in any of your steps (Tasks), then, compensate entire saga transaction (UndoEverything).
|
If an error occurs in step B of the workflow, I suspend the workflow to publish this event later from the controller API. The _workflowStepDetailsService.UpdateTransactionForStepB has made a transaction in my table stepTable. I want to revert only the step B service transaction that updated the table. I don't want to undo everything, so that next time I can continue from step B after the error. For example, if I made an insertion in step A using _workflowStepDetailsService.CreateTransactionforStepA in my stepTable, I want to preserve that transaction and only undo the changes made by step B.
``
} |
I use json define workflow like the following picture:
but when the steps nodes become more and more,the decision branch may not be a good solution.I have tyied with this funciton:
At the StepType corresponding method in Run(),use
return ExecutionResult.Branch(new List { context.Item }, "A_NODE") statement
or
return ExecutionResult.Persist("A_NODE") statement
to implements the process of going back from the current process node to A NODE.I konw decision branch can do this ,but I want another way to realize this process. who can give me some advice,ungrateful!
The text was updated successfully, but these errors were encountered: