Skip to content

Commit

Permalink
update spiff subworkflow tasks too
Browse files Browse the repository at this point in the history
  • Loading branch information
essweine committed Feb 17, 2023
1 parent 992c386 commit 950194a
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 10 deletions.
8 changes: 5 additions & 3 deletions SpiffWorkflow/bpmn/specs/SubWorkflowTask.py
Expand Up @@ -34,12 +34,10 @@ def _on_subworkflow_completed(self, subworkflow, my_task):
my_task._set_state(TaskState.READY)

def _update_hook(self, my_task):

wf = my_task.workflow._get_outermost_workflow(my_task)
if my_task.id not in wf.subprocesses:
super()._update_hook(my_task)
subworkflow = my_task.workflow.create_subprocess(my_task, self.spec, self.name)
subworkflow.completed_event.connect(self._on_subworkflow_completed, my_task)
self.create_workflow(my_task)
return True

def _on_cancel(self, my_task):
Expand All @@ -56,6 +54,10 @@ def copy_data(self, my_task, subworkflow):
def update_data(self, my_task, subworkflow):
my_task.data = deepcopy(subworkflow.last_task.data)

def create_workflow(self, my_task):
subworkflow = my_task.workflow.create_subprocess(my_task, self.spec, self.name)
subworkflow.completed_event.connect(self._on_subworkflow_completed, my_task)

def start_workflow(self, my_task):
subworkflow = my_task.workflow.get_subprocess(my_task)
self.copy_data(my_task, subworkflow)
Expand Down
23 changes: 16 additions & 7 deletions SpiffWorkflow/spiff/specs/subworkflow_task.py
@@ -1,7 +1,12 @@
from SpiffWorkflow.bpmn.specs.SubWorkflowTask import SubWorkflowTask, TransactionSubprocess, CallActivity
from SpiffWorkflow.bpmn.specs.SubWorkflowTask import (
SubWorkflowTask as DefaultSubWorkflow,
TransactionSubprocess as DefaultTransaction,
CallActivity as DefaultCallActivity,
)
from SpiffWorkflow.spiff.specs.spiff_task import SpiffBpmnTask

class SubWorkflowTask(SubWorkflowTask, SpiffBpmnTask):

class SubWorkflowTask(DefaultSubWorkflow, SpiffBpmnTask):

def __init__(self, wf_spec, name, subworkflow_spec, transaction=False, **kwargs):

Expand All @@ -13,9 +18,13 @@ def __init__(self, wf_spec, name, subworkflow_spec, transaction=False, **kwargs)
self.in_assign = []
self.out_assign = []

def _on_ready_hook(self, my_task):
SpiffBpmnTask._on_ready_hook(self, my_task)
self.start_workflow(my_task)
def _update_hook(self, my_task):
# Don't really like duplicating this, but we need to run SpiffBpmn update rather than the default
wf = my_task.workflow._get_outermost_workflow(my_task)
if my_task.id not in wf.subprocesses:
SpiffBpmnTask._update_hook(self, my_task)
self.create_workflow(my_task)
return True

def _on_complete_hook(self, my_task):
SpiffBpmnTask._on_complete_hook(self, my_task)
Expand All @@ -25,7 +34,7 @@ def spec_type(self):
return 'Subprocess'


class TransactionSubprocess(SubWorkflowTask, TransactionSubprocess):
class TransactionSubprocess(SubWorkflowTask, DefaultTransaction):

def __init__(self, wf_spec, name, subworkflow_spec, transaction=True, **kwargs):

Expand All @@ -40,7 +49,7 @@ def spec_type(self):
return 'Transactional Subprocess'


class CallActivity(SubWorkflowTask, CallActivity):
class CallActivity(SubWorkflowTask, DefaultCallActivity):

def __init__(self, wf_spec, name, subworkflow_spec, **kwargs):

Expand Down

0 comments on commit 950194a

Please sign in to comment.