Open jclark opened 4 years ago
Please also add any good references on workflow that will help me understand the space better.
@chathurace, @vinok88 @warunalakshitha Could you please share old ballerina workflow references?
From @sanjiva: https://www.academia.edu/4269223/ADoc-Oriented_Programming
Look at Amazon Simple Workflow Service: https://aws.amazon.com/swf/
@sameerajayasoma I am wondering what is feasible in terms of suspend/resume on top of jBallerina.
Please find the old ballerina workflow references. Aggregated doc on Checkpointing and Channels etc - https://docs.google.com/document/d/17ukPQzF9nMilm0lxzuu2oqn0c2ryKCEiYDhDUCNoEMg/edit#heading=h.vlfrv8syhdfy This is on Compensations - https://docs.google.com/document/d/11UoU6-mkT9DUd4rJJcmLdM8C8Zg10UJuimWCK_dWqpU/edit#heading=h.xyssmwr9zxxn
Look like above docs are private. Attached the PDFs. Ballerina workflows.pdf Ballerina Checkpointing.pdf Ballerina Compensations.pdf
@sameerajayasoma I am wondering what is feasible in terms of suspend/resume on top of jBallerina.
@jclark this what we were trying to do with Checkpointing.
@vinok88 Do you think the checkpointing can be made to work on top of jBallerina?
@jclark I think it is feasible.
To persist a checkpoint, we saved context information and the instruction pointer by injecting the persisting instructions within selected instructions in the BVM. In jBallerina, we can do a similar thing at the bytecode generation phase.
In jBallerina, in order to support nonblocking, we generate code as a huge switch-case, so that the scheduler can resume a strand in middle as well. This can be used for resuming a checkpointed program as well. By persisting the current case number of the switch case and the frame classes, we should be able to recreate the strands and ask the scheduler to run them from the given switch case.
@chathurace, @warunalakshitha please correct me if I'm wrong.
Issue for gathering requirements for language support for workflow.