mirror of
https://github.com/sartography/SpiffWorkflow.git
synced 2025-08-03 01:22:34 +08:00
Merge pull request #412 from sartography/bugfix/missing-data-output
Restrict task search in subprocess updates
This commit is contained in:
@ -85,7 +85,7 @@ class CallActivity(SubWorkflowTask):
|
||||
|
||||
def copy_data(self, my_task, subworkflow):
|
||||
|
||||
start = subworkflow.get_next_task(spec_name='Start')
|
||||
start = subworkflow.get_next_task(subworkflow.task_tree, skip_subprocesses=True, spec_name='Start')
|
||||
if subworkflow.spec.io_specification is None or len(subworkflow.spec.io_specification.data_inputs) == 0:
|
||||
# Copy all task data into start task if no inputs specified
|
||||
start.set_data(**my_task.data)
|
||||
@ -106,7 +106,7 @@ class CallActivity(SubWorkflowTask):
|
||||
# Copy all workflow data if no outputs are specified
|
||||
my_task.data = deepcopy(subworkflow.last_task.data)
|
||||
else:
|
||||
end = subworkflow.get_next_task(spec_name='End')
|
||||
end = subworkflow.get_next_task(subworkflow.task_tree, skip_subprocesses=True, spec_name='End')
|
||||
# Otherwise only copy data with the specified names
|
||||
for var in subworkflow.spec.io_specification.data_outputs:
|
||||
if var.bpmn_id not in end.data:
|
||||
|
@ -41,11 +41,11 @@ class BpmnTaskFilter(TaskFilter):
|
||||
|
||||
class BpmnTaskIterator(TaskIterator):
|
||||
|
||||
def __init__(self, task, end_at_spec=None, max_depth=1000, depth_first=True, skip_subpprocesses=False, task_filter=None, **kwargs):
|
||||
def __init__(self, task, end_at_spec=None, max_depth=1000, depth_first=True, skip_subprocesses=False, task_filter=None, **kwargs):
|
||||
|
||||
task_filter = task_filter or BpmnTaskFilter(**kwargs)
|
||||
super().__init__(task, end_at_spec, max_depth, depth_first, task_filter)
|
||||
self.skip_subpprocesses = skip_subpprocesses
|
||||
self.skip_subprocesses = skip_subprocesses
|
||||
|
||||
def _next(self):
|
||||
|
||||
@ -64,7 +64,7 @@ class BpmnTaskIterator(TaskIterator):
|
||||
# Do not descend into a completed subprocess to look for unfinished tasks.
|
||||
if (
|
||||
subprocess is None
|
||||
or self.skip_subpprocesses
|
||||
or self.skip_subprocesses
|
||||
or (task.state >= TaskState.FINISHED_MASK and self.task_filter.state <= TaskState.FINISHED_MASK)
|
||||
):
|
||||
subprocess_tasks = []
|
||||
|
@ -112,7 +112,7 @@ class BpmnWorkflow(BpmnBaseWorkflow):
|
||||
"""
|
||||
if event.target is not None:
|
||||
# This limits results to tasks in the specified workflow
|
||||
tasks = event.target.get_tasks(skip_subpprocesses=True, state=TaskState.NOT_FINISHED_MASK, catches_event=event)
|
||||
tasks = event.target.get_tasks(skip_subprocesses=True, state=TaskState.NOT_FINISHED_MASK, catches_event=event)
|
||||
else:
|
||||
self.update_collaboration(event)
|
||||
tasks = self.get_tasks(state=TaskState.NOT_FINISHED_MASK, catches_event=event)
|
||||
|
Reference in New Issue
Block a user