From 7ac4b51c6a607fdd43524307db08070b4d2c1db0 Mon Sep 17 00:00:00 2001 From: burnettk Date: Fri, 4 Nov 2022 09:33:42 -0400 Subject: [PATCH] Squashed 'SpiffWorkflow/' changes from a6392d1906..8d820dce1f 8d820dce1f Track spiff step details more granularly (#17) 426da26d8f Clear the remaining __init__.py imports in SpiffWorkflow (#14) 9a1d1c484a Fix FutureWarning in SpiffWorkflow (#16) git-subtree-dir: SpiffWorkflow git-subtree-split: 8d820dce1f439bb76bc07e39629832d998d6f634 --- SpiffWorkflow/bpmn/parser/BpmnParser.py | 6 +- SpiffWorkflow/bpmn/parser/TaskParser.py | 3 +- SpiffWorkflow/bpmn/parser/event_parsers.py | 2 +- SpiffWorkflow/bpmn/parser/node_parser.py | 3 +- .../serializer/CompactWorkflowSerializer.py | 2 +- SpiffWorkflow/bpmn/serializer/__init__.py | 3 - .../bpmn/serializer/bpmn_converters.py | 6 +- .../bpmn/serializer/task_spec_converters.py | 6 +- SpiffWorkflow/bpmn/specs/BpmnSpecMixin.py | 2 +- SpiffWorkflow/bpmn/specs/ExclusiveGateway.py | 2 +- SpiffWorkflow/bpmn/specs/ManualTask.py | 4 +- SpiffWorkflow/bpmn/specs/MultiInstanceTask.py | 2 +- SpiffWorkflow/bpmn/specs/NoneTask.py | 2 +- SpiffWorkflow/bpmn/specs/SubWorkflowTask.py | 2 +- SpiffWorkflow/bpmn/specs/events/__init__.py | 5 -- SpiffWorkflow/bpmn/workflow.py | 21 +++++- SpiffWorkflow/camunda/parser/CamundaParser.py | 4 +- SpiffWorkflow/camunda/serializer/__init__.py | 2 - .../serializer/task_spec_converters.py | 4 +- SpiffWorkflow/dmn/serializer/__init__.py | 1 - SpiffWorkflow/dmn/specs/BusinessRuleTask.py | 2 +- SpiffWorkflow/serializer/base.py | 65 +++++++++++++++++++ SpiffWorkflow/serializer/dict.py | 29 +++++++-- SpiffWorkflow/serializer/prettyxml.py | 26 +++----- SpiffWorkflow/serializer/xml.py | 46 +++++++------ SpiffWorkflow/signavio/parser/__init__.py | 1 - SpiffWorkflow/specs/SubWorkflow.py | 4 +- SpiffWorkflow/specs/ThreadMerge.py | 2 +- SpiffWorkflow/specs/WorkflowSpec.py | 4 +- SpiffWorkflow/specs/__init__.py | 31 --------- SpiffWorkflow/spiff/parser/__init__.py | 1 - SpiffWorkflow/spiff/parser/process.py | 11 +++- SpiffWorkflow/spiff/serializer/__init__.py | 4 -- .../spiff/serializer/task_spec_converters.py | 13 +++- SpiffWorkflow/spiff/specs/__init__.py | 6 -- SpiffWorkflow/spiff/specs/events/__init__.py | 1 - SpiffWorkflow/workflow.py | 4 +- doc/non-bpmn/tutorial/start.py | 2 +- tests/SpiffWorkflow/PatternTest.py | 2 +- .../SpiffWorkflow/PersistSmallWorkflowTest.py | 4 +- tests/SpiffWorkflow/TaskTest.py | 3 +- tests/SpiffWorkflow/WorkflowTest.py | 4 +- tests/SpiffWorkflow/bpmn/ApprovalsTest.py | 2 +- .../SpiffWorkflow/bpmn/BpmnLoaderForTests.py | 2 +- .../bpmn/BpmnWorkflowSerializerTest.py | 2 +- .../bpmn/BpmnWorkflowTestCase.py | 2 +- .../bpmn/ProcessDependencyTest.py | 2 +- .../bpmn/events/MultipleEventsTest.py | 2 +- .../events/TimerDurationBoundaryOnTaskTest.py | 2 +- tests/SpiffWorkflow/camunda/BaseTestCase.py | 6 +- .../camunda/specs/UserTaskSpecTest.py | 3 +- tests/SpiffWorkflow/data/spiff/workflow1.py | 7 +- tests/SpiffWorkflow/serializer/baseTest.py | 2 +- tests/SpiffWorkflow/specs/CeleryTest.py | 3 +- tests/SpiffWorkflow/specs/ExecuteTest.py | 2 +- tests/SpiffWorkflow/specs/JoinTest.py | 2 +- tests/SpiffWorkflow/specs/MergeTest.py | 4 +- tests/SpiffWorkflow/specs/SubWorkflowTest.py | 2 +- tests/SpiffWorkflow/specs/TaskSpecTest.py | 6 +- tests/SpiffWorkflow/specs/TransformTest.py | 3 +- tests/SpiffWorkflow/specs/WorkflowSpecTest.py | 3 +- tests/SpiffWorkflow/spiff/BaseTestCase.py | 6 +- 62 files changed, 247 insertions(+), 163 deletions(-) diff --git a/SpiffWorkflow/bpmn/parser/BpmnParser.py b/SpiffWorkflow/bpmn/parser/BpmnParser.py index c6ed81bb..e6783e05 100644 --- a/SpiffWorkflow/bpmn/parser/BpmnParser.py +++ b/SpiffWorkflow/bpmn/parser/BpmnParser.py @@ -27,8 +27,10 @@ from SpiffWorkflow.bpmn.specs.events.event_definitions import NoneEventDefinitio from .ValidationException import ValidationException from ..specs.BpmnProcessSpec import BpmnProcessSpec -from ..specs.events import StartEvent, EndEvent, BoundaryEvent, IntermediateCatchEvent, IntermediateThrowEvent -from ..specs.events import SendTask, ReceiveTask +from ..specs.events.EndEvent import EndEvent +from ..specs.events.StartEvent import StartEvent +from ..specs.events.IntermediateEvent import BoundaryEvent, IntermediateCatchEvent, IntermediateThrowEvent +from ..specs.events.IntermediateEvent import SendTask, ReceiveTask from ..specs.SubWorkflowTask import CallActivity, SubWorkflowTask, TransactionSubprocess from ..specs.ExclusiveGateway import ExclusiveGateway from ..specs.InclusiveGateway import InclusiveGateway diff --git a/SpiffWorkflow/bpmn/parser/TaskParser.py b/SpiffWorkflow/bpmn/parser/TaskParser.py index afbd1972..5291b162 100644 --- a/SpiffWorkflow/bpmn/parser/TaskParser.py +++ b/SpiffWorkflow/bpmn/parser/TaskParser.py @@ -23,7 +23,8 @@ from .ValidationException import ValidationException from ..specs.NoneTask import NoneTask from ..specs.ScriptTask import ScriptTask from ..specs.UserTask import UserTask -from ..specs.events import _BoundaryEventParent, CancelEventDefinition +from ..specs.events.IntermediateEvent import _BoundaryEventParent +from ..specs.events.event_definitions import CancelEventDefinition from ..specs.MultiInstanceTask import getDynamicMIClass from ..specs.SubWorkflowTask import CallActivity, TransactionSubprocess, SubWorkflowTask from ..specs.ExclusiveGateway import ExclusiveGateway diff --git a/SpiffWorkflow/bpmn/parser/event_parsers.py b/SpiffWorkflow/bpmn/parser/event_parsers.py index d007fde8..07cef338 100644 --- a/SpiffWorkflow/bpmn/parser/event_parsers.py +++ b/SpiffWorkflow/bpmn/parser/event_parsers.py @@ -5,7 +5,7 @@ from SpiffWorkflow.bpmn.specs.events.event_definitions import CorrelationPropert from .ValidationException import ValidationException from .TaskParser import TaskParser from .util import first, one -from ..specs.events import (TimerEventDefinition, MessageEventDefinition, +from ..specs.events.event_definitions import (TimerEventDefinition, MessageEventDefinition, ErrorEventDefinition, EscalationEventDefinition, SignalEventDefinition, CancelEventDefinition, CycleTimerEventDefinition, diff --git a/SpiffWorkflow/bpmn/parser/node_parser.py b/SpiffWorkflow/bpmn/parser/node_parser.py index b76ccfbb..0b1c8ed4 100644 --- a/SpiffWorkflow/bpmn/parser/node_parser.py +++ b/SpiffWorkflow/bpmn/parser/node_parser.py @@ -35,7 +35,8 @@ class NodeParser: return expression.text if expression is not None else None def parse_documentation(self, sequence_flow=None): - documentation_node = first(self._xpath(sequence_flow or self.node, './/bpmn:documentation')) + node = sequence_flow if sequence_flow is not None else self.node + documentation_node = first(self._xpath(node, './/bpmn:documentation')) return None if documentation_node is None else documentation_node.text def parse_incoming_data_references(self): diff --git a/SpiffWorkflow/bpmn/serializer/CompactWorkflowSerializer.py b/SpiffWorkflow/bpmn/serializer/CompactWorkflowSerializer.py index ac38dc6b..9ed543fb 100644 --- a/SpiffWorkflow/bpmn/serializer/CompactWorkflowSerializer.py +++ b/SpiffWorkflow/bpmn/serializer/CompactWorkflowSerializer.py @@ -23,7 +23,7 @@ from builtins import object from collections import deque import json from ...task import TaskState -from ...specs import SubWorkflow +from ...specs.Subworkflow import SubWorkflow from ...serializer.base import Serializer from ..workflow import BpmnWorkflow diff --git a/SpiffWorkflow/bpmn/serializer/__init__.py b/SpiffWorkflow/bpmn/serializer/__init__.py index 507b6257..9a31a407 100644 --- a/SpiffWorkflow/bpmn/serializer/__init__.py +++ b/SpiffWorkflow/bpmn/serializer/__init__.py @@ -15,6 +15,3 @@ # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301 USA - -from .workflow import BpmnWorkflowSerializer -from .bpmn_converters import BpmnDataConverter \ No newline at end of file diff --git a/SpiffWorkflow/bpmn/serializer/bpmn_converters.py b/SpiffWorkflow/bpmn/serializer/bpmn_converters.py index 99666b34..1e274c21 100644 --- a/SpiffWorkflow/bpmn/serializer/bpmn_converters.py +++ b/SpiffWorkflow/bpmn/serializer/bpmn_converters.py @@ -7,9 +7,9 @@ from SpiffWorkflow.bpmn.specs.BpmnProcessSpec import BpmnDataSpecification from .dictionary import DictionaryConverter -from ..specs.events import SignalEventDefinition, MessageEventDefinition, NoneEventDefinition -from ..specs.events import TimerEventDefinition, CycleTimerEventDefinition, TerminateEventDefinition -from ..specs.events import ErrorEventDefinition, EscalationEventDefinition, CancelEventDefinition +from ..specs.events.event_definitions import SignalEventDefinition, MessageEventDefinition, NoneEventDefinition +from ..specs.events.event_definitions import TimerEventDefinition, CycleTimerEventDefinition, TerminateEventDefinition +from ..specs.events.event_definitions import ErrorEventDefinition, EscalationEventDefinition, CancelEventDefinition from ..specs.events.event_definitions import CorrelationProperty, NamedEventDefinition from ..specs.BpmnSpecMixin import BpmnSpecMixin, SequenceFlow diff --git a/SpiffWorkflow/bpmn/serializer/task_spec_converters.py b/SpiffWorkflow/bpmn/serializer/task_spec_converters.py index e2af6b32..852ebe4d 100644 --- a/SpiffWorkflow/bpmn/serializer/task_spec_converters.py +++ b/SpiffWorkflow/bpmn/serializer/task_spec_converters.py @@ -2,7 +2,7 @@ from uuid import UUID from .bpmn_converters import BpmnTaskSpecConverter -from ...specs import StartTask +from ...specs.StartTask import StartTask from ...specs.Simple import Simple from ...specs.LoopResetTask import LoopResetTask @@ -19,7 +19,9 @@ from ..specs.ExclusiveGateway import ExclusiveGateway from ..specs.InclusiveGateway import InclusiveGateway from ..specs.ParallelGateway import ParallelGateway -from ..specs.events import StartEvent, EndEvent, BoundaryEvent, IntermediateCatchEvent, IntermediateThrowEvent +from ..specs.events.StartEvent import StartEvent +from ..specs.events.EndEvent import EndEvent +from ..specs.events.IntermediateEvent import BoundaryEvent, IntermediateCatchEvent, IntermediateThrowEvent from ..specs.events.IntermediateEvent import _BoundaryEventParent, SendTask, ReceiveTask from ..workflow import BpmnWorkflow diff --git a/SpiffWorkflow/bpmn/specs/BpmnSpecMixin.py b/SpiffWorkflow/bpmn/specs/BpmnSpecMixin.py index 3b8f4b26..459a3882 100644 --- a/SpiffWorkflow/bpmn/specs/BpmnSpecMixin.py +++ b/SpiffWorkflow/bpmn/specs/BpmnSpecMixin.py @@ -19,7 +19,7 @@ from ...task import TaskState from ...operators import Operator -from ...specs import TaskSpec +from ...specs.base import TaskSpec class _BpmnCondition(Operator): diff --git a/SpiffWorkflow/bpmn/specs/ExclusiveGateway.py b/SpiffWorkflow/bpmn/specs/ExclusiveGateway.py index 391a2932..89a1445f 100644 --- a/SpiffWorkflow/bpmn/specs/ExclusiveGateway.py +++ b/SpiffWorkflow/bpmn/specs/ExclusiveGateway.py @@ -19,7 +19,7 @@ from ...exceptions import WorkflowException from .BpmnSpecMixin import BpmnSpecMixin -from ...specs import TaskSpec +from ...specs.base import TaskSpec from ...specs.ExclusiveChoice import ExclusiveChoice diff --git a/SpiffWorkflow/bpmn/specs/ManualTask.py b/SpiffWorkflow/bpmn/specs/ManualTask.py index a0283445..c8d4e7c2 100644 --- a/SpiffWorkflow/bpmn/specs/ManualTask.py +++ b/SpiffWorkflow/bpmn/specs/ManualTask.py @@ -18,7 +18,7 @@ # 02110-1301 USA from ...bpmn.specs.BpmnSpecMixin import BpmnSpecMixin -from ...specs import Simple +from ...specs.Simple import Simple class ManualTask(Simple, BpmnSpecMixin): @@ -32,4 +32,4 @@ class ManualTask(Simple, BpmnSpecMixin): @property def spec_type(self): - return 'Manual Task' \ No newline at end of file + return 'Manual Task' diff --git a/SpiffWorkflow/bpmn/specs/MultiInstanceTask.py b/SpiffWorkflow/bpmn/specs/MultiInstanceTask.py index 77886d54..f0ceb3de 100644 --- a/SpiffWorkflow/bpmn/specs/MultiInstanceTask.py +++ b/SpiffWorkflow/bpmn/specs/MultiInstanceTask.py @@ -29,7 +29,7 @@ from .ScriptTask import ScriptTask from .ExclusiveGateway import ExclusiveGateway from ...dmn.specs.BusinessRuleTask import BusinessRuleTask from ...operators import valueof, is_number -from ...specs import SubWorkflow +from ...specs.SubWorkflow import SubWorkflow from ...specs.base import TaskSpec from ...util.impl import get_class from ...task import Task, TaskState diff --git a/SpiffWorkflow/bpmn/specs/NoneTask.py b/SpiffWorkflow/bpmn/specs/NoneTask.py index 28abc80c..5c844e90 100644 --- a/SpiffWorkflow/bpmn/specs/NoneTask.py +++ b/SpiffWorkflow/bpmn/specs/NoneTask.py @@ -16,7 +16,7 @@ # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301 USA -from ...specs import Simple +from ...specs.Simple import Simple from ...bpmn.specs.BpmnSpecMixin import BpmnSpecMixin diff --git a/SpiffWorkflow/bpmn/specs/SubWorkflowTask.py b/SpiffWorkflow/bpmn/specs/SubWorkflowTask.py index c8b4409e..6f616f1d 100644 --- a/SpiffWorkflow/bpmn/specs/SubWorkflowTask.py +++ b/SpiffWorkflow/bpmn/specs/SubWorkflowTask.py @@ -3,7 +3,7 @@ from copy import deepcopy from SpiffWorkflow.task import TaskState from .BpmnSpecMixin import BpmnSpecMixin -from ...specs import TaskSpec +from ...specs.base import TaskSpec class SubWorkflowTask(BpmnSpecMixin): diff --git a/SpiffWorkflow/bpmn/specs/events/__init__.py b/SpiffWorkflow/bpmn/specs/events/__init__.py index b4d52665..e69de29b 100644 --- a/SpiffWorkflow/bpmn/specs/events/__init__.py +++ b/SpiffWorkflow/bpmn/specs/events/__init__.py @@ -1,5 +0,0 @@ -from .StartEvent import StartEvent -from .EndEvent import EndEvent -from .IntermediateEvent import IntermediateCatchEvent, IntermediateThrowEvent, BoundaryEvent, _BoundaryEventParent, SendTask, ReceiveTask -from .event_definitions import (NoneEventDefinition, CancelEventDefinition, ErrorEventDefinition, EscalationEventDefinition, MessageEventDefinition, - SignalEventDefinition, TimerEventDefinition, CycleTimerEventDefinition, TerminateEventDefinition) \ No newline at end of file diff --git a/SpiffWorkflow/bpmn/workflow.py b/SpiffWorkflow/bpmn/workflow.py index 39c265f9..d9b3994b 100644 --- a/SpiffWorkflow/bpmn/workflow.py +++ b/SpiffWorkflow/bpmn/workflow.py @@ -161,7 +161,9 @@ class BpmnWorkflow(Workflow): event_definition.payload = payload self.catch(event_definition, correlations=correlations) - def do_engine_steps(self, exit_at = None): + def do_engine_steps(self, exit_at = None, + will_complete_task=None, + did_complete_task=None): """ Execute any READY tasks that are engine specific (for example, gateways or script tasks). This is done in a loop, so it will keep completing @@ -169,6 +171,8 @@ class BpmnWorkflow(Workflow): left. :param exit_at: After executing a task with a name matching this param return the task object + :param will_complete_task: Callback that will be called prior to completing a task + :param did_complete_task: Callback that will be called after completing a task """ assert not self.read_only engine_steps = list( @@ -176,21 +180,34 @@ class BpmnWorkflow(Workflow): if self._is_engine_task(t.task_spec)]) while engine_steps: for task in engine_steps: + if will_complete_task is not None: + will_complete_task(task) task.complete() + if did_complete_task is not None: + did_complete_task(task) if task.task_spec.name == exit_at: return task engine_steps = list( [t for t in self.get_tasks(TaskState.READY) if self._is_engine_task(t.task_spec)]) - def refresh_waiting_tasks(self): + def refresh_waiting_tasks(self, + will_refresh_task=None, + did_refresh_task=None): """ Refresh the state of all WAITING tasks. This will, for example, update Catching Timer Events whose waiting time has passed. + + :param will_refresh_task: Callback that will be called prior to refreshing a task + :param did_refresh_task: Callback that will be called after refreshing a task """ assert not self.read_only for my_task in self.get_tasks(TaskState.WAITING): + if will_refresh_task is not None: + will_refresh_task(my_task) my_task.task_spec._update(my_task) + if did_refresh_task is not None: + did_refresh_task(my_task) def get_tasks_from_spec_name(self, name, workflow=None): return [t for t in self.get_tasks(workflow=workflow) if t.task_spec.name == name] diff --git a/SpiffWorkflow/camunda/parser/CamundaParser.py b/SpiffWorkflow/camunda/parser/CamundaParser.py index b9d0dc26..e91be639 100644 --- a/SpiffWorkflow/camunda/parser/CamundaParser.py +++ b/SpiffWorkflow/camunda/parser/CamundaParser.py @@ -6,7 +6,9 @@ from SpiffWorkflow.dmn.parser.BpmnDmnParser import BpmnDmnParser from SpiffWorkflow.dmn.specs.BusinessRuleTask import BusinessRuleTask from SpiffWorkflow.camunda.parser.task_spec import BusinessRuleTaskParser -from SpiffWorkflow.bpmn.specs.events import EndEvent, IntermediateThrowEvent, StartEvent, IntermediateCatchEvent, BoundaryEvent +from SpiffWorkflow.bpmn.specs.events.StartEvent import StartEvent +from SpiffWorkflow.bpmn.specs.events.EndEvent import EndEvent +from SpiffWorkflow.bpmn.specs.events.IntermediateEvent import IntermediateThrowEvent, IntermediateCatchEvent, BoundaryEvent from .event_parsers import CamundaStartEventParser, CamundaEndEventParser, \ CamundaIntermediateCatchEventParser, CamundaIntermediateThrowEventParser, CamundaBoundaryEventParser diff --git a/SpiffWorkflow/camunda/serializer/__init__.py b/SpiffWorkflow/camunda/serializer/__init__.py index 62e56488..e69de29b 100644 --- a/SpiffWorkflow/camunda/serializer/__init__.py +++ b/SpiffWorkflow/camunda/serializer/__init__.py @@ -1,2 +0,0 @@ -from .task_spec_converters import UserTaskConverter, StartEventConverter, EndEventConverter, \ - BoundaryEventConverter, IntermediateCatchEventConverter, IntermediateThrowEventConverter diff --git a/SpiffWorkflow/camunda/serializer/task_spec_converters.py b/SpiffWorkflow/camunda/serializer/task_spec_converters.py index bb247e33..3f997a0e 100644 --- a/SpiffWorkflow/camunda/serializer/task_spec_converters.py +++ b/SpiffWorkflow/camunda/serializer/task_spec_converters.py @@ -1,6 +1,8 @@ from functools import partial -from SpiffWorkflow.bpmn.specs.events import EndEvent, IntermediateThrowEvent, StartEvent, IntermediateCatchEvent, BoundaryEvent +from SpiffWorkflow.bpmn.specs.events.StartEvent import StartEvent +from SpiffWorkflow.bpmn.specs.events.EndEvent import EndEvent +from SpiffWorkflow.bpmn.specs.events.IntermediateEvent import IntermediateThrowEvent, IntermediateCatchEvent, BoundaryEvent from ..specs.events.event_definitions import MessageEventDefinition from ...bpmn.serializer.bpmn_converters import BpmnTaskSpecConverter diff --git a/SpiffWorkflow/dmn/serializer/__init__.py b/SpiffWorkflow/dmn/serializer/__init__.py index 9f493c9d..e69de29b 100644 --- a/SpiffWorkflow/dmn/serializer/__init__.py +++ b/SpiffWorkflow/dmn/serializer/__init__.py @@ -1 +0,0 @@ -from .task_spec_converters import BusinessRuleTaskConverter \ No newline at end of file diff --git a/SpiffWorkflow/dmn/specs/BusinessRuleTask.py b/SpiffWorkflow/dmn/specs/BusinessRuleTask.py index 4a9684f2..5825c023 100644 --- a/SpiffWorkflow/dmn/specs/BusinessRuleTask.py +++ b/SpiffWorkflow/dmn/specs/BusinessRuleTask.py @@ -1,6 +1,6 @@ from SpiffWorkflow.bpmn.exceptions import WorkflowTaskExecException -from ...specs import Simple +from ...specs.Simple import Simple from ...bpmn.specs.BpmnSpecMixin import BpmnSpecMixin from ...util.deep_merge import DeepMerge diff --git a/SpiffWorkflow/serializer/base.py b/SpiffWorkflow/serializer/base.py index 28b2e60a..bbf4cc25 100644 --- a/SpiffWorkflow/serializer/base.py +++ b/SpiffWorkflow/serializer/base.py @@ -16,6 +16,71 @@ from builtins import object # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301 USA +import re +from .. import operators +from .. import specs +from ..specs.AcquireMutex import AcquireMutex +from ..specs.Cancel import Cancel +from ..specs.CancelTask import CancelTask +from ..specs.Celery import Celery +from ..specs.Choose import Choose +from ..specs.ExclusiveChoice import ExclusiveChoice +from ..specs.Execute import Execute +from ..specs.Gate import Gate +from ..specs.Join import Join +from ..specs.Merge import Merge +from ..specs.MultiChoice import MultiChoice +from ..specs.MultiInstance import MultiInstance +from ..specs.ReleaseMutex import ReleaseMutex +from ..specs.Simple import Simple +from ..specs.StartTask import StartTask +from ..specs.SubWorkflow import SubWorkflow +from ..specs.ThreadStart import ThreadStart +from ..specs.ThreadMerge import ThreadMerge +from ..specs.ThreadSplit import ThreadSplit +from ..specs.Transform import Transform +from ..specs.Trigger import Trigger +from ..specs.WorkflowSpec import WorkflowSpec +from ..specs.LoopResetTask import LoopResetTask + +# Create a list of tag names out of the spec names. +def spec_map(): + return { + 'acquire-mutex': AcquireMutex, + 'cancel': Cancel, + 'cancel-task': CancelTask, + 'celery': Celery, + 'choose': Choose, + 'exclusive-choice': ExclusiveChoice, + 'execute': Execute, + 'gate': Gate, + 'join': Join, + 'merge': Merge, + 'multi-choice': MultiChoice, + 'multi-instance': MultiInstance, + 'release-mutex': ReleaseMutex, + 'simple': Simple, + 'start-task': StartTask, + 'sub-workflow': SubWorkflow, + 'thread-start': ThreadStart, + 'thread-merge': ThreadMerge, + 'thread-split': ThreadSplit, + 'transform': Transform, + 'trigger': Trigger, + 'workflow-spec': WorkflowSpec, + 'loop-reset-task': LoopResetTask, + 'task': Simple, + } + +def op_map(): + return { + 'equals': operators.Equal, + 'not-equals': operators.NotEqual, + 'less-than': operators.LessThan, + 'greater-than': operators.GreaterThan, + 'matches': operators.Match + } + class Serializer(object): diff --git a/SpiffWorkflow/serializer/dict.py b/SpiffWorkflow/serializer/dict.py index 5688b587..8d1e3ad4 100644 --- a/SpiffWorkflow/serializer/dict.py +++ b/SpiffWorkflow/serializer/dict.py @@ -24,11 +24,30 @@ from ..util.impl import get_class from ..task import Task from ..operators import (Attrib, PathAttrib, Equal, NotEqual, Operator, GreaterThan, LessThan, Match) -from ..specs import (Cancel, AcquireMutex, CancelTask, Celery, Choose, - ExclusiveChoice, Execute, Gate, Join, MultiChoice, - MultiInstance, ReleaseMutex, Simple, WorkflowSpec, - TaskSpec, SubWorkflow, StartTask, ThreadMerge, - ThreadSplit, ThreadStart, Merge, Trigger, LoopResetTask) +from ..specs.base import TaskSpec +from ..specs.AcquireMutex import AcquireMutex +from ..specs.Cancel import Cancel +from ..specs.CancelTask import CancelTask +from ..specs.Celery import Celery +from ..specs.Choose import Choose +from ..specs.ExclusiveChoice import ExclusiveChoice +from ..specs.Execute import Execute +from ..specs.Gate import Gate +from ..specs.Join import Join +from ..specs.Merge import Merge +from ..specs.MultiChoice import MultiChoice +from ..specs.MultiInstance import MultiInstance +from ..specs.ReleaseMutex import ReleaseMutex +from ..specs.Simple import Simple +from ..specs.StartTask import StartTask +from ..specs.SubWorkflow import SubWorkflow +from ..specs.ThreadStart import ThreadStart +from ..specs.ThreadMerge import ThreadMerge +from ..specs.ThreadSplit import ThreadSplit +from ..specs.Transform import Transform +from ..specs.Trigger import Trigger +from ..specs.WorkflowSpec import WorkflowSpec +from ..specs.LoopResetTask import LoopResetTask from .base import Serializer from .exceptions import TaskNotSupportedError, MissingSpecError import warnings diff --git a/SpiffWorkflow/serializer/prettyxml.py b/SpiffWorkflow/serializer/prettyxml.py index 25bec80e..9bd189c5 100644 --- a/SpiffWorkflow/serializer/prettyxml.py +++ b/SpiffWorkflow/serializer/prettyxml.py @@ -18,25 +18,15 @@ # 02110-1301 USA import re import xml.dom.minidom as minidom -from .. import operators, specs +from .. import operators +from ..specs.Simple import Simple +from ..specs.WorkflowSpec import WorkflowSpec from ..exceptions import StorageException -from .base import Serializer +from .base import Serializer, spec_map, op_map # Create a list of tag names out of the spec names. -_spec_map = dict() -for name in dir(specs): - if name.startswith('_'): - continue - module = specs.__dict__[name] - name = re.sub(r'(.)([A-Z])', r'\1-\2', name).lower() - _spec_map[name] = module -_spec_map['task'] = specs.Simple - -_op_map = {'equals': operators.Equal, - 'not-equals': operators.NotEqual, - 'less-than': operators.LessThan, - 'greater-than': operators.GreaterThan, - 'matches': operators.Match} +_spec_map = spec_map() +_op_map = op_map() _exc = StorageException @@ -299,9 +289,9 @@ class XmlSerializer(Serializer): _exc('%s without a name attribute' % node.nodeName) # Read all task specs and create a list of successors. - workflow_spec = specs.WorkflowSpec(name, filename) + workflow_spec = WorkflowSpec(name, filename) del workflow_spec.task_specs['Start'] - end = specs.Simple(workflow_spec, 'End'), [] + end = Simple(workflow_spec, 'End'), [] read_specs = dict(end=end) for child_node in node.childNodes: if child_node.nodeType != minidom.Node.ELEMENT_NODE: diff --git a/SpiffWorkflow/serializer/xml.py b/SpiffWorkflow/serializer/xml.py index f4b18b6c..c0d0572d 100644 --- a/SpiffWorkflow/serializer/xml.py +++ b/SpiffWorkflow/serializer/xml.py @@ -24,29 +24,35 @@ from .. import specs, operators from ..task import Task, TaskStateNames from ..operators import (Attrib, Assign, PathAttrib, Equal, NotEqual, GreaterThan, LessThan, Match) -from ..specs import (Cancel, AcquireMutex, CancelTask, Celery, Choose, - ExclusiveChoice, Execute, Gate, Join, MultiChoice, - MultiInstance, ReleaseMutex, Simple, WorkflowSpec, - SubWorkflow, StartTask, ThreadMerge, - ThreadSplit, ThreadStart, Merge, Trigger, LoopResetTask) -from .base import Serializer +from ..specs.AcquireMutex import AcquireMutex +from ..specs.Cancel import Cancel +from ..specs.CancelTask import CancelTask +from ..specs.Celery import Celery +from ..specs.Choose import Choose +from ..specs.ExclusiveChoice import ExclusiveChoice +from ..specs.Execute import Execute +from ..specs.Gate import Gate +from ..specs.Join import Join +from ..specs.Merge import Merge +from ..specs.MultiChoice import MultiChoice +from ..specs.MultiInstance import MultiInstance +from ..specs.ReleaseMutex import ReleaseMutex +from ..specs.Simple import Simple +from ..specs.StartTask import StartTask +from ..specs.SubWorkflow import SubWorkflow +from ..specs.ThreadStart import ThreadStart +from ..specs.ThreadMerge import ThreadMerge +from ..specs.ThreadSplit import ThreadSplit +from ..specs.Transform import Transform +from ..specs.Trigger import Trigger +from ..specs.WorkflowSpec import WorkflowSpec +from ..specs.LoopResetTask import LoopResetTask +from .base import Serializer, spec_map, op_map from .exceptions import TaskNotSupportedError # Create a list of tag names out of the spec names. -_spec_map = dict() -for name in dir(specs): - if name.startswith('_'): - continue - module = specs.__dict__[name] - name = re.sub(r'(.)([A-Z])', r'\1-\2', name).lower() - _spec_map[name] = module -_spec_map['task'] = specs.Simple - -_op_map = {'equals': operators.Equal, - 'not-equals': operators.NotEqual, - 'less-than': operators.LessThan, - 'greater-than': operators.GreaterThan, - 'matches': operators.Match} +_spec_map = spec_map() +_op_map = op_map() class XmlSerializer(Serializer): diff --git a/SpiffWorkflow/signavio/parser/__init__.py b/SpiffWorkflow/signavio/parser/__init__.py index 477cb987..e69de29b 100644 --- a/SpiffWorkflow/signavio/parser/__init__.py +++ b/SpiffWorkflow/signavio/parser/__init__.py @@ -1 +0,0 @@ -from .tasks import CallActivityParser \ No newline at end of file diff --git a/SpiffWorkflow/specs/SubWorkflow.py b/SpiffWorkflow/specs/SubWorkflow.py index 58d9f779..197a6912 100644 --- a/SpiffWorkflow/specs/SubWorkflow.py +++ b/SpiffWorkflow/specs/SubWorkflow.py @@ -18,7 +18,7 @@ # 02110-1301 USA import os -from . import StartTask +from .StartTask import StartTask from .base import TaskSpec from ..task import TaskState from ..exceptions import WorkflowException @@ -87,7 +87,7 @@ class SubWorkflow(TaskSpec): def _create_subworkflow(self, my_task): from ..serializer.prettyxml import XmlSerializer - from ..specs import WorkflowSpec + from ..specs.WorkflowSpec import WorkflowSpec from ..workflow import Workflow file_name = valueof(my_task, self.file) serializer = XmlSerializer() diff --git a/SpiffWorkflow/specs/ThreadMerge.py b/SpiffWorkflow/specs/ThreadMerge.py index 56e3a4c3..ddbd0d71 100644 --- a/SpiffWorkflow/specs/ThreadMerge.py +++ b/SpiffWorkflow/specs/ThreadMerge.py @@ -19,7 +19,7 @@ from ..task import TaskState from ..exceptions import WorkflowException from ..operators import valueof -from ..specs import Join +from ..specs.Join import Join class ThreadMerge(Join): diff --git a/SpiffWorkflow/specs/WorkflowSpec.py b/SpiffWorkflow/specs/WorkflowSpec.py index 8ea12710..7f084cb3 100644 --- a/SpiffWorkflow/specs/WorkflowSpec.py +++ b/SpiffWorkflow/specs/WorkflowSpec.py @@ -17,7 +17,7 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301 USA -from ..specs import StartTask +from ..specs.StartTask import StartTask class WorkflowSpec(object): @@ -82,7 +82,7 @@ class WorkflowSpec(object): :returns: empty list if valid, a list of errors if not """ results = [] - from ..specs import Join + from ..specs.Join import Join def recursive_find_loop(task, history): current = history[:] diff --git a/SpiffWorkflow/specs/__init__.py b/SpiffWorkflow/specs/__init__.py index 1b10f819..e69de29b 100644 --- a/SpiffWorkflow/specs/__init__.py +++ b/SpiffWorkflow/specs/__init__.py @@ -1,31 +0,0 @@ -# -*- coding: utf-8 -*- -# flake8: noqa - -from .base import TaskSpec -from .AcquireMutex import AcquireMutex -from .Cancel import Cancel -from .CancelTask import CancelTask -from .Celery import Celery -from .Choose import Choose -from .ExclusiveChoice import ExclusiveChoice -from .Execute import Execute -from .Gate import Gate -from .Join import Join -from .Merge import Merge -from .MultiChoice import MultiChoice -from .MultiInstance import MultiInstance -from .ReleaseMutex import ReleaseMutex -from .Simple import Simple -from .StartTask import StartTask -from .SubWorkflow import SubWorkflow -from .ThreadStart import ThreadStart -from .ThreadMerge import ThreadMerge -from .ThreadSplit import ThreadSplit -from .Transform import Transform -from .Trigger import Trigger -from .WorkflowSpec import WorkflowSpec -from .LoopResetTask import LoopResetTask - -import inspect -__all__ = [name for name, obj in list(locals().items()) - if not (name.startswith('_') or inspect.ismodule(obj))] diff --git a/SpiffWorkflow/spiff/parser/__init__.py b/SpiffWorkflow/spiff/parser/__init__.py index 6b38b362..e69de29b 100644 --- a/SpiffWorkflow/spiff/parser/__init__.py +++ b/SpiffWorkflow/spiff/parser/__init__.py @@ -1 +0,0 @@ -from .process import SpiffBpmnParser, VALIDATOR \ No newline at end of file diff --git a/SpiffWorkflow/spiff/parser/process.py b/SpiffWorkflow/spiff/parser/process.py index 7e3dd169..a8238b6b 100644 --- a/SpiffWorkflow/spiff/parser/process.py +++ b/SpiffWorkflow/spiff/parser/process.py @@ -3,8 +3,15 @@ import os from SpiffWorkflow.dmn.parser.BpmnDmnParser import BpmnDmnParser from SpiffWorkflow.bpmn.parser.BpmnParser import BpmnValidator, full_tag -from SpiffWorkflow.bpmn.specs.events import StartEvent, EndEvent, IntermediateThrowEvent, BoundaryEvent, IntermediateCatchEvent -from SpiffWorkflow.spiff.specs import NoneTask, ManualTask, UserTask, ScriptTask, SubWorkflowTask, TransactionSubprocess, CallActivity, ServiceTask +from SpiffWorkflow.bpmn.specs.events.EndEvent import EndEvent +from SpiffWorkflow.bpmn.specs.events.StartEvent import StartEvent +from SpiffWorkflow.bpmn.specs.events.IntermediateEvent import IntermediateThrowEvent, BoundaryEvent, IntermediateCatchEvent +from SpiffWorkflow.spiff.specs.none_task import NoneTask +from SpiffWorkflow.spiff.specs.manual_task import ManualTask +from SpiffWorkflow.spiff.specs.user_task import UserTask +from SpiffWorkflow.spiff.specs.script_task import ScriptTask +from SpiffWorkflow.spiff.specs.subworkflow_task import SubWorkflowTask, TransactionSubprocess, CallActivity +from SpiffWorkflow.spiff.specs.service_task import ServiceTask from SpiffWorkflow.spiff.specs.events.event_types import SendTask, ReceiveTask from SpiffWorkflow.spiff.parser.task_spec import SpiffTaskParser, SubWorkflowParser, CallActivityParser, ServiceTaskParser, ScriptTaskParser from SpiffWorkflow.spiff.parser.event_parsers import (SpiffStartEventParser, SpiffEndEventParser, SpiffBoundaryEventParser, diff --git a/SpiffWorkflow/spiff/serializer/__init__.py b/SpiffWorkflow/spiff/serializer/__init__.py index 364c3ebf..e69de29b 100644 --- a/SpiffWorkflow/spiff/serializer/__init__.py +++ b/SpiffWorkflow/spiff/serializer/__init__.py @@ -1,4 +0,0 @@ -from .task_spec_converters import NoneTaskConverter, ManualTaskConverter, UserTaskConverter, ScriptTaskConverter -from .task_spec_converters import TransactionSubprocessConverter, CallActivityTaskConverter, SubWorkflowTaskConverter -from .task_spec_converters import StartEventConverter, EndEventConverter, IntermediateCatchEventConverter, IntermediateThrowEventConverter, \ - BoundaryEventConverter, SendTaskConverter, ReceiveTaskConverter, ServiceTaskConverter diff --git a/SpiffWorkflow/spiff/serializer/task_spec_converters.py b/SpiffWorkflow/spiff/serializer/task_spec_converters.py index 5b676968..a1c0525c 100644 --- a/SpiffWorkflow/spiff/serializer/task_spec_converters.py +++ b/SpiffWorkflow/spiff/serializer/task_spec_converters.py @@ -1,9 +1,16 @@ from functools import partial from SpiffWorkflow.bpmn.serializer.bpmn_converters import BpmnTaskSpecConverter -from SpiffWorkflow.bpmn.specs.events import EndEvent, StartEvent, IntermediateThrowEvent, IntermediateCatchEvent, BoundaryEvent -from SpiffWorkflow.spiff.specs import NoneTask, ManualTask, UserTask, ScriptTask, ServiceTask, SubWorkflowTask, TransactionSubprocess, CallActivity -from SpiffWorkflow.spiff.specs.events import SendTask, ReceiveTask +from SpiffWorkflow.bpmn.specs.events.StartEvent import StartEvent +from SpiffWorkflow.bpmn.specs.events.EndEvent import EndEvent +from SpiffWorkflow.bpmn.specs.events.IntermediateEvent import IntermediateThrowEvent, IntermediateCatchEvent, BoundaryEvent +from SpiffWorkflow.spiff.specs.none_task import NoneTask +from SpiffWorkflow.spiff.specs.manual_task import ManualTask +from SpiffWorkflow.spiff.specs.user_task import UserTask +from SpiffWorkflow.spiff.specs.script_task import ScriptTask +from SpiffWorkflow.spiff.specs.service_task import ServiceTask +from SpiffWorkflow.spiff.specs.subworkflow_task import SubWorkflowTask, TransactionSubprocess, CallActivity +from SpiffWorkflow.spiff.specs.events.event_types import SendTask, ReceiveTask from SpiffWorkflow.spiff.specs.events.event_definitions import MessageEventDefinition diff --git a/SpiffWorkflow/spiff/specs/__init__.py b/SpiffWorkflow/spiff/specs/__init__.py index 1e18b634..e69de29b 100644 --- a/SpiffWorkflow/spiff/specs/__init__.py +++ b/SpiffWorkflow/spiff/specs/__init__.py @@ -1,6 +0,0 @@ -from .manual_task import ManualTask -from .none_task import NoneTask -from .subworkflow_task import SubWorkflowTask, TransactionSubprocess, CallActivity -from .user_task import UserTask -from .script_task import ScriptTask -from .service_task import ServiceTask diff --git a/SpiffWorkflow/spiff/specs/events/__init__.py b/SpiffWorkflow/spiff/specs/events/__init__.py index 2fc0bc11..e69de29b 100644 --- a/SpiffWorkflow/spiff/specs/events/__init__.py +++ b/SpiffWorkflow/spiff/specs/events/__init__.py @@ -1 +0,0 @@ -from .event_types import SendTask, ReceiveTask \ No newline at end of file diff --git a/SpiffWorkflow/workflow.py b/SpiffWorkflow/workflow.py index 376f2a01..906cfa5c 100644 --- a/SpiffWorkflow/workflow.py +++ b/SpiffWorkflow/workflow.py @@ -19,7 +19,7 @@ import logging -from . import specs +from .specs.Simple import Simple from .specs.LoopResetTask import LoopResetTask from .task import Task, TaskState from .util.compat import mutex @@ -61,7 +61,7 @@ class Workflow(object): if 'Root' in workflow_spec.task_specs: root = workflow_spec.task_specs['Root'] else: - root = specs.Simple(workflow_spec, 'Root') + root = Simple(workflow_spec, 'Root') logger.info('Initialize', extra=self.log_info()) # Setting TaskState.COMPLETED prevents the root task from being executed. diff --git a/doc/non-bpmn/tutorial/start.py b/doc/non-bpmn/tutorial/start.py index e52b66c6..4090384c 100644 --- a/doc/non-bpmn/tutorial/start.py +++ b/doc/non-bpmn/tutorial/start.py @@ -1,6 +1,6 @@ import json from SpiffWorkflow.workflow import Workflow -from SpiffWorkflow.specs import WorkflowSpec +from SpiffWorkflow.specs.WorkflowSpec import WorkflowSpec from SpiffWorkflow.serializer.json import JSONSerializer # Load from JSON diff --git a/tests/SpiffWorkflow/PatternTest.py b/tests/SpiffWorkflow/PatternTest.py index 8d11528f..f0d013ce 100644 --- a/tests/SpiffWorkflow/PatternTest.py +++ b/tests/SpiffWorkflow/PatternTest.py @@ -6,7 +6,7 @@ import unittest import os sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', '..')) -from SpiffWorkflow.specs import WorkflowSpec +from SpiffWorkflow.specs.WorkflowSpec import WorkflowSpec from SpiffWorkflow.task import Task from SpiffWorkflow.serializer.prettyxml import XmlSerializer from tests.SpiffWorkflow.util import run_workflow diff --git a/tests/SpiffWorkflow/PersistSmallWorkflowTest.py b/tests/SpiffWorkflow/PersistSmallWorkflowTest.py index c580c87d..b554be18 100644 --- a/tests/SpiffWorkflow/PersistSmallWorkflowTest.py +++ b/tests/SpiffWorkflow/PersistSmallWorkflowTest.py @@ -6,7 +6,9 @@ import os.path sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', '..')) from SpiffWorkflow.workflow import Workflow -from SpiffWorkflow.specs import Join, MultiChoice, WorkflowSpec +from SpiffWorkflow.specs.Join import Join +from SpiffWorkflow.specs.MultiChoice import MultiChoice +from SpiffWorkflow.specs.WorkflowSpec import WorkflowSpec from SpiffWorkflow.operators import Attrib, Equal, PathAttrib from SpiffWorkflow.task import TaskState from SpiffWorkflow.specs.Simple import Simple diff --git a/tests/SpiffWorkflow/TaskTest.py b/tests/SpiffWorkflow/TaskTest.py index af4f28e3..e44f68e6 100644 --- a/tests/SpiffWorkflow/TaskTest.py +++ b/tests/SpiffWorkflow/TaskTest.py @@ -7,7 +7,8 @@ import os.path sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', '..')) from SpiffWorkflow.task import Task, TaskState, updateDotDict -from SpiffWorkflow.specs import WorkflowSpec, Simple +from SpiffWorkflow.specs.WorkflowSpec import WorkflowSpec +from SpiffWorkflow.specs.Simple import Simple class MockWorkflow(object): diff --git a/tests/SpiffWorkflow/WorkflowTest.py b/tests/SpiffWorkflow/WorkflowTest.py index e47f069d..0d2b0b3d 100644 --- a/tests/SpiffWorkflow/WorkflowTest.py +++ b/tests/SpiffWorkflow/WorkflowTest.py @@ -7,7 +7,9 @@ data_dir = os.path.join(os.path.dirname(__file__), 'data') sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', '..')) from SpiffWorkflow.workflow import Workflow -from SpiffWorkflow.specs import Cancel, Simple, WorkflowSpec +from SpiffWorkflow.specs.Cancel import Cancel +from SpiffWorkflow.specs.Simple import Simple +from SpiffWorkflow.specs.WorkflowSpec import WorkflowSpec from SpiffWorkflow.task import TaskState from SpiffWorkflow.serializer.prettyxml import XmlSerializer diff --git a/tests/SpiffWorkflow/bpmn/ApprovalsTest.py b/tests/SpiffWorkflow/bpmn/ApprovalsTest.py index 19f49380..7576a23f 100644 --- a/tests/SpiffWorkflow/bpmn/ApprovalsTest.py +++ b/tests/SpiffWorkflow/bpmn/ApprovalsTest.py @@ -2,7 +2,7 @@ import unittest from SpiffWorkflow.bpmn.workflow import BpmnWorkflow -from SpiffWorkflow.bpmn.specs.events import MessageEventDefinition +from SpiffWorkflow.bpmn.specs.events.event_definitions import MessageEventDefinition from tests.SpiffWorkflow.bpmn.BpmnWorkflowTestCase import BpmnWorkflowTestCase __author__ = 'matth' diff --git a/tests/SpiffWorkflow/bpmn/BpmnLoaderForTests.py b/tests/SpiffWorkflow/bpmn/BpmnLoaderForTests.py index 7a407cc7..54c18709 100644 --- a/tests/SpiffWorkflow/bpmn/BpmnLoaderForTests.py +++ b/tests/SpiffWorkflow/bpmn/BpmnLoaderForTests.py @@ -10,7 +10,7 @@ from SpiffWorkflow.bpmn.serializer.bpmn_converters import BpmnTaskSpecConverter # Many of our tests relied on the Packager to set the calledElement attribute on # Call Activities. I've moved that code to a customized parser. -from SpiffWorkflow.signavio.parser import CallActivityParser +from SpiffWorkflow.signavio.parser.tasks import CallActivityParser from SpiffWorkflow.bpmn.specs.SubWorkflowTask import CallActivity __author__ = 'matth' diff --git a/tests/SpiffWorkflow/bpmn/BpmnWorkflowSerializerTest.py b/tests/SpiffWorkflow/bpmn/BpmnWorkflowSerializerTest.py index d0d1a947..ac2ae463 100644 --- a/tests/SpiffWorkflow/bpmn/BpmnWorkflowSerializerTest.py +++ b/tests/SpiffWorkflow/bpmn/BpmnWorkflowSerializerTest.py @@ -6,7 +6,7 @@ from uuid import uuid4 from SpiffWorkflow.task import TaskState from SpiffWorkflow.bpmn.PythonScriptEngine import PythonScriptEngine from SpiffWorkflow.bpmn.parser.BpmnParser import BpmnParser -from SpiffWorkflow.bpmn.serializer import BpmnWorkflowSerializer +from SpiffWorkflow.bpmn.serializer.workflow import BpmnWorkflowSerializer from SpiffWorkflow.bpmn.serializer.BpmnSerializer import BpmnSerializer from SpiffWorkflow.bpmn.workflow import BpmnWorkflow from tests.SpiffWorkflow.bpmn.BpmnLoaderForTests import TestUserTaskConverter diff --git a/tests/SpiffWorkflow/bpmn/BpmnWorkflowTestCase.py b/tests/SpiffWorkflow/bpmn/BpmnWorkflowTestCase.py index 5a341188..e2864919 100644 --- a/tests/SpiffWorkflow/bpmn/BpmnWorkflowTestCase.py +++ b/tests/SpiffWorkflow/bpmn/BpmnWorkflowTestCase.py @@ -7,7 +7,7 @@ from SpiffWorkflow.bpmn.parser.BpmnParser import BpmnValidator from SpiffWorkflow.task import TaskState -from SpiffWorkflow.bpmn.serializer import BpmnWorkflowSerializer +from SpiffWorkflow.bpmn.serializer.workflow import BpmnWorkflowSerializer from .BpmnLoaderForTests import TestUserTaskConverter, TestBpmnParser __author__ = 'matth' diff --git a/tests/SpiffWorkflow/bpmn/ProcessDependencyTest.py b/tests/SpiffWorkflow/bpmn/ProcessDependencyTest.py index b3a79519..86514a03 100644 --- a/tests/SpiffWorkflow/bpmn/ProcessDependencyTest.py +++ b/tests/SpiffWorkflow/bpmn/ProcessDependencyTest.py @@ -3,7 +3,7 @@ import os import unittest from SpiffWorkflow.camunda.parser.CamundaParser import CamundaParser -from SpiffWorkflow.spiff.parser import SpiffBpmnParser +from SpiffWorkflow.spiff.parser.process import SpiffBpmnParser from tests.SpiffWorkflow.bpmn.BpmnWorkflowTestCase import BpmnWorkflowTestCase diff --git a/tests/SpiffWorkflow/bpmn/events/MultipleEventsTest.py b/tests/SpiffWorkflow/bpmn/events/MultipleEventsTest.py index b1e2a24d..86c55235 100644 --- a/tests/SpiffWorkflow/bpmn/events/MultipleEventsTest.py +++ b/tests/SpiffWorkflow/bpmn/events/MultipleEventsTest.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- import unittest -from SpiffWorkflow.bpmn.specs.events import CancelEventDefinition, SignalEventDefinition +from SpiffWorkflow.bpmn.specs.events.event_definitions import CancelEventDefinition, SignalEventDefinition from SpiffWorkflow.task import TaskState from SpiffWorkflow.bpmn.workflow import BpmnWorkflow from tests.SpiffWorkflow.bpmn.BpmnWorkflowTestCase import BpmnWorkflowTestCase diff --git a/tests/SpiffWorkflow/bpmn/events/TimerDurationBoundaryOnTaskTest.py b/tests/SpiffWorkflow/bpmn/events/TimerDurationBoundaryOnTaskTest.py index e87de251..9bd1f322 100644 --- a/tests/SpiffWorkflow/bpmn/events/TimerDurationBoundaryOnTaskTest.py +++ b/tests/SpiffWorkflow/bpmn/events/TimerDurationBoundaryOnTaskTest.py @@ -5,7 +5,7 @@ import datetime import time from datetime import timedelta -from SpiffWorkflow.bpmn.specs.events import EndEvent +from SpiffWorkflow.bpmn.specs.events.EndEvent import EndEvent from SpiffWorkflow.task import TaskState from SpiffWorkflow.bpmn.workflow import BpmnWorkflow from SpiffWorkflow.bpmn.PythonScriptEngine import PythonScriptEngine diff --git a/tests/SpiffWorkflow/camunda/BaseTestCase.py b/tests/SpiffWorkflow/camunda/BaseTestCase.py index 6ea39d0a..b41a8aab 100644 --- a/tests/SpiffWorkflow/camunda/BaseTestCase.py +++ b/tests/SpiffWorkflow/camunda/BaseTestCase.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- import os -from SpiffWorkflow.bpmn.serializer import BpmnWorkflowSerializer +from SpiffWorkflow.bpmn.serializer.workflow import BpmnWorkflowSerializer from SpiffWorkflow.camunda.parser.CamundaParser import CamundaParser -from SpiffWorkflow.camunda.serializer import UserTaskConverter, StartEventConverter, EndEventConverter, \ +from SpiffWorkflow.camunda.serializer.task_spec_converters import UserTaskConverter, StartEventConverter, EndEventConverter, \ IntermediateCatchEventConverter, IntermediateThrowEventConverter, BoundaryEventConverter -from SpiffWorkflow.dmn.serializer import BusinessRuleTaskConverter +from SpiffWorkflow.dmn.serializer.task_spec_converters import BusinessRuleTaskConverter from tests.SpiffWorkflow.bpmn.BpmnWorkflowTestCase import BpmnWorkflowTestCase diff --git a/tests/SpiffWorkflow/camunda/specs/UserTaskSpecTest.py b/tests/SpiffWorkflow/camunda/specs/UserTaskSpecTest.py index 2d3c16d7..33f62191 100644 --- a/tests/SpiffWorkflow/camunda/specs/UserTaskSpecTest.py +++ b/tests/SpiffWorkflow/camunda/specs/UserTaskSpecTest.py @@ -3,7 +3,8 @@ import unittest from SpiffWorkflow.camunda.specs.UserTask import FormField, UserTask, Form, \ EnumFormField -from SpiffWorkflow.specs import WorkflowSpec, TaskSpec +from SpiffWorkflow.specs.base import TaskSpec +from SpiffWorkflow.specs.WorkflowSpec import WorkflowSpec class UserTaskSpecTest(unittest.TestCase): diff --git a/tests/SpiffWorkflow/data/spiff/workflow1.py b/tests/SpiffWorkflow/data/spiff/workflow1.py index fba204bd..bc963fea 100644 --- a/tests/SpiffWorkflow/data/spiff/workflow1.py +++ b/tests/SpiffWorkflow/data/spiff/workflow1.py @@ -1,6 +1,11 @@ # -*- coding: utf-8 -*- -from SpiffWorkflow.specs import ExclusiveChoice, Join, MultiChoice, MultiInstance, Simple, WorkflowSpec +from SpiffWorkflow.specs.ExclusiveChoice import ExclusiveChoice +from SpiffWorkflow.specs.Join import Join +from SpiffWorkflow.specs.MultiChoice import MultiChoice +from SpiffWorkflow.specs.MultiInstance import MultiInstance +from SpiffWorkflow.specs.Simple import Simple +from SpiffWorkflow.specs.WorkflowSpec import WorkflowSpec from SpiffWorkflow.operators import Attrib, Equal, NotEqual diff --git a/tests/SpiffWorkflow/serializer/baseTest.py b/tests/SpiffWorkflow/serializer/baseTest.py index 9bb79b13..7ac41f3c 100644 --- a/tests/SpiffWorkflow/serializer/baseTest.py +++ b/tests/SpiffWorkflow/serializer/baseTest.py @@ -11,7 +11,7 @@ sys.path.insert(0, os.path.join(dirname, '..')) from PatternTest import run_workflow, PatternTest from SpiffWorkflow.serializer.base import Serializer -from SpiffWorkflow.specs import WorkflowSpec +from SpiffWorkflow.specs.WorkflowSpec import WorkflowSpec from SpiffWorkflow.workflow import Workflow from SpiffWorkflow.serializer.exceptions import TaskNotSupportedError diff --git a/tests/SpiffWorkflow/specs/CeleryTest.py b/tests/SpiffWorkflow/specs/CeleryTest.py index 9190dd33..ac811688 100644 --- a/tests/SpiffWorkflow/specs/CeleryTest.py +++ b/tests/SpiffWorkflow/specs/CeleryTest.py @@ -6,7 +6,8 @@ import unittest import pickle sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', '..', '..')) from .TaskSpecTest import TaskSpecTest -from SpiffWorkflow.specs import Celery, WorkflowSpec +from SpiffWorkflow.specs.Celery import Celery +from SpiffWorkflow.specs.WorkflowSpec import WorkflowSpec from SpiffWorkflow.operators import Attrib from SpiffWorkflow.serializer.dict import DictionarySerializer from base64 import b64encode diff --git a/tests/SpiffWorkflow/specs/ExecuteTest.py b/tests/SpiffWorkflow/specs/ExecuteTest.py index bd3b06fd..fc16db93 100644 --- a/tests/SpiffWorkflow/specs/ExecuteTest.py +++ b/tests/SpiffWorkflow/specs/ExecuteTest.py @@ -10,7 +10,7 @@ sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', '..', '..')) from tests.SpiffWorkflow.util import run_workflow from .TaskSpecTest import TaskSpecTest from SpiffWorkflow.task import TaskState -from SpiffWorkflow.specs import Execute +from SpiffWorkflow.specs.Execute import Execute class ExecuteTest(TaskSpecTest): diff --git a/tests/SpiffWorkflow/specs/JoinTest.py b/tests/SpiffWorkflow/specs/JoinTest.py index 3eeb9286..7224701f 100644 --- a/tests/SpiffWorkflow/specs/JoinTest.py +++ b/tests/SpiffWorkflow/specs/JoinTest.py @@ -8,7 +8,7 @@ import unittest sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', '..', '..')) from .TaskSpecTest import TaskSpecTest -from SpiffWorkflow.specs import Join +from SpiffWorkflow.specs.Join import Join class JoinTest(TaskSpecTest): diff --git a/tests/SpiffWorkflow/specs/MergeTest.py b/tests/SpiffWorkflow/specs/MergeTest.py index 68f028d9..6fc692a6 100644 --- a/tests/SpiffWorkflow/specs/MergeTest.py +++ b/tests/SpiffWorkflow/specs/MergeTest.py @@ -8,7 +8,9 @@ import unittest sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', '..', '..')) from .JoinTest import JoinTest -from SpiffWorkflow.specs import Merge, WorkflowSpec, Simple +from SpiffWorkflow.specs.Merge import Merge +from SpiffWorkflow.specs.WorkflowSpec import WorkflowSpec +from SpiffWorkflow.specs.Simple import Simple from SpiffWorkflow.workflow import Workflow diff --git a/tests/SpiffWorkflow/specs/SubWorkflowTest.py b/tests/SpiffWorkflow/specs/SubWorkflowTest.py index aed09fc2..5baacf99 100644 --- a/tests/SpiffWorkflow/specs/SubWorkflowTest.py +++ b/tests/SpiffWorkflow/specs/SubWorkflowTest.py @@ -6,7 +6,7 @@ import os sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', '..', '..')) -from SpiffWorkflow.specs import WorkflowSpec +from SpiffWorkflow.specs.WorkflowSpec import WorkflowSpec from SpiffWorkflow.specs.SubWorkflow import SubWorkflow from SpiffWorkflow.serializer.prettyxml import XmlSerializer from SpiffWorkflow.task import TaskState diff --git a/tests/SpiffWorkflow/specs/TaskSpecTest.py b/tests/SpiffWorkflow/specs/TaskSpecTest.py index 2b213b4a..2509d618 100644 --- a/tests/SpiffWorkflow/specs/TaskSpecTest.py +++ b/tests/SpiffWorkflow/specs/TaskSpecTest.py @@ -5,9 +5,11 @@ import unittest import os sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', '..', '..')) -from SpiffWorkflow.specs import WorkflowSpec, Simple, Join +from SpiffWorkflow.specs.Join import Join +from SpiffWorkflow.specs.Simple import Simple +from SpiffWorkflow.specs.WorkflowSpec import WorkflowSpec from SpiffWorkflow.exceptions import WorkflowException -from SpiffWorkflow.specs import TaskSpec +from SpiffWorkflow.specs.base import TaskSpec from SpiffWorkflow.serializer.dict import DictionarySerializer diff --git a/tests/SpiffWorkflow/specs/TransformTest.py b/tests/SpiffWorkflow/specs/TransformTest.py index ca2aaf1c..228a038e 100644 --- a/tests/SpiffWorkflow/specs/TransformTest.py +++ b/tests/SpiffWorkflow/specs/TransformTest.py @@ -9,7 +9,8 @@ sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', '..', '..')) from tests.SpiffWorkflow.util import run_workflow from .TaskSpecTest import TaskSpecTest -from SpiffWorkflow.specs import Transform, Simple +from SpiffWorkflow.specs.Transform import Transform +from SpiffWorkflow.specs.Simple import Simple class TransformTest(TaskSpecTest): diff --git a/tests/SpiffWorkflow/specs/WorkflowSpecTest.py b/tests/SpiffWorkflow/specs/WorkflowSpecTest.py index 8b0289b8..9b4c0d32 100644 --- a/tests/SpiffWorkflow/specs/WorkflowSpecTest.py +++ b/tests/SpiffWorkflow/specs/WorkflowSpecTest.py @@ -15,7 +15,8 @@ try: except ImportError as e: from tests.SpiffWorkflow.util import track_workflow from SpiffWorkflow.workflow import Workflow -from SpiffWorkflow.specs import Join, WorkflowSpec +from SpiffWorkflow.specs.Join import Join +from SpiffWorkflow.specs.WorkflowSpec import WorkflowSpec from SpiffWorkflow.serializer.prettyxml import XmlSerializer serializer = XmlSerializer() diff --git a/tests/SpiffWorkflow/spiff/BaseTestCase.py b/tests/SpiffWorkflow/spiff/BaseTestCase.py index 9e882fcb..b085d1f7 100644 --- a/tests/SpiffWorkflow/spiff/BaseTestCase.py +++ b/tests/SpiffWorkflow/spiff/BaseTestCase.py @@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- import os -from SpiffWorkflow.spiff.parser import SpiffBpmnParser, VALIDATOR -from SpiffWorkflow.spiff.serializer import NoneTaskConverter, \ +from SpiffWorkflow.spiff.parser.process import SpiffBpmnParser, VALIDATOR +from SpiffWorkflow.spiff.serializer.task_spec_converters import NoneTaskConverter, \ ManualTaskConverter, UserTaskConverter, ScriptTaskConverter, \ SubWorkflowTaskConverter, TransactionSubprocessConverter, \ CallActivityTaskConverter, \ @@ -11,7 +11,7 @@ from SpiffWorkflow.spiff.serializer import NoneTaskConverter, \ IntermediateCatchEventConverter, IntermediateThrowEventConverter, \ ServiceTaskConverter from SpiffWorkflow.dmn.serializer.task_spec_converters import BusinessRuleTaskConverter -from SpiffWorkflow.bpmn.serializer import BpmnWorkflowSerializer +from SpiffWorkflow.bpmn.serializer.workflow import BpmnWorkflowSerializer from tests.SpiffWorkflow.bpmn.BpmnWorkflowTestCase import BpmnWorkflowTestCase