feat(core): Change workflow deletions to soft deletes (#14894)

Adds soft‑deletion support for workflows through a new boolean column `isArchived`.

When a workflow is archived we now set `isArchived` flag to true and the workflows
stays in the database and is omitted from the default workflow listing query.

Archived workflows can be viewed in read-only mode, but they cannot be activated.

Archived workflows are still available by ID and can be invoked as sub-executions,
so existing Execute Workflow nodes continue to work. Execution engine doesn't
care about isArchived flag.

Users can restore workflows via Unarchive action at the UI.
This commit is contained in:
Jaakko Husso
2025-05-06 17:48:24 +03:00
committed by GitHub
parent 32b72011e6
commit 3a13139f78
64 changed files with 1616 additions and 124 deletions

View File

@@ -258,7 +258,8 @@ const isCanvasReadOnly = computed(() => {
return (
isDemoRoute.value ||
isReadOnlyEnvironment.value ||
!(workflowPermissions.value.update ?? projectPermissions.value.workflow.update)
!(workflowPermissions.value.update ?? projectPermissions.value.workflow.update) ||
editableWorkflow.value.isArchived
);
});
@@ -759,8 +760,9 @@ function onPinNodes(ids: string[], source: PinDataSource) {
async function onSaveWorkflow() {
const workflowIsSaved = !uiStore.stateIsDirty;
const workflowIsArchived = workflowsStore.workflow.isArchived;
if (workflowIsSaved) {
if (workflowIsSaved || workflowIsArchived) {
return;
}
const saved = await workflowHelpers.saveCurrentWorkflow();