This PR finishes out the basic CRUD flows for workflows, by adding support for updates to existing workflows, and further guardrails to prevent performing unsupported actions, such as provisioning with unsaved changes, making changes after provisioning, and only allowing more change after deprovisioning. Note that for update we only pass around the stateless WorkflowTemplate configuration, since this is what the update API expects. It doesn't make sense to include lastUpdated as part of the template body when running the update API, for example. The utility function to strip down the state-related fields will be useful down the road as the single obj to pass around and have it be exportable as well.
Note the main purpose is to implement all of the state management and be able to reflect them in some way on the UI. The final UX regarding how we will display the current state and current constraints is TBD. Also note that workflow versioning and potential changes to how we may support multi-provisioning may also have future impacts.
Demo video:
creating a new workflow
making a change to a field and having to re-save
provisioning when there are no unsaved changes
blocking any other action (save or provision) until deprovision is executed. reactflow workspace is also in read-only state - no component dragging / selecting / zooming etc.
state updates for each scenario - (1) no workflow / loading, (2) workflow but unsaved, (3) workflow and provisioning, (4) workflow and deprovisioning, (5) workflow and provision complete, (6) workflow and deprovision complete
[x] Commits are signed per the DCO using --signoff
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.
Description
This PR finishes out the basic CRUD flows for workflows, by adding support for updates to existing workflows, and further guardrails to prevent performing unsupported actions, such as provisioning with unsaved changes, making changes after provisioning, and only allowing more change after deprovisioning. Note that for update we only pass around the stateless
WorkflowTemplate
configuration, since this is what the update API expects. It doesn't make sense to includelastUpdated
as part of the template body when running the update API, for example. The utility function to strip down the state-related fields will be useful down the road as the single obj to pass around and have it be exportable as well.Note the main purpose is to implement all of the state management and be able to reflect them in some way on the UI. The final UX regarding how we will display the current state and current constraints is TBD. Also note that workflow versioning and potential changes to how we may support multi-provisioning may also have future impacts.
Demo video:
screen-capture (27).webm
Issues Resolved
Resolves #75
Check List
--signoff
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license. For more information on following Developer Certificate of Origin and signing off your commits, please check here.