From d1ddca6718dabf4fa7e54b83b88b8944154740bd Mon Sep 17 00:00:00 2001 From: Elizabeth Esswein Date: Fri, 12 Jul 2024 16:27:35 -0400 Subject: [PATCH] handle certain out of order states in spec migration --- SpiffWorkflow/bpmn/util/diff.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/SpiffWorkflow/bpmn/util/diff.py b/SpiffWorkflow/bpmn/util/diff.py index 9d28d49d..01220be0 100644 --- a/SpiffWorkflow/bpmn/util/diff.py +++ b/SpiffWorkflow/bpmn/util/diff.py @@ -218,4 +218,7 @@ def migrate_workflow(diff, workflow, spec, reset_mask=None): default_mask = TaskState.READY|TaskState.WAITING for task in list(workflow.get_tasks(state=reset_mask or default_mask, skip_subprocesses=True)): - task.reset_branch(None) + # In some cases, completed tasks with ready or waiting children could get removed + # (for example, in cycle timer). If a task has already been removed from the tree, ignore it. + if task.id in workflow.tasks: + task.reset_branch(None)