Merge commit 'ba67d7ad342481231aa5e11508e033f74e86d61f' into main
This commit is contained in:
commit
b2e44a3ef2
|
@ -1,16 +1,14 @@
|
||||||
from SpiffWorkflow.exceptions import WorkflowException
|
from SpiffWorkflow.exceptions import WorkflowTaskException
|
||||||
|
|
||||||
|
|
||||||
class WorkflowDataException(WorkflowException):
|
class WorkflowDataException(WorkflowTaskException):
|
||||||
|
|
||||||
def __init__(self, task, data_input=None, data_output=None, message=None):
|
def __init__(self, message, task, data_input=None, data_output=None):
|
||||||
"""
|
"""
|
||||||
:param task: the task that generated the error
|
:param task: the task that generated the error
|
||||||
:param data_input: the spec of the input variable (if a data input)
|
:param data_input: the spec of the input variable (if a data input)
|
||||||
:param data_output: the spec of the output variable (if a data output)
|
:param data_output: the spec of the output variable (if a data output)
|
||||||
"""
|
"""
|
||||||
super().__init__(task.task_spec, message or 'data object error')
|
super().__init__(message, task)
|
||||||
self.task = task
|
|
||||||
self.data_input = data_input
|
self.data_input = data_input
|
||||||
self.data_output = data_output
|
self.data_output = data_output
|
||||||
self.task_trace = self.get_task_trace(task)
|
|
||||||
|
|
|
@ -43,13 +43,23 @@ from ..specs.UserTask import UserTask
|
||||||
from .ProcessParser import ProcessParser
|
from .ProcessParser import ProcessParser
|
||||||
from .node_parser import DEFAULT_NSMAP
|
from .node_parser import DEFAULT_NSMAP
|
||||||
from .util import full_tag, xpath_eval, first
|
from .util import full_tag, xpath_eval, first
|
||||||
from .task_parsers import (UserTaskParser, NoneTaskParser, ManualTaskParser,
|
from .TaskParser import TaskParser
|
||||||
ExclusiveGatewayParser, ParallelGatewayParser, InclusiveGatewayParser,
|
from .task_parsers import (
|
||||||
CallActivityParser, ScriptTaskParser, SubWorkflowParser,
|
GatewayParser,
|
||||||
ServiceTaskParser)
|
ConditionalGatewayParser,
|
||||||
from .event_parsers import (EventBasedGatewayParser, StartEventParser, EndEventParser, BoundaryEventParser,
|
CallActivityParser,
|
||||||
IntermediateCatchEventParser, IntermediateThrowEventParser,
|
ScriptTaskParser,
|
||||||
SendTaskParser, ReceiveTaskParser)
|
SubWorkflowParser,
|
||||||
|
)
|
||||||
|
from .event_parsers import (
|
||||||
|
EventBasedGatewayParser,
|
||||||
|
StartEventParser, EndEventParser,
|
||||||
|
BoundaryEventParser,
|
||||||
|
IntermediateCatchEventParser,
|
||||||
|
IntermediateThrowEventParser,
|
||||||
|
SendTaskParser,
|
||||||
|
ReceiveTaskParser
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
XSD_PATH = os.path.join(os.path.dirname(__file__), 'schema', 'BPMN20.xsd')
|
XSD_PATH = os.path.join(os.path.dirname(__file__), 'schema', 'BPMN20.xsd')
|
||||||
|
@ -94,17 +104,17 @@ class BpmnParser(object):
|
||||||
PARSER_CLASSES = {
|
PARSER_CLASSES = {
|
||||||
full_tag('startEvent'): (StartEventParser, StartEvent),
|
full_tag('startEvent'): (StartEventParser, StartEvent),
|
||||||
full_tag('endEvent'): (EndEventParser, EndEvent),
|
full_tag('endEvent'): (EndEventParser, EndEvent),
|
||||||
full_tag('userTask'): (UserTaskParser, UserTask),
|
full_tag('userTask'): (TaskParser, UserTask),
|
||||||
full_tag('task'): (NoneTaskParser, NoneTask),
|
full_tag('task'): (TaskParser, NoneTask),
|
||||||
full_tag('subProcess'): (SubWorkflowParser, CallActivity),
|
full_tag('subProcess'): (SubWorkflowParser, CallActivity),
|
||||||
full_tag('manualTask'): (ManualTaskParser, ManualTask),
|
full_tag('manualTask'): (TaskParser, ManualTask),
|
||||||
full_tag('exclusiveGateway'): (ExclusiveGatewayParser, ExclusiveGateway),
|
full_tag('exclusiveGateway'): (ConditionalGatewayParser, ExclusiveGateway),
|
||||||
full_tag('parallelGateway'): (ParallelGatewayParser, ParallelGateway),
|
full_tag('parallelGateway'): (GatewayParser, ParallelGateway),
|
||||||
full_tag('inclusiveGateway'): (InclusiveGatewayParser, InclusiveGateway),
|
full_tag('inclusiveGateway'): (ConditionalGatewayParser, InclusiveGateway),
|
||||||
full_tag('callActivity'): (CallActivityParser, CallActivity),
|
full_tag('callActivity'): (CallActivityParser, CallActivity),
|
||||||
full_tag('transaction'): (SubWorkflowParser, TransactionSubprocess),
|
full_tag('transaction'): (SubWorkflowParser, TransactionSubprocess),
|
||||||
full_tag('scriptTask'): (ScriptTaskParser, ScriptTask),
|
full_tag('scriptTask'): (ScriptTaskParser, ScriptTask),
|
||||||
full_tag('serviceTask'): (ServiceTaskParser, ServiceTask),
|
full_tag('serviceTask'): (TaskParser, ServiceTask),
|
||||||
full_tag('intermediateCatchEvent'): (IntermediateCatchEventParser, IntermediateCatchEvent),
|
full_tag('intermediateCatchEvent'): (IntermediateCatchEventParser, IntermediateCatchEvent),
|
||||||
full_tag('intermediateThrowEvent'): (IntermediateThrowEventParser, IntermediateThrowEvent),
|
full_tag('intermediateThrowEvent'): (IntermediateThrowEventParser, IntermediateThrowEvent),
|
||||||
full_tag('boundaryEvent'): (BoundaryEventParser, BoundaryEvent),
|
full_tag('boundaryEvent'): (BoundaryEventParser, BoundaryEvent),
|
||||||
|
|
|
@ -28,6 +28,7 @@ from ..specs.events.event_definitions import CancelEventDefinition
|
||||||
from ..specs.MultiInstanceTask import getDynamicMIClass
|
from ..specs.MultiInstanceTask import getDynamicMIClass
|
||||||
from ..specs.SubWorkflowTask import CallActivity, TransactionSubprocess, SubWorkflowTask
|
from ..specs.SubWorkflowTask import CallActivity, TransactionSubprocess, SubWorkflowTask
|
||||||
from ..specs.ExclusiveGateway import ExclusiveGateway
|
from ..specs.ExclusiveGateway import ExclusiveGateway
|
||||||
|
from ..specs.InclusiveGateway import InclusiveGateway
|
||||||
from ...dmn.specs.BusinessRuleTask import BusinessRuleTask
|
from ...dmn.specs.BusinessRuleTask import BusinessRuleTask
|
||||||
from ...operators import Attrib, PathAttrib
|
from ...operators import Attrib, PathAttrib
|
||||||
from .util import one, first
|
from .util import one, first
|
||||||
|
@ -188,9 +189,9 @@ class TaskParser(NodeParser):
|
||||||
children = sorted(children, key=lambda tup: float(tup[0]["y"]))
|
children = sorted(children, key=lambda tup: float(tup[0]["y"]))
|
||||||
|
|
||||||
default_outgoing = self.node.get('default')
|
default_outgoing = self.node.get('default')
|
||||||
if not default_outgoing:
|
if len(children) == 1 and isinstance(self.task, (ExclusiveGateway, InclusiveGateway)):
|
||||||
if len(children) == 1 or not isinstance(self.task, ExclusiveGateway):
|
(position, c, target_node, sequence_flow) = children[0]
|
||||||
(position, c, target_node, sequence_flow) = children[0]
|
if self.parse_condition(sequence_flow) is None:
|
||||||
default_outgoing = sequence_flow.get('id')
|
default_outgoing = sequence_flow.get('id')
|
||||||
|
|
||||||
for (position, c, target_node, sequence_flow) in children:
|
for (position, c, target_node, sequence_flow) in children:
|
||||||
|
|
|
@ -5,11 +5,19 @@ from SpiffWorkflow.bpmn.specs.events.event_definitions import CorrelationPropert
|
||||||
from .ValidationException import ValidationException
|
from .ValidationException import ValidationException
|
||||||
from .TaskParser import TaskParser
|
from .TaskParser import TaskParser
|
||||||
from .util import first, one
|
from .util import first, one
|
||||||
from ..specs.events.event_definitions import (MultipleEventDefinition, TimerEventDefinition, MessageEventDefinition,
|
from ..specs.events.event_definitions import (
|
||||||
ErrorEventDefinition, EscalationEventDefinition,
|
MultipleEventDefinition,
|
||||||
SignalEventDefinition,
|
TimeDateEventDefinition,
|
||||||
CancelEventDefinition, CycleTimerEventDefinition,
|
DurationTimerEventDefinition,
|
||||||
TerminateEventDefinition, NoneEventDefinition)
|
CycleTimerEventDefinition,
|
||||||
|
MessageEventDefinition,
|
||||||
|
ErrorEventDefinition,
|
||||||
|
EscalationEventDefinition,
|
||||||
|
SignalEventDefinition,
|
||||||
|
CancelEventDefinition,
|
||||||
|
TerminateEventDefinition,
|
||||||
|
NoneEventDefinition
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
CAMUNDA_MODEL_NS = 'http://camunda.org/schema/1.0/bpmn'
|
CAMUNDA_MODEL_NS = 'http://camunda.org/schema/1.0/bpmn'
|
||||||
|
@ -81,18 +89,16 @@ class EventDefinitionParser(TaskParser):
|
||||||
"""Parse the timerEventDefinition node and return an instance of TimerEventDefinition."""
|
"""Parse the timerEventDefinition node and return an instance of TimerEventDefinition."""
|
||||||
|
|
||||||
try:
|
try:
|
||||||
label = self.node.get('name', self.node.get('id'))
|
name = self.node.get('name', self.node.get('id'))
|
||||||
time_date = first(self.xpath('.//bpmn:timeDate'))
|
time_date = first(self.xpath('.//bpmn:timeDate'))
|
||||||
if time_date is not None:
|
if time_date is not None:
|
||||||
return TimerEventDefinition(label, time_date.text)
|
return TimeDateEventDefinition(name, time_date.text)
|
||||||
|
|
||||||
time_duration = first(self.xpath('.//bpmn:timeDuration'))
|
time_duration = first(self.xpath('.//bpmn:timeDuration'))
|
||||||
if time_duration is not None:
|
if time_duration is not None:
|
||||||
return TimerEventDefinition(label, time_duration.text)
|
return DurationTimerEventDefinition(name, time_duration.text)
|
||||||
|
|
||||||
time_cycle = first(self.xpath('.//bpmn:timeCycle'))
|
time_cycle = first(self.xpath('.//bpmn:timeCycle'))
|
||||||
if time_cycle is not None:
|
if time_cycle is not None:
|
||||||
return CycleTimerEventDefinition(label, time_cycle.text)
|
return CycleTimerEventDefinition(name, time_cycle.text)
|
||||||
raise ValidationException("Unknown Time Specification", node=self.node, file_name=self.filename)
|
raise ValidationException("Unknown Time Specification", node=self.node, file_name=self.filename)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
raise ValidationException("Time Specification Error. " + str(e), node=self.node, file_name=self.filename)
|
raise ValidationException("Time Specification Error. " + str(e), node=self.node, file_name=self.filename)
|
||||||
|
@ -170,9 +176,6 @@ class StartEventParser(EventDefinitionParser):
|
||||||
event_definition = self.get_event_definition([MESSAGE_EVENT_XPATH, SIGNAL_EVENT_XPATH, TIMER_EVENT_XPATH])
|
event_definition = self.get_event_definition([MESSAGE_EVENT_XPATH, SIGNAL_EVENT_XPATH, TIMER_EVENT_XPATH])
|
||||||
task = self._create_task(event_definition)
|
task = self._create_task(event_definition)
|
||||||
self.spec.start.connect(task)
|
self.spec.start.connect(task)
|
||||||
if isinstance(event_definition, CycleTimerEventDefinition):
|
|
||||||
# We are misusing cycle timers, so this is a hack whereby we will revisit ourselves if we fire.
|
|
||||||
task.connect(task)
|
|
||||||
return task
|
return task
|
||||||
|
|
||||||
def handles_multiple_outgoing(self):
|
def handles_multiple_outgoing(self):
|
||||||
|
|
|
@ -25,41 +25,19 @@ from .util import one, DEFAULT_NSMAP
|
||||||
CAMUNDA_MODEL_NS = 'http://camunda.org/schema/1.0/bpmn'
|
CAMUNDA_MODEL_NS = 'http://camunda.org/schema/1.0/bpmn'
|
||||||
|
|
||||||
|
|
||||||
class UserTaskParser(TaskParser):
|
class GatewayParser(TaskParser):
|
||||||
|
def handles_multiple_outgoing(self):
|
||||||
"""
|
return True
|
||||||
Base class for parsing User Tasks
|
|
||||||
"""
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
class ManualTaskParser(UserTaskParser):
|
class ConditionalGatewayParser(GatewayParser):
|
||||||
|
|
||||||
"""
|
|
||||||
Base class for parsing Manual Tasks. Currently assumes that Manual Tasks
|
|
||||||
should be treated the same way as User Tasks.
|
|
||||||
"""
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
class NoneTaskParser(UserTaskParser):
|
|
||||||
|
|
||||||
"""
|
|
||||||
Base class for parsing unspecified Tasks. Currently assumes that such Tasks
|
|
||||||
should be treated the same way as User Tasks.
|
|
||||||
"""
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
class ExclusiveGatewayParser(TaskParser):
|
|
||||||
"""
|
"""
|
||||||
Parses an Exclusive Gateway, setting up the outgoing conditions
|
Parses an Exclusive Gateway, setting up the outgoing conditions
|
||||||
appropriately.
|
appropriately.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def connect_outgoing(self, outgoing_task, sequence_flow_node, is_default):
|
def connect_outgoing(self, outgoing_task, sequence_flow_node, is_default):
|
||||||
if is_default:
|
if is_default:
|
||||||
super(ExclusiveGatewayParser, self).connect_outgoing(outgoing_task, sequence_flow_node, is_default)
|
super().connect_outgoing(outgoing_task, sequence_flow_node, is_default)
|
||||||
else:
|
else:
|
||||||
cond = self.parse_condition(sequence_flow_node)
|
cond = self.parse_condition(sequence_flow_node)
|
||||||
if cond is None:
|
if cond is None:
|
||||||
|
@ -69,33 +47,6 @@ class ExclusiveGatewayParser(TaskParser):
|
||||||
self.filename)
|
self.filename)
|
||||||
self.task.connect_outgoing_if(cond, outgoing_task)
|
self.task.connect_outgoing_if(cond, outgoing_task)
|
||||||
|
|
||||||
def handles_multiple_outgoing(self):
|
|
||||||
return True
|
|
||||||
|
|
||||||
|
|
||||||
class ParallelGatewayParser(TaskParser):
|
|
||||||
|
|
||||||
"""
|
|
||||||
Parses a Parallel Gateway.
|
|
||||||
"""
|
|
||||||
|
|
||||||
def handles_multiple_outgoing(self):
|
|
||||||
return True
|
|
||||||
|
|
||||||
|
|
||||||
class InclusiveGatewayParser(TaskParser):
|
|
||||||
|
|
||||||
"""
|
|
||||||
Parses an Inclusive Gateway.
|
|
||||||
"""
|
|
||||||
|
|
||||||
def handles_multiple_outgoing(self):
|
|
||||||
"""
|
|
||||||
At the moment I haven't implemented support for diverging inclusive
|
|
||||||
gateways
|
|
||||||
"""
|
|
||||||
return False
|
|
||||||
|
|
||||||
|
|
||||||
class SubprocessParser:
|
class SubprocessParser:
|
||||||
|
|
||||||
|
@ -200,11 +151,3 @@ class ScriptTaskParser(TaskParser):
|
||||||
f"Invalid Script Task. No Script Provided. " + str(ae),
|
f"Invalid Script Task. No Script Provided. " + str(ae),
|
||||||
node=self.node, file_name=self.filename)
|
node=self.node, file_name=self.filename)
|
||||||
|
|
||||||
|
|
||||||
class ServiceTaskParser(TaskParser):
|
|
||||||
|
|
||||||
"""
|
|
||||||
Parses a ServiceTask node.
|
|
||||||
"""
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
|
@ -7,10 +7,21 @@ from SpiffWorkflow.bpmn.specs.BpmnProcessSpec import BpmnDataSpecification
|
||||||
|
|
||||||
from .dictionary import DictionaryConverter
|
from .dictionary import DictionaryConverter
|
||||||
|
|
||||||
from ..specs.events.event_definitions import MultipleEventDefinition, SignalEventDefinition, MessageEventDefinition, NoneEventDefinition
|
from ..specs.events.event_definitions import (
|
||||||
from ..specs.events.event_definitions import TimerEventDefinition, CycleTimerEventDefinition, TerminateEventDefinition
|
NoneEventDefinition,
|
||||||
from ..specs.events.event_definitions import ErrorEventDefinition, EscalationEventDefinition, CancelEventDefinition
|
MultipleEventDefinition,
|
||||||
from ..specs.events.event_definitions import CorrelationProperty, NamedEventDefinition
|
SignalEventDefinition,
|
||||||
|
MessageEventDefinition,
|
||||||
|
CorrelationProperty,
|
||||||
|
TimeDateEventDefinition,
|
||||||
|
DurationTimerEventDefinition,
|
||||||
|
CycleTimerEventDefinition,
|
||||||
|
ErrorEventDefinition,
|
||||||
|
EscalationEventDefinition,
|
||||||
|
CancelEventDefinition,
|
||||||
|
TerminateEventDefinition,
|
||||||
|
NamedEventDefinition
|
||||||
|
)
|
||||||
|
|
||||||
from ..specs.BpmnSpecMixin import BpmnSpecMixin
|
from ..specs.BpmnSpecMixin import BpmnSpecMixin
|
||||||
from ...operators import Attrib, PathAttrib
|
from ...operators import Attrib, PathAttrib
|
||||||
|
@ -89,9 +100,19 @@ class BpmnTaskSpecConverter(DictionaryConverter):
|
||||||
self.data_converter = data_converter
|
self.data_converter = data_converter
|
||||||
self.typename = typename if typename is not None else spec_class.__name__
|
self.typename = typename if typename is not None else spec_class.__name__
|
||||||
|
|
||||||
event_definitions = [ NoneEventDefinition, CancelEventDefinition, TerminateEventDefinition,
|
event_definitions = [
|
||||||
SignalEventDefinition, MessageEventDefinition, ErrorEventDefinition, EscalationEventDefinition,
|
NoneEventDefinition,
|
||||||
TimerEventDefinition, CycleTimerEventDefinition , MultipleEventDefinition]
|
CancelEventDefinition,
|
||||||
|
TerminateEventDefinition,
|
||||||
|
SignalEventDefinition,
|
||||||
|
MessageEventDefinition,
|
||||||
|
ErrorEventDefinition,
|
||||||
|
EscalationEventDefinition,
|
||||||
|
TimeDateEventDefinition,
|
||||||
|
DurationTimerEventDefinition,
|
||||||
|
CycleTimerEventDefinition,
|
||||||
|
MultipleEventDefinition
|
||||||
|
]
|
||||||
|
|
||||||
for event_definition in event_definitions:
|
for event_definition in event_definitions:
|
||||||
self.register(
|
self.register(
|
||||||
|
@ -238,12 +259,9 @@ class BpmnTaskSpecConverter(DictionaryConverter):
|
||||||
dct['name'] = event_definition.name
|
dct['name'] = event_definition.name
|
||||||
if isinstance(event_definition, MessageEventDefinition):
|
if isinstance(event_definition, MessageEventDefinition):
|
||||||
dct['correlation_properties'] = [prop.__dict__ for prop in event_definition.correlation_properties]
|
dct['correlation_properties'] = [prop.__dict__ for prop in event_definition.correlation_properties]
|
||||||
if isinstance(event_definition, TimerEventDefinition):
|
if isinstance(event_definition, (TimeDateEventDefinition, DurationTimerEventDefinition, CycleTimerEventDefinition)):
|
||||||
dct['label'] = event_definition.label
|
dct['name'] = event_definition.name
|
||||||
dct['dateTime'] = event_definition.dateTime
|
dct['expression'] = event_definition.expression
|
||||||
if isinstance(event_definition, CycleTimerEventDefinition):
|
|
||||||
dct['label'] = event_definition.label
|
|
||||||
dct['cycle_definition'] = event_definition.cycle_definition
|
|
||||||
if isinstance(event_definition, ErrorEventDefinition):
|
if isinstance(event_definition, ErrorEventDefinition):
|
||||||
dct['error_code'] = event_definition.error_code
|
dct['error_code'] = event_definition.error_code
|
||||||
if isinstance(event_definition, EscalationEventDefinition):
|
if isinstance(event_definition, EscalationEventDefinition):
|
||||||
|
|
|
@ -176,51 +176,54 @@ class TransactionSubprocessTaskConverter(BpmnTaskSpecConverter):
|
||||||
return self.task_spec_from_dict(dct)
|
return self.task_spec_from_dict(dct)
|
||||||
|
|
||||||
|
|
||||||
class ExclusiveGatewayConverter(BpmnTaskSpecConverter):
|
class ConditionalGatewayConverter(BpmnTaskSpecConverter):
|
||||||
|
|
||||||
def __init__(self, data_converter=None, typename=None):
|
|
||||||
super().__init__(ExclusiveGateway, data_converter, typename)
|
|
||||||
|
|
||||||
def to_dict(self, spec):
|
def to_dict(self, spec):
|
||||||
dct = self.get_default_attributes(spec)
|
dct = self.get_default_attributes(spec)
|
||||||
dct.update(self.get_bpmn_attributes(spec))
|
dct.update(self.get_bpmn_attributes(spec))
|
||||||
dct['default_task_spec'] = spec.default_task_spec
|
|
||||||
dct['cond_task_specs'] = [ self.bpmn_condition_to_dict(cond) for cond in spec.cond_task_specs ]
|
dct['cond_task_specs'] = [ self.bpmn_condition_to_dict(cond) for cond in spec.cond_task_specs ]
|
||||||
dct['choice'] = spec.choice
|
dct['choice'] = spec.choice
|
||||||
return dct
|
return dct
|
||||||
|
|
||||||
def from_dict(self, dct):
|
def from_dict(self, dct):
|
||||||
conditions = dct.pop('cond_task_specs')
|
conditions = dct.pop('cond_task_specs')
|
||||||
default_task_spec = dct.pop('default_task_spec')
|
|
||||||
spec = self.task_spec_from_dict(dct)
|
spec = self.task_spec_from_dict(dct)
|
||||||
spec.cond_task_specs = [ self.bpmn_condition_from_dict(cond) for cond in conditions ]
|
spec.cond_task_specs = [ self.bpmn_condition_from_dict(cond) for cond in conditions ]
|
||||||
spec.default_task_spec = default_task_spec
|
|
||||||
return spec
|
return spec
|
||||||
|
|
||||||
def bpmn_condition_from_dict(self, dct):
|
def bpmn_condition_from_dict(self, dct):
|
||||||
return (_BpmnCondition(dct['condition']), dct['task_spec'])
|
return (_BpmnCondition(dct['condition']) if dct['condition'] is not None else None, dct['task_spec'])
|
||||||
|
|
||||||
def bpmn_condition_to_dict(self, condition):
|
def bpmn_condition_to_dict(self, condition):
|
||||||
|
|
||||||
expr, task_spec = condition
|
expr, task_spec = condition
|
||||||
return {
|
return {
|
||||||
'condition': expr.args[0],
|
'condition': expr.args[0] if expr is not None else None,
|
||||||
'task_spec': task_spec
|
'task_spec': task_spec
|
||||||
}
|
}
|
||||||
|
|
||||||
class InclusiveGatewayConverter(BpmnTaskSpecConverter):
|
|
||||||
|
class ExclusiveGatewayConverter(ConditionalGatewayConverter):
|
||||||
|
|
||||||
def __init__(self, data_converter=None, typename=None):
|
def __init__(self, data_converter=None, typename=None):
|
||||||
super().__init__(InclusiveGateway, data_converter, typename)
|
super().__init__(ExclusiveGateway, data_converter, typename)
|
||||||
|
|
||||||
def to_dict(self, spec):
|
def to_dict(self, spec):
|
||||||
dct = self.get_default_attributes(spec)
|
dct = super().to_dict(spec)
|
||||||
dct.update(self.get_bpmn_attributes(spec))
|
dct['default_task_spec'] = spec.default_task_spec
|
||||||
dct.update(self.get_join_attributes(spec))
|
|
||||||
return dct
|
return dct
|
||||||
|
|
||||||
def from_dict(self, dct):
|
def from_dict(self, dct):
|
||||||
return self.task_spec_from_dict(dct)
|
default_task_spec = dct.pop('default_task_spec')
|
||||||
|
spec = super().from_dict(dct)
|
||||||
|
spec.default_task_spec = default_task_spec
|
||||||
|
return spec
|
||||||
|
|
||||||
|
|
||||||
|
class InclusiveGatewayConverter(ConditionalGatewayConverter):
|
||||||
|
|
||||||
|
def __init__(self, data_converter=None, typename=None):
|
||||||
|
super().__init__(InclusiveGateway, data_converter, typename)
|
||||||
|
|
||||||
|
|
||||||
class ParallelGatewayConverter(BpmnTaskSpecConverter):
|
class ParallelGatewayConverter(BpmnTaskSpecConverter):
|
||||||
|
|
|
@ -1,4 +1,95 @@
|
||||||
from copy import deepcopy
|
from copy import deepcopy
|
||||||
|
from datetime import datetime, timedelta
|
||||||
|
|
||||||
|
from SpiffWorkflow.exceptions import WorkflowException
|
||||||
|
from SpiffWorkflow.task import TaskState
|
||||||
|
from SpiffWorkflow.bpmn.specs.events.event_definitions import LOCALTZ
|
||||||
|
|
||||||
|
class VersionMigrationError(WorkflowException):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def version_1_1_to_1_2(old):
|
||||||
|
"""
|
||||||
|
Upgrade v1.1 serialization to v1.2.
|
||||||
|
|
||||||
|
Expressions in timer event definitions have been converted from python expressions to
|
||||||
|
ISO 8601 expressions.
|
||||||
|
|
||||||
|
Cycle timers no longer connect back to themselves. New children are created from a single
|
||||||
|
tasks rather than reusing previously executed tasks.
|
||||||
|
|
||||||
|
All conditions (including the default) are included in the conditions for gateways.
|
||||||
|
"""
|
||||||
|
new = deepcopy(old)
|
||||||
|
|
||||||
|
def td_to_iso(td):
|
||||||
|
total = td.total_seconds()
|
||||||
|
v1, seconds = total // 60, total % 60
|
||||||
|
v2, minutes = v1 // 60, v1 % 60
|
||||||
|
days, hours = v2 // 24, v2 % 60
|
||||||
|
return f"P{days:.0f}DT{hours:.0f}H{minutes:.0f}M{seconds}S"
|
||||||
|
|
||||||
|
message = "Unable to convert time specifications for {spec}. This most likely because the values are set during workflow execution."
|
||||||
|
|
||||||
|
has_timer = lambda ts: 'event_definition' in ts and ts['event_definition']['typename'] in [ 'CycleTimerEventDefinition', 'TimerEventDefinition']
|
||||||
|
for spec in [ ts for ts in new['spec']['task_specs'].values() if has_timer(ts) ]:
|
||||||
|
spec['event_definition']['name'] = spec['event_definition'].pop('label')
|
||||||
|
if spec['event_definition']['typename'] == 'TimerEventDefinition':
|
||||||
|
expr = spec['event_definition'].pop('dateTime')
|
||||||
|
try:
|
||||||
|
dt = eval(expr)
|
||||||
|
if isinstance(dt, datetime):
|
||||||
|
spec['event_definition']['expression'] = f"'{dt.isoformat()}'"
|
||||||
|
spec['event_definition']['typename'] = 'TimeDateEventDefinition'
|
||||||
|
elif isinstance(dt, timedelta):
|
||||||
|
spec['event_definition']['expression'] = f"'{td_to_iso(dt)}'"
|
||||||
|
spec['event_definition']['typename'] = 'DurationTimerEventDefinition'
|
||||||
|
except:
|
||||||
|
raise VersionMigrationError(message.format(spec=spec['name']))
|
||||||
|
|
||||||
|
if spec['event_definition']['typename'] == 'CycleTimerEventDefinition':
|
||||||
|
|
||||||
|
tasks = [ t for t in new['tasks'].values() if t['task_spec'] == spec['name'] ]
|
||||||
|
task = tasks[0] if len(tasks) > 0 else None
|
||||||
|
|
||||||
|
expr = spec['event_definition'].pop('cycle_definition')
|
||||||
|
try:
|
||||||
|
repeat, duration = eval(expr)
|
||||||
|
spec['event_definition']['expression'] = f"'R{repeat}/{td_to_iso(duration)}'"
|
||||||
|
if task is not None:
|
||||||
|
cycles_complete = task['data'].pop('repeat_count', 0)
|
||||||
|
start_time = task['internal_data'].pop('start_time', None)
|
||||||
|
if start_time is not None:
|
||||||
|
dt = datetime.fromisoformat(start_time)
|
||||||
|
task['internal_data']['event_value'] = {
|
||||||
|
'cycles': repeat - cycles_complete,
|
||||||
|
'next': datetime.combine(dt.date(), dt.time(), LOCALTZ).isoformat(),
|
||||||
|
'duration': duration.total_seconds(),
|
||||||
|
}
|
||||||
|
except:
|
||||||
|
raise VersionMigrationError(message.format(spec=spec['name']))
|
||||||
|
|
||||||
|
if spec['typename'] == 'StartEvent':
|
||||||
|
spec['outputs'].remove(spec['name'])
|
||||||
|
if task is not None:
|
||||||
|
children = [ new['tasks'][c] for c in task['children'] ]
|
||||||
|
# Formerly cycles were handled by looping back and reusing the tasks so this removes the extra tasks
|
||||||
|
remove = [ c for c in children if c['task_spec'] == task['task_spec']][0]
|
||||||
|
for task_id in remove['children']:
|
||||||
|
child = new['tasks'][task_id]
|
||||||
|
if child['task_spec'].startswith('return') or child['state'] != TaskState.COMPLETED:
|
||||||
|
new['tasks'].pop(task_id)
|
||||||
|
else:
|
||||||
|
task['children'].append(task_id)
|
||||||
|
task['children'].remove(remove['id'])
|
||||||
|
new['tasks'].pop(remove['id'])
|
||||||
|
|
||||||
|
for spec in [ts for ts in new['spec']['task_specs'].values() if ts['typename'] == 'ExclusiveGateway']:
|
||||||
|
if (None, spec['default_task_spec']) not in spec['cond_task_specs']:
|
||||||
|
spec['cond_task_specs'].append((None, spec['default_task_spec']))
|
||||||
|
|
||||||
|
new['VERSION'] = "1.2"
|
||||||
|
return new
|
||||||
|
|
||||||
def version_1_0_to_1_1(old):
|
def version_1_0_to_1_1(old):
|
||||||
"""
|
"""
|
||||||
|
@ -47,8 +138,11 @@ def version_1_0_to_1_1(old):
|
||||||
task['children'] = [ c for c in task['children'] if c in sp['tasks'] ]
|
task['children'] = [ c for c in task['children'] if c in sp['tasks'] ]
|
||||||
|
|
||||||
new['subprocesses'] = subprocesses
|
new['subprocesses'] = subprocesses
|
||||||
return new
|
new['VERSION'] = "1.1"
|
||||||
|
return version_1_1_to_1_2(new)
|
||||||
|
|
||||||
|
|
||||||
MIGRATIONS = {
|
MIGRATIONS = {
|
||||||
'1.0': version_1_0_to_1_1,
|
'1.0': version_1_0_to_1_1,
|
||||||
|
'1.1': version_1_1_to_1_2,
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,7 +64,7 @@ class BpmnWorkflowSerializer:
|
||||||
|
|
||||||
# This is the default version set on the workflow, it can be overwritten
|
# This is the default version set on the workflow, it can be overwritten
|
||||||
# using the configure_workflow_spec_converter.
|
# using the configure_workflow_spec_converter.
|
||||||
VERSION = "1.1"
|
VERSION = "1.2"
|
||||||
VERSION_KEY = "serializer_version"
|
VERSION_KEY = "serializer_version"
|
||||||
DEFAULT_JSON_ENCODER_CLS = None
|
DEFAULT_JSON_ENCODER_CLS = None
|
||||||
DEFAULT_JSON_DECODER_CLS = None
|
DEFAULT_JSON_DECODER_CLS = None
|
||||||
|
|
|
@ -72,15 +72,17 @@ class BpmnDataSpecification:
|
||||||
def get(self, my_task):
|
def get(self, my_task):
|
||||||
"""Copy a value form the workflow data to the task data."""
|
"""Copy a value form the workflow data to the task data."""
|
||||||
if self.name not in my_task.workflow.data:
|
if self.name not in my_task.workflow.data:
|
||||||
message = f"Workflow variable {self.name} not found"
|
message = f"Data object '{self.name}' " \
|
||||||
raise WorkflowDataException(my_task, data_input=self, message=message)
|
f"does not exist and can not be read."
|
||||||
|
raise WorkflowDataException(message, my_task, data_input=self)
|
||||||
my_task.data[self.name] = deepcopy(my_task.workflow.data[self.name])
|
my_task.data[self.name] = deepcopy(my_task.workflow.data[self.name])
|
||||||
|
|
||||||
def set(self, my_task):
|
def set(self, my_task):
|
||||||
"""Copy a value from the task data to the workflow data"""
|
"""Copy a value from the task data to the workflow data"""
|
||||||
if self.name not in my_task.data:
|
if self.name not in my_task.data:
|
||||||
message = f"Task variable {self.name} not found"
|
message = f"A Data Object '{self.name}' " \
|
||||||
raise WorkflowDataException(my_task, data_output=self, message=message)
|
f"could not be set, it does not exist in the task data"
|
||||||
|
raise WorkflowDataException(message, my_task, data_output=self)
|
||||||
my_task.workflow.data[self.name] = deepcopy(my_task.data[self.name])
|
my_task.workflow.data[self.name] = deepcopy(my_task.data[self.name])
|
||||||
del my_task.data[self.name]
|
del my_task.data[self.name]
|
||||||
data_log.info(f'Set workflow variable {self.name}', extra=my_task.log_info())
|
data_log.info(f'Set workflow variable {self.name}', extra=my_task.log_info())
|
||||||
|
@ -88,12 +90,12 @@ class BpmnDataSpecification:
|
||||||
def copy(self, source, destination, data_input=False, data_output=False):
|
def copy(self, source, destination, data_input=False, data_output=False):
|
||||||
"""Copy a value from one task to another."""
|
"""Copy a value from one task to another."""
|
||||||
if self.name not in source.data:
|
if self.name not in source.data:
|
||||||
message = f"Unable to copy {self.name}"
|
message = f"'{self.name}' was not found in the task data"
|
||||||
raise WorkflowDataException(
|
raise WorkflowDataException(
|
||||||
source,
|
message,
|
||||||
|
source,
|
||||||
data_input=self if data_input else None,
|
data_input=self if data_input else None,
|
||||||
data_output=self if data_output else None,
|
data_output=self if data_output else None,
|
||||||
message=message
|
|
||||||
)
|
)
|
||||||
destination.data[self.name] = deepcopy(source.data[self.name])
|
destination.data[self.name] = deepcopy(source.data[self.name])
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,6 @@ class _BpmnCondition(Operator):
|
||||||
return task.workflow.script_engine.evaluate(task, self.args[0])
|
return task.workflow.script_engine.evaluate(task, self.args[0])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class BpmnSpecMixin(TaskSpec):
|
class BpmnSpecMixin(TaskSpec):
|
||||||
"""
|
"""
|
||||||
All BPMN spec classes should mix this superclass in. It adds a number of
|
All BPMN spec classes should mix this superclass in. It adds a number of
|
||||||
|
@ -70,7 +69,10 @@ class BpmnSpecMixin(TaskSpec):
|
||||||
evaluates to true. This should only be called if the task has a
|
evaluates to true. This should only be called if the task has a
|
||||||
connect_if method (e.g. ExclusiveGateway).
|
connect_if method (e.g. ExclusiveGateway).
|
||||||
"""
|
"""
|
||||||
self.connect_if(_BpmnCondition(condition), taskspec)
|
if condition is None:
|
||||||
|
self.connect(taskspec)
|
||||||
|
else:
|
||||||
|
self.connect_if(_BpmnCondition(condition), taskspec)
|
||||||
|
|
||||||
def _on_ready_hook(self, my_task):
|
def _on_ready_hook(self, my_task):
|
||||||
super()._on_ready_hook(my_task)
|
super()._on_ready_hook(my_task)
|
||||||
|
|
|
@ -16,38 +16,20 @@
|
||||||
# License along with this library; if not, write to the Free Software
|
# License along with this library; if not, write to the Free Software
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||||
# 02110-1301 USA
|
# 02110-1301 USA
|
||||||
from ...exceptions import WorkflowException
|
|
||||||
|
|
||||||
from .BpmnSpecMixin import BpmnSpecMixin
|
from .BpmnSpecMixin import BpmnSpecMixin
|
||||||
from ...specs.base import TaskSpec
|
|
||||||
from ...specs.ExclusiveChoice import ExclusiveChoice
|
from ...specs.ExclusiveChoice import ExclusiveChoice
|
||||||
|
from ...specs.MultiChoice import MultiChoice
|
||||||
|
|
||||||
|
|
||||||
class ExclusiveGateway(ExclusiveChoice, BpmnSpecMixin):
|
class ExclusiveGateway(ExclusiveChoice, BpmnSpecMixin):
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Task Spec for a bpmn:exclusiveGateway node.
|
Task Spec for a bpmn:exclusiveGateway node.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def test(self):
|
def test(self):
|
||||||
"""
|
# Bypass the check for no default output -- this is not required in BPMN
|
||||||
Checks whether all required attributes are set. Throws an exception
|
MultiChoice.test(self)
|
||||||
if an error was detected.
|
|
||||||
"""
|
|
||||||
# This has been overridden to allow a single default flow out (without a
|
|
||||||
# condition) - useful for the converging type
|
|
||||||
TaskSpec.test(self)
|
|
||||||
# if len(self.cond_task_specs) < 1:
|
|
||||||
# raise WorkflowException(self, 'At least one output required.')
|
|
||||||
for condition, name in self.cond_task_specs:
|
|
||||||
if name is None:
|
|
||||||
raise WorkflowException('Condition with no task spec.', task_spec=self)
|
|
||||||
task_spec = self._wf_spec.get_task_spec_from_name(name)
|
|
||||||
if task_spec is None:
|
|
||||||
msg = 'Condition leads to non-existent task ' + repr(name)
|
|
||||||
raise WorkflowException(msg, task_spec=self)
|
|
||||||
if condition is None:
|
|
||||||
continue
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def spec_type(self):
|
def spec_type(self):
|
||||||
|
|
|
@ -16,13 +16,14 @@
|
||||||
# License along with this library; if not, write to the Free Software
|
# License along with this library; if not, write to the Free Software
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||||
# 02110-1301 USA
|
# 02110-1301 USA
|
||||||
from collections import deque
|
|
||||||
|
|
||||||
|
from SpiffWorkflow.exceptions import WorkflowTaskException
|
||||||
from ...task import TaskState
|
from ...task import TaskState
|
||||||
from .UnstructuredJoin import UnstructuredJoin
|
from .UnstructuredJoin import UnstructuredJoin
|
||||||
|
from ...specs.MultiChoice import MultiChoice
|
||||||
|
|
||||||
|
|
||||||
class InclusiveGateway(UnstructuredJoin):
|
class InclusiveGateway(MultiChoice, UnstructuredJoin):
|
||||||
"""
|
"""
|
||||||
Task Spec for a bpmn:parallelGateway node. From the specification of BPMN
|
Task Spec for a bpmn:parallelGateway node. From the specification of BPMN
|
||||||
(http://www.omg.org/spec/BPMN/2.0/PDF - document number:formal/2011-01-03):
|
(http://www.omg.org/spec/BPMN/2.0/PDF - document number:formal/2011-01-03):
|
||||||
|
@ -62,58 +63,59 @@ class InclusiveGateway(UnstructuredJoin):
|
||||||
specified, the Inclusive Gateway throws an exception.
|
specified, the Inclusive Gateway throws an exception.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@property
|
def test(self):
|
||||||
def spec_type(self):
|
MultiChoice.test(self)
|
||||||
return 'Inclusive Gateway'
|
UnstructuredJoin.test(self)
|
||||||
|
|
||||||
def _check_threshold_unstructured(self, my_task, force=False):
|
def _check_threshold_unstructured(self, my_task, force=False):
|
||||||
|
|
||||||
# Look at the tree to find all ready and waiting tasks (excluding ones
|
completed_inputs, waiting_tasks = self._get_inputs_with_tokens(my_task)
|
||||||
# that are our completed inputs).
|
uncompleted_inputs = [i for i in self.inputs if i not in completed_inputs]
|
||||||
tasks = []
|
|
||||||
for task in my_task.workflow.get_tasks(TaskState.READY | TaskState.WAITING):
|
|
||||||
if task.thread_id != my_task.thread_id:
|
|
||||||
continue
|
|
||||||
if task.workflow != my_task.workflow:
|
|
||||||
continue
|
|
||||||
if task.task_spec == my_task.task_spec:
|
|
||||||
continue
|
|
||||||
tasks.append(task)
|
|
||||||
|
|
||||||
inputs_with_tokens, waiting_tasks = self._get_inputs_with_tokens(
|
# We only have to complete a task once for it to count, even if's on multiple paths
|
||||||
my_task)
|
for task in waiting_tasks:
|
||||||
inputs_without_tokens = [
|
if task.task_spec in completed_inputs:
|
||||||
i for i in self.inputs if i not in inputs_with_tokens]
|
waiting_tasks.remove(task)
|
||||||
|
|
||||||
waiting_tasks = []
|
if force:
|
||||||
for task in tasks:
|
# If force is true, complete the task
|
||||||
if (self._has_directed_path_to(
|
complete = True
|
||||||
task, self,
|
elif len(waiting_tasks) > 0:
|
||||||
without_using_sequence_flow_from=inputs_with_tokens) and
|
# If we have waiting tasks, we're obviously not done
|
||||||
not self._has_directed_path_to(
|
complete = False
|
||||||
task, self,
|
else:
|
||||||
without_using_sequence_flow_from=inputs_without_tokens)):
|
# Handle the case where there are paths from active tasks that must go through uncompleted inputs
|
||||||
waiting_tasks.append(task)
|
tasks = my_task.workflow.get_tasks(TaskState.READY | TaskState.WAITING, workflow=my_task.workflow)
|
||||||
|
sources = [t.task_spec for t in tasks]
|
||||||
|
|
||||||
return force or len(waiting_tasks) == 0, waiting_tasks
|
# This will go back through a task spec's ancestors and return the source, if applicable
|
||||||
|
def check(spec):
|
||||||
|
for parent in spec.inputs:
|
||||||
|
return parent if parent in sources else check(parent)
|
||||||
|
|
||||||
def _has_directed_path_to(self, task, task_spec,
|
# If we can get to a completed input from this task, we don't have to wait for it
|
||||||
without_using_sequence_flow_from=None):
|
for spec in completed_inputs:
|
||||||
q = deque()
|
source = check(spec)
|
||||||
done = set()
|
if source is not None:
|
||||||
|
sources.remove(source)
|
||||||
|
|
||||||
without_using_sequence_flow_from = set(
|
# Now check the rest of the uncompleted inputs and see if they can be reached from any of the remaining tasks
|
||||||
without_using_sequence_flow_from or [])
|
unfinished_paths = []
|
||||||
|
for spec in uncompleted_inputs:
|
||||||
|
if check(spec) is not None:
|
||||||
|
unfinished_paths.append(spec)
|
||||||
|
break
|
||||||
|
|
||||||
q.append(task.task_spec)
|
complete = len(unfinished_paths) == 0
|
||||||
while q:
|
|
||||||
n = q.popleft()
|
return complete, waiting_tasks
|
||||||
if n == task_spec:
|
|
||||||
return True
|
def _on_complete_hook(self, my_task):
|
||||||
for child in n.outputs:
|
outputs = self._get_matching_outputs(my_task)
|
||||||
if child not in done and not (
|
if len(outputs) == 0:
|
||||||
n in without_using_sequence_flow_from and
|
raise WorkflowTaskException(f'No conditions satisfied on gateway', task=my_task)
|
||||||
child == task_spec):
|
my_task._sync_children(outputs, TaskState.FUTURE)
|
||||||
done.add(child)
|
|
||||||
q.append(child)
|
@property
|
||||||
return False
|
def spec_type(self):
|
||||||
|
return 'Inclusive Gateway'
|
|
@ -42,10 +42,7 @@ class ParallelGateway(UnstructuredJoin):
|
||||||
|
|
||||||
def _check_threshold_unstructured(self, my_task, force=False):
|
def _check_threshold_unstructured(self, my_task, force=False):
|
||||||
completed_inputs, waiting_tasks = self._get_inputs_with_tokens(my_task)
|
completed_inputs, waiting_tasks = self._get_inputs_with_tokens(my_task)
|
||||||
|
return force or len(completed_inputs) >= len(self.inputs), waiting_tasks
|
||||||
# If the threshold was reached, get ready to fire.
|
|
||||||
return (force or len(completed_inputs) >= len(self.inputs),
|
|
||||||
waiting_tasks)
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def spec_type(self):
|
def spec_type(self):
|
||||||
|
|
|
@ -3,6 +3,7 @@ from copy import deepcopy
|
||||||
|
|
||||||
from SpiffWorkflow.task import TaskState
|
from SpiffWorkflow.task import TaskState
|
||||||
from .BpmnSpecMixin import BpmnSpecMixin
|
from .BpmnSpecMixin import BpmnSpecMixin
|
||||||
|
from ..exceptions import WorkflowDataException
|
||||||
from ...specs.base import TaskSpec
|
from ...specs.base import TaskSpec
|
||||||
|
|
||||||
|
|
||||||
|
@ -51,7 +52,11 @@ class SubWorkflowTask(BpmnSpecMixin):
|
||||||
end = subworkflow.get_tasks_from_spec_name('End', workflow=subworkflow)
|
end = subworkflow.get_tasks_from_spec_name('End', workflow=subworkflow)
|
||||||
# Otherwise only copy data with the specified names
|
# Otherwise only copy data with the specified names
|
||||||
for var in subworkflow.spec.data_outputs:
|
for var in subworkflow.spec.data_outputs:
|
||||||
var.copy(end[0], my_task, data_output=True)
|
try:
|
||||||
|
var.copy(end[0], my_task, data_output=True)
|
||||||
|
except WorkflowDataException as wde:
|
||||||
|
wde.add_note("A Data Output was not provided as promised.")
|
||||||
|
raise wde
|
||||||
|
|
||||||
my_task._set_state(TaskState.READY)
|
my_task._set_state(TaskState.READY)
|
||||||
|
|
||||||
|
@ -83,8 +88,11 @@ class SubWorkflowTask(BpmnSpecMixin):
|
||||||
else:
|
else:
|
||||||
# Otherwise copy only task data with the specified names
|
# Otherwise copy only task data with the specified names
|
||||||
for var in subworkflow.spec.data_inputs:
|
for var in subworkflow.spec.data_inputs:
|
||||||
var.copy(my_task, start[0], data_input=True)
|
try:
|
||||||
|
var.copy(my_task, start[0], data_input=True)
|
||||||
|
except WorkflowDataException as wde:
|
||||||
|
wde.add_note("You are missing a required Data Input for a call activity.")
|
||||||
|
raise wde
|
||||||
for child in subworkflow.task_tree.children:
|
for child in subworkflow.task_tree.children:
|
||||||
child.task_spec._update(child)
|
child.task_spec._update(child)
|
||||||
|
|
||||||
|
|
|
@ -17,75 +17,34 @@
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||||
# 02110-1301 USA
|
# 02110-1301 USA
|
||||||
|
|
||||||
from ...exceptions import WorkflowException
|
|
||||||
|
|
||||||
from ...task import TaskState
|
from ...task import TaskState
|
||||||
from .BpmnSpecMixin import BpmnSpecMixin
|
from .BpmnSpecMixin import BpmnSpecMixin
|
||||||
from ...specs.Join import Join
|
from ...specs.Join import Join
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class UnstructuredJoin(Join, BpmnSpecMixin):
|
class UnstructuredJoin(Join, BpmnSpecMixin):
|
||||||
"""
|
"""
|
||||||
A helper subclass of Join that makes it work in a slightly friendlier way
|
A helper subclass of Join that makes it work in a slightly friendlier way
|
||||||
for the BPMN style threading
|
for the BPMN style threading
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def _check_threshold_unstructured(self, my_task, force=False):
|
|
||||||
raise NotImplementedError("Please implement this in the subclass")
|
|
||||||
|
|
||||||
def _get_inputs_with_tokens(self, my_task):
|
def _get_inputs_with_tokens(self, my_task):
|
||||||
# Look at the tree to find all places where this task is used.
|
# Look at the tree to find all places where this task is used.
|
||||||
tasks = []
|
tasks = [ t for t in my_task.workflow.get_tasks_from_spec_name(self.name) if t.workflow == my_task.workflow ]
|
||||||
for task in my_task.workflow.task_tree:
|
|
||||||
if task.thread_id != my_task.thread_id:
|
|
||||||
continue
|
|
||||||
if task.workflow != my_task.workflow:
|
|
||||||
continue
|
|
||||||
if task.task_spec != self:
|
|
||||||
continue
|
|
||||||
if task._is_finished():
|
|
||||||
continue
|
|
||||||
tasks.append(task)
|
|
||||||
|
|
||||||
# Look up which tasks have parent's completed.
|
# Look up which tasks have parents completed.
|
||||||
waiting_tasks = []
|
waiting_tasks = []
|
||||||
completed_inputs = set()
|
completed_inputs = set()
|
||||||
for task in tasks:
|
for task in tasks:
|
||||||
if task.parent._has_state(TaskState.COMPLETED) and (
|
if task.parent.state == TaskState.COMPLETED:
|
||||||
task._has_state(TaskState.WAITING) or task == my_task):
|
|
||||||
if task.parent.task_spec in completed_inputs:
|
|
||||||
raise(WorkflowException
|
|
||||||
("Unsupported looping behaviour: two threads waiting"
|
|
||||||
" on the same sequence flow.", task_spec=self))
|
|
||||||
completed_inputs.add(task.parent.task_spec)
|
completed_inputs.add(task.parent.task_spec)
|
||||||
else:
|
# Ignore predicted tasks; we don't care about anything not definite
|
||||||
|
elif task.parent._has_state(TaskState.READY | TaskState.FUTURE | TaskState.WAITING):
|
||||||
waiting_tasks.append(task.parent)
|
waiting_tasks.append(task.parent)
|
||||||
|
|
||||||
return completed_inputs, waiting_tasks
|
return completed_inputs, waiting_tasks
|
||||||
|
|
||||||
def _do_join(self, my_task):
|
def _do_join(self, my_task):
|
||||||
# Copied from Join parent class
|
split_task = self._get_split_task(my_task)
|
||||||
# This has some minor changes
|
|
||||||
|
|
||||||
# One Join spec may have multiple corresponding Task objects::
|
|
||||||
#
|
|
||||||
# - Due to the MultiInstance pattern.
|
|
||||||
# - Due to the ThreadSplit pattern.
|
|
||||||
#
|
|
||||||
# When using the MultiInstance pattern, we want to join across
|
|
||||||
# the resulting task instances. When using the ThreadSplit
|
|
||||||
# pattern, we only join within the same thread. (Both patterns
|
|
||||||
# may also be mixed.)
|
|
||||||
#
|
|
||||||
# We are looking for all task instances that must be joined.
|
|
||||||
# We limit our search by starting at the split point.
|
|
||||||
if self.split_task:
|
|
||||||
split_task = my_task.workflow.get_task_spec_from_name(
|
|
||||||
self.split_task)
|
|
||||||
split_task = my_task._find_ancestor(split_task)
|
|
||||||
else:
|
|
||||||
split_task = my_task.workflow.task_tree
|
|
||||||
|
|
||||||
# Identify all corresponding task instances within the thread.
|
# Identify all corresponding task instances within the thread.
|
||||||
# Also remember which of those instances was most recently changed,
|
# Also remember which of those instances was most recently changed,
|
||||||
|
@ -98,35 +57,25 @@ class UnstructuredJoin(Join, BpmnSpecMixin):
|
||||||
# Ignore tasks from other threads.
|
# Ignore tasks from other threads.
|
||||||
if task.thread_id != my_task.thread_id:
|
if task.thread_id != my_task.thread_id:
|
||||||
continue
|
continue
|
||||||
# Ignore tasks from other subprocesses:
|
|
||||||
if task.workflow != my_task.workflow:
|
|
||||||
continue
|
|
||||||
|
|
||||||
# Ignore my outgoing branches.
|
# Ignore my outgoing branches.
|
||||||
if task._is_descendant_of(my_task):
|
if self.split_task and task._is_descendant_of(my_task):
|
||||||
continue
|
continue
|
||||||
# Ignore completed tasks (this is for loop handling)
|
|
||||||
if task._is_finished():
|
|
||||||
continue
|
|
||||||
|
|
||||||
# For an inclusive join, this can happen - it's a future join
|
# For an inclusive join, this can happen - it's a future join
|
||||||
if not task.parent._is_finished():
|
if not task.parent._is_finished():
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# We have found a matching instance.
|
# We have found a matching instance.
|
||||||
thread_tasks.append(task)
|
thread_tasks.append(task)
|
||||||
|
|
||||||
# Check whether the state of the instance was recently
|
# Check whether the state of the instance was recently changed.
|
||||||
# changed.
|
|
||||||
changed = task.parent.last_state_change
|
changed = task.parent.last_state_change
|
||||||
if last_changed is None\
|
if last_changed is None or changed > last_changed.parent.last_state_change:
|
||||||
or changed > last_changed.parent.last_state_change:
|
|
||||||
last_changed = task
|
last_changed = task
|
||||||
|
|
||||||
# Update data from all the same thread tasks.
|
# Update data from all the same thread tasks.
|
||||||
thread_tasks.sort(key=lambda t: t.parent.last_state_change)
|
thread_tasks.sort(key=lambda t: t.parent.last_state_change)
|
||||||
|
collected_data = {}
|
||||||
for task in thread_tasks:
|
for task in thread_tasks:
|
||||||
self.data.update(task.data)
|
collected_data.update(task.data)
|
||||||
|
|
||||||
# Mark the identified task instances as COMPLETED. The exception
|
# Mark the identified task instances as COMPLETED. The exception
|
||||||
# is the most recently changed task, for which we assume READY.
|
# is the most recently changed task, for which we assume READY.
|
||||||
|
@ -135,26 +84,13 @@ class UnstructuredJoin(Join, BpmnSpecMixin):
|
||||||
# (re)built underneath the node.
|
# (re)built underneath the node.
|
||||||
for task in thread_tasks:
|
for task in thread_tasks:
|
||||||
if task == last_changed:
|
if task == last_changed:
|
||||||
task.data.update(self.data)
|
task.data.update(collected_data)
|
||||||
self.entered_event.emit(my_task.workflow, my_task)
|
self.entered_event.emit(my_task.workflow, my_task)
|
||||||
task._ready()
|
task._ready()
|
||||||
else:
|
else:
|
||||||
task._set_state(TaskState.COMPLETED)
|
task._set_state(TaskState.COMPLETED)
|
||||||
task._drop_children()
|
task._drop_children()
|
||||||
|
|
||||||
|
|
||||||
def _update_hook(self, my_task):
|
|
||||||
|
|
||||||
if not my_task.parent._is_finished():
|
|
||||||
return
|
|
||||||
|
|
||||||
target_state = getattr(my_task, '_bpmn_load_target_state', None)
|
|
||||||
if target_state == TaskState.WAITING:
|
|
||||||
my_task._set_state(TaskState.WAITING)
|
|
||||||
return
|
|
||||||
|
|
||||||
super(UnstructuredJoin, self)._update_hook(my_task)
|
|
||||||
|
|
||||||
def task_should_set_children_future(self, my_task):
|
def task_should_set_children_future(self, my_task):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
|
@ -74,12 +74,10 @@ class _BoundaryEventParent(Simple, BpmnSpecMixin):
|
||||||
for child in my_task.children:
|
for child in my_task.children:
|
||||||
if isinstance(child.task_spec, BoundaryEvent):
|
if isinstance(child.task_spec, BoundaryEvent):
|
||||||
child.task_spec.event_definition.reset(child)
|
child.task_spec.event_definition.reset(child)
|
||||||
child._set_state(TaskState.WAITING)
|
|
||||||
|
|
||||||
def _child_complete_hook(self, child_task):
|
def _child_complete_hook(self, child_task):
|
||||||
|
|
||||||
# If the main child completes, or a cancelling event occurs, cancel any
|
# If the main child completes, or a cancelling event occurs, cancel any unfinished children
|
||||||
# unfinished children
|
|
||||||
if child_task.task_spec == self.main_child_task_spec or child_task.task_spec.cancel_activity:
|
if child_task.task_spec == self.main_child_task_spec or child_task.task_spec.cancel_activity:
|
||||||
for sibling in child_task.parent.children:
|
for sibling in child_task.parent.children:
|
||||||
if sibling == child_task:
|
if sibling == child_task:
|
||||||
|
@ -89,11 +87,6 @@ class _BoundaryEventParent(Simple, BpmnSpecMixin):
|
||||||
for t in child_task.workflow._get_waiting_tasks():
|
for t in child_task.workflow._get_waiting_tasks():
|
||||||
t.task_spec._update(t)
|
t.task_spec._update(t)
|
||||||
|
|
||||||
# If our event is a cycle timer, we need to set it back to waiting so it can fire again
|
|
||||||
elif isinstance(child_task.task_spec.event_definition, CycleTimerEventDefinition):
|
|
||||||
child_task._set_state(TaskState.WAITING)
|
|
||||||
child_task.task_spec._update_hook(child_task)
|
|
||||||
|
|
||||||
def _predict_hook(self, my_task):
|
def _predict_hook(self, my_task):
|
||||||
|
|
||||||
# Events attached to the main task might occur
|
# Events attached to the main task might occur
|
||||||
|
@ -105,7 +98,6 @@ class _BoundaryEventParent(Simple, BpmnSpecMixin):
|
||||||
child._set_state(state)
|
child._set_state(state)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class BoundaryEvent(CatchingEvent):
|
class BoundaryEvent(CatchingEvent):
|
||||||
"""Task Spec for a bpmn:boundaryEvent node."""
|
"""Task Spec for a bpmn:boundaryEvent node."""
|
||||||
|
|
||||||
|
|
|
@ -40,3 +40,4 @@ class StartEvent(CatchingEvent):
|
||||||
my_task._set_state(TaskState.WAITING)
|
my_task._set_state(TaskState.WAITING)
|
||||||
|
|
||||||
super(StartEvent, self).catch(my_task, event_definition)
|
super(StartEvent, self).catch(my_task, event_definition)
|
||||||
|
|
||||||
|
|
|
@ -17,11 +17,17 @@
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||||
# 02110-1301 USA
|
# 02110-1301 USA
|
||||||
|
|
||||||
import datetime
|
import re
|
||||||
|
from datetime import datetime, timedelta, timezone
|
||||||
|
from calendar import monthrange
|
||||||
|
from time import timezone as tzoffset
|
||||||
from copy import deepcopy
|
from copy import deepcopy
|
||||||
|
|
||||||
from SpiffWorkflow.task import TaskState
|
from SpiffWorkflow.task import TaskState
|
||||||
|
|
||||||
|
LOCALTZ = timezone(timedelta(seconds=-1 * tzoffset))
|
||||||
|
|
||||||
|
|
||||||
class EventDefinition(object):
|
class EventDefinition(object):
|
||||||
"""
|
"""
|
||||||
This is the base class for Event Definitions. It implements the default throw/catch
|
This is the base class for Event Definitions. It implements the default throw/catch
|
||||||
|
@ -34,10 +40,6 @@ class EventDefinition(object):
|
||||||
and external flags.
|
and external flags.
|
||||||
Default catch behavior is to set the event to fired
|
Default catch behavior is to set the event to fired
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# Format to use for specifying dates for time based events
|
|
||||||
TIME_FORMAT = '%Y-%m-%d %H:%M:%S.%f'
|
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
# Ideally I'd mke these parameters, but I don't want to them to be parameters
|
# Ideally I'd mke these parameters, but I don't want to them to be parameters
|
||||||
# for any subclasses (as they are based on event type, not user choice) and
|
# for any subclasses (as they are based on event type, not user choice) and
|
||||||
|
@ -251,129 +253,218 @@ class TerminateEventDefinition(EventDefinition):
|
||||||
def event_type(self):
|
def event_type(self):
|
||||||
return 'Terminate'
|
return 'Terminate'
|
||||||
|
|
||||||
class TimerEventDefinition(EventDefinition):
|
|
||||||
"""
|
|
||||||
The TimerEventDefinition is the implementation of event definition used for
|
|
||||||
Catching Timer Events (Timer events aren't thrown).
|
|
||||||
"""
|
|
||||||
|
|
||||||
def __init__(self, label, dateTime):
|
class TimerEventDefinition(EventDefinition):
|
||||||
|
|
||||||
|
def __init__(self, name, expression):
|
||||||
"""
|
"""
|
||||||
Constructor.
|
Constructor.
|
||||||
|
|
||||||
:param label: The label of the event. Used for the description.
|
:param name: The description of the timer.
|
||||||
|
|
||||||
:param dateTime: The dateTime expression for the expiry time. This is
|
:param expression: An ISO 8601 datetime or interval expression.
|
||||||
passed to the Script Engine and must evaluate to a datetime (in the case of
|
|
||||||
a time-date event) or a timedelta (in the case of a duration event).
|
|
||||||
"""
|
"""
|
||||||
super(TimerEventDefinition, self).__init__()
|
super().__init__()
|
||||||
self.label = label
|
self.name = name
|
||||||
self.dateTime = dateTime
|
self.expression = expression
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_datetime(expression):
|
||||||
|
dt = datetime.fromisoformat(expression)
|
||||||
|
if dt.tzinfo is None:
|
||||||
|
dt = datetime.combine(dt.date(), dt.time(), LOCALTZ)
|
||||||
|
return dt.astimezone(timezone.utc)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_timedelta_from_start(parsed_duration, start=None):
|
||||||
|
|
||||||
|
start = start or datetime.now(timezone.utc)
|
||||||
|
years, months, days = parsed_duration.pop('years', 0), parsed_duration.pop('months', 0), parsed_duration.pop('days', 0)
|
||||||
|
months += years * 12
|
||||||
|
|
||||||
|
for idx in range(int(months)):
|
||||||
|
year, month = start.year + idx // 12, start.month + idx % 12
|
||||||
|
days += monthrange(year, month)[1]
|
||||||
|
|
||||||
|
year, month = start.year + months // 12, start.month + months % 12
|
||||||
|
days += (months - int(months)) * monthrange(year, month)[1]
|
||||||
|
parsed_duration['days'] = days
|
||||||
|
return timedelta(**parsed_duration)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def get_timedelta_from_end(parsed_duration, end):
|
||||||
|
|
||||||
|
years, months, days = parsed_duration.pop('years', 0), parsed_duration.pop('months', 0), parsed_duration.pop('days', 0)
|
||||||
|
months += years * 12
|
||||||
|
|
||||||
|
for idx in range(1, int(months) + 1):
|
||||||
|
year = end.year - (1 + (idx - end.month) // 12)
|
||||||
|
month = 1 + (end.month - idx - 1) % 12
|
||||||
|
days += monthrange(year, month)[1]
|
||||||
|
|
||||||
|
days += (months - int(months)) * monthrange(
|
||||||
|
end.year - (1 + (int(months)- end.month) // 12),
|
||||||
|
1 + (end.month - months - 1) % 12)[1]
|
||||||
|
parsed_duration['days'] = days
|
||||||
|
return timedelta(**parsed_duration)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def parse_iso_duration(expression):
|
||||||
|
|
||||||
|
# Based on https://en.wikipedia.org/wiki/ISO_8601#Time_intervals
|
||||||
|
parsed, expr_t, current = {}, False, expression.lower().strip('p').replace(',', '.')
|
||||||
|
for designator in ['years', 'months', 'weeks', 'days', 't', 'hours', 'minutes', 'seconds']:
|
||||||
|
value = current.split(designator[0], 1)
|
||||||
|
if len(value) == 2:
|
||||||
|
duration, remainder = value
|
||||||
|
if duration.isdigit():
|
||||||
|
parsed[designator] = int(duration)
|
||||||
|
elif duration.replace('.', '').isdigit() and not remainder:
|
||||||
|
parsed[designator] = float(duration)
|
||||||
|
if designator in parsed or designator == 't':
|
||||||
|
current = remainder
|
||||||
|
if designator == 't':
|
||||||
|
expr_t = True
|
||||||
|
|
||||||
|
date_specs, time_specs = ['years', 'months', 'days'], ['hours', 'minutes', 'seconds']
|
||||||
|
parsed_t = len([d for d in parsed if d in time_specs]) > 0
|
||||||
|
|
||||||
|
if len(current) or parsed_t != expr_t or ('weeks' in parsed and any(v for v in parsed if v in date_specs)):
|
||||||
|
raise Exception('Invalid duration')
|
||||||
|
# The actual timedelta will have to be computed based on a start or end date, to account for
|
||||||
|
# months lengths, leap days, etc. This returns a dict of the parsed elements
|
||||||
|
return parsed
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def parse_iso_week(expression):
|
||||||
|
# https://en.wikipedia.org/wiki/ISO_8601#Week_dates
|
||||||
|
m = re.match('(\d{4})W(\d{2})(\d)(T.+)?', expression.upper().replace('-', ''))
|
||||||
|
year, month, day, ts = m.groups()
|
||||||
|
ds = datetime.fromisocalendar(int(year), int(month), int(day)).strftime('%Y-%m-%d')
|
||||||
|
return TimerEventDefinition.get_datetime(ds + (ts or ''))
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def parse_time_or_duration(expression):
|
||||||
|
if expression.upper().startswith('P'):
|
||||||
|
return TimerEventDefinition.parse_iso_duration(expression)
|
||||||
|
elif 'W' in expression.upper():
|
||||||
|
return TimerEventDefinition.parse_iso_week(expression)
|
||||||
|
else:
|
||||||
|
return TimerEventDefinition.get_datetime(expression)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def parse_iso_recurring_interval(expression):
|
||||||
|
components = expression.upper().replace('--', '/').strip('R').split('/')
|
||||||
|
cycles = int(components[0]) if components[0] else -1
|
||||||
|
start_or_duration = TimerEventDefinition.parse_time_or_duration(components[1])
|
||||||
|
if len(components) == 3:
|
||||||
|
end_or_duration = TimerEventDefinition.parse_time_or_duration(components[2])
|
||||||
|
else:
|
||||||
|
end_or_duration = None
|
||||||
|
|
||||||
|
if isinstance(start_or_duration, datetime):
|
||||||
|
# Start time + interval duration
|
||||||
|
start = start_or_duration
|
||||||
|
duration = TimerEventDefinition.get_timedelta_from_start(end_or_duration, start_or_duration)
|
||||||
|
elif isinstance(end_or_duration, datetime):
|
||||||
|
# End time + interval duration
|
||||||
|
duration = TimerEventDefinition.get_timedelta_from_end(start_or_duration, end_or_duration)
|
||||||
|
start = end_or_duration - duration
|
||||||
|
elif end_or_duration is None:
|
||||||
|
# Just an interval duration, assume a start time of now
|
||||||
|
start = datetime.now(timezone.utc)
|
||||||
|
duration = TimeDateEventDefinition.get_timedelta_from_start(start_or_duration, start)
|
||||||
|
else:
|
||||||
|
raise Exception("Invalid recurring interval")
|
||||||
|
return cycles, start, duration
|
||||||
|
|
||||||
|
def __eq__(self, other):
|
||||||
|
return self.__class__.__name__ == other.__class__.__name__ and self.name == other.name
|
||||||
|
|
||||||
|
|
||||||
|
class TimeDateEventDefinition(TimerEventDefinition):
|
||||||
|
"""A Timer event represented by a specific date/time."""
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def event_type(self):
|
def event_type(self):
|
||||||
return 'Timer'
|
return 'Time Date Timer'
|
||||||
|
|
||||||
def has_fired(self, my_task):
|
def has_fired(self, my_task):
|
||||||
"""
|
event_value = my_task._get_internal_data('event_value')
|
||||||
The Timer is considered to have fired if the evaluated dateTime
|
if event_value is None:
|
||||||
expression is before datetime.datetime.now()
|
event_value = my_task.workflow.script_engine.evaluate(my_task, self.expression)
|
||||||
"""
|
my_task._set_internal_data(event_value=event_value)
|
||||||
|
if TimerEventDefinition.parse_time_or_duration(event_value) < datetime.now(timezone.utc):
|
||||||
|
my_task._set_internal_data(event_fired=True)
|
||||||
|
return my_task._get_internal_data('event_fired', False)
|
||||||
|
|
||||||
if my_task.internal_data.get('event_fired'):
|
def timer_value(self, my_task):
|
||||||
# If we manually send this event, this will be set
|
return my_task._get_internal_data('event_value')
|
||||||
return True
|
|
||||||
|
|
||||||
dt = my_task.workflow.script_engine.evaluate(my_task, self.dateTime)
|
|
||||||
if isinstance(dt,datetime.timedelta):
|
|
||||||
if my_task._get_internal_data('start_time',None) is not None:
|
|
||||||
start_time = datetime.datetime.strptime(my_task._get_internal_data('start_time',None), self.TIME_FORMAT)
|
|
||||||
elapsed = datetime.datetime.now() - start_time
|
|
||||||
return elapsed > dt
|
|
||||||
else:
|
|
||||||
my_task.internal_data['start_time'] = datetime.datetime.now().strftime(self.TIME_FORMAT)
|
|
||||||
return False
|
|
||||||
|
|
||||||
if dt is None:
|
|
||||||
return False
|
|
||||||
if isinstance(dt, datetime.datetime):
|
|
||||||
if dt.tzinfo:
|
|
||||||
tz = dt.tzinfo
|
|
||||||
now = tz.fromutc(datetime.datetime.utcnow().replace(tzinfo=tz))
|
|
||||||
else:
|
|
||||||
now = datetime.datetime.now()
|
|
||||||
else:
|
|
||||||
# assume type is a date, not datetime
|
|
||||||
now = datetime.date.today()
|
|
||||||
return now > dt
|
|
||||||
|
|
||||||
def __eq__(self, other):
|
|
||||||
return self.__class__.__name__ == other.__class__.__name__ and self.label == other.label
|
|
||||||
|
|
||||||
|
|
||||||
class CycleTimerEventDefinition(EventDefinition):
|
class DurationTimerEventDefinition(TimerEventDefinition):
|
||||||
"""
|
"""A timer event represented by a duration"""
|
||||||
The TimerEventDefinition is the implementation of event definition used for
|
|
||||||
Catching Timer Events (Timer events aren't thrown).
|
|
||||||
|
|
||||||
The cycle definition should evaluate to a tuple of
|
@property
|
||||||
(n repetitions, repetition duration)
|
def event_type(self):
|
||||||
"""
|
return 'Duration Timer'
|
||||||
def __init__(self, label, cycle_definition):
|
|
||||||
|
|
||||||
super(CycleTimerEventDefinition, self).__init__()
|
def has_fired(self, my_task):
|
||||||
self.label = label
|
event_value = my_task._get_internal_data("event_value")
|
||||||
# The way we're using cycle timers doesn't really align with how the BPMN spec
|
if event_value is None:
|
||||||
# describes is (the example of "every monday at 9am")
|
expression = my_task.workflow.script_engine.evaluate(my_task, self.expression)
|
||||||
# I am not sure why this isn't a subprocess with a repeat count that starts
|
parsed_duration = TimerEventDefinition.parse_iso_duration(expression)
|
||||||
# with a duration timer
|
event_value = (datetime.now(timezone.utc) + TimerEventDefinition.get_timedelta_from_start(parsed_duration)).isoformat()
|
||||||
self.cycle_definition = cycle_definition
|
my_task._set_internal_data(event_value=event_value)
|
||||||
|
if TimerEventDefinition.get_datetime(event_value) < datetime.now(timezone.utc):
|
||||||
|
my_task._set_internal_data(event_fired=True)
|
||||||
|
return my_task._get_internal_data('event_fired', False)
|
||||||
|
|
||||||
|
def timer_value(self, my_task):
|
||||||
|
return my_task._get_internal_data("event_value")
|
||||||
|
|
||||||
|
|
||||||
|
class CycleTimerEventDefinition(TimerEventDefinition):
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def event_type(self):
|
def event_type(self):
|
||||||
return 'Cycle Timer'
|
return 'Cycle Timer'
|
||||||
|
|
||||||
def has_fired(self, my_task):
|
def has_fired(self, my_task):
|
||||||
# We will fire this timer whenever a cycle completes
|
|
||||||
# The task itself will manage counting how many times it fires
|
|
||||||
|
|
||||||
if my_task.internal_data.get('event_fired'):
|
if not my_task._get_internal_data('event_fired'):
|
||||||
# If we manually send this event, this will be set
|
# Only check for the next cycle when the event has not fired to prevent cycles from being skipped.
|
||||||
|
event_value = my_task._get_internal_data('event_value')
|
||||||
|
if event_value is None:
|
||||||
|
expression = my_task.workflow.script_engine.evaluate(my_task, self.expression)
|
||||||
|
cycles, start, duration = TimerEventDefinition.parse_iso_recurring_interval(expression)
|
||||||
|
event_value = {'cycles': cycles, 'next': start.isoformat(), 'duration': duration.total_seconds()}
|
||||||
|
|
||||||
|
if event_value['cycles'] > 0:
|
||||||
|
next_event = datetime.fromisoformat(event_value['next'])
|
||||||
|
if next_event < datetime.now(timezone.utc):
|
||||||
|
my_task._set_internal_data(event_fired=True)
|
||||||
|
event_value['next'] = (next_event + timedelta(seconds=event_value['duration'])).isoformat()
|
||||||
|
|
||||||
|
my_task._set_internal_data(event_value=event_value)
|
||||||
|
|
||||||
|
return my_task._get_internal_data('event_fired', False)
|
||||||
|
|
||||||
|
def timer_value(self, my_task):
|
||||||
|
event_value = my_task._get_internal_data('event_value')
|
||||||
|
if event_value is not None and event_value['cycles'] > 0:
|
||||||
|
return event_value['next']
|
||||||
|
|
||||||
|
def complete(self, my_task):
|
||||||
|
event_value = my_task._get_internal_data('event_value')
|
||||||
|
if event_value is not None and event_value['cycles'] == 0:
|
||||||
|
my_task.internal_data.pop('event_value')
|
||||||
return True
|
return True
|
||||||
|
|
||||||
repeat, delta = my_task.workflow.script_engine.evaluate(my_task, self.cycle_definition)
|
def complete_cycle(self, my_task):
|
||||||
|
# Only increment when the task completes
|
||||||
# This is the first time we've entered this event
|
if my_task._get_internal_data('event_value') is not None:
|
||||||
if my_task.internal_data.get('repeat') is None:
|
my_task.internal_data['event_value']['cycles'] -= 1
|
||||||
my_task.internal_data['repeat'] = repeat
|
|
||||||
if my_task.get_data('repeat_count') is None:
|
|
||||||
# This is now a looping task, and if we use internal data, the repeat count won't persist
|
|
||||||
my_task.set_data(repeat_count=0)
|
|
||||||
|
|
||||||
now = datetime.datetime.now()
|
|
||||||
if my_task._get_internal_data('start_time') is None:
|
|
||||||
start_time = now
|
|
||||||
my_task.internal_data['start_time'] = now.strftime(self.TIME_FORMAT)
|
|
||||||
else:
|
|
||||||
start_time = datetime.datetime.strptime(my_task._get_internal_data('start_time'),self.TIME_FORMAT)
|
|
||||||
|
|
||||||
if my_task.get_data('repeat_count') >= repeat or (now - start_time) < delta:
|
|
||||||
return False
|
|
||||||
return True
|
|
||||||
|
|
||||||
def reset(self, my_task):
|
|
||||||
repeat_count = my_task.get_data('repeat_count')
|
|
||||||
if repeat_count is None:
|
|
||||||
# If this is a boundary event, then repeat count will not have been set
|
|
||||||
my_task.set_data(repeat_count=0)
|
|
||||||
else:
|
|
||||||
my_task.set_data(repeat_count=repeat_count + 1)
|
|
||||||
my_task.internal_data['start_time'] = None
|
|
||||||
super(CycleTimerEventDefinition, self).reset(my_task)
|
|
||||||
|
|
||||||
def __eq__(self, other):
|
|
||||||
return self.__class__.__name__ == other.__class__.__name__ and self.label == other.label
|
|
||||||
|
|
||||||
|
|
||||||
class MultipleEventDefinition(EventDefinition):
|
class MultipleEventDefinition(EventDefinition):
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||||
# 02110-1301 USA
|
# 02110-1301 USA
|
||||||
|
|
||||||
from .event_definitions import MessageEventDefinition, NoneEventDefinition
|
from .event_definitions import MessageEventDefinition, NoneEventDefinition, CycleTimerEventDefinition
|
||||||
from ..BpmnSpecMixin import BpmnSpecMixin
|
from ..BpmnSpecMixin import BpmnSpecMixin
|
||||||
from ....specs.Simple import Simple
|
from ....specs.Simple import Simple
|
||||||
from ....task import TaskState
|
from ....task import TaskState
|
||||||
|
@ -69,6 +69,12 @@ class CatchingEvent(Simple, BpmnSpecMixin):
|
||||||
|
|
||||||
if isinstance(self.event_definition, MessageEventDefinition):
|
if isinstance(self.event_definition, MessageEventDefinition):
|
||||||
self.event_definition.update_task_data(my_task)
|
self.event_definition.update_task_data(my_task)
|
||||||
|
elif isinstance(self.event_definition, CycleTimerEventDefinition):
|
||||||
|
self.event_definition.complete_cycle(my_task)
|
||||||
|
if not self.event_definition.complete(my_task):
|
||||||
|
for output in self.outputs:
|
||||||
|
my_task._add_child(output)
|
||||||
|
my_task._set_state(TaskState.WAITING)
|
||||||
self.event_definition.reset(my_task)
|
self.event_definition.reset(my_task)
|
||||||
super(CatchingEvent, self)._on_complete_hook(my_task)
|
super(CatchingEvent, self)._on_complete_hook(my_task)
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,12 @@
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||||
# 02110-1301 USA
|
# 02110-1301 USA
|
||||||
|
|
||||||
from SpiffWorkflow.bpmn.specs.events.event_definitions import MessageEventDefinition, MultipleEventDefinition
|
from SpiffWorkflow.bpmn.specs.events.event_definitions import (
|
||||||
|
MessageEventDefinition,
|
||||||
|
MultipleEventDefinition,
|
||||||
|
NamedEventDefinition,
|
||||||
|
TimerEventDefinition,
|
||||||
|
)
|
||||||
from .PythonScriptEngine import PythonScriptEngine
|
from .PythonScriptEngine import PythonScriptEngine
|
||||||
from .specs.events.event_types import CatchingEvent
|
from .specs.events.event_types import CatchingEvent
|
||||||
from .specs.events.StartEvent import StartEvent
|
from .specs.events.StartEvent import StartEvent
|
||||||
|
@ -155,9 +160,21 @@ class BpmnWorkflow(Workflow):
|
||||||
event_definition.payload = payload
|
event_definition.payload = payload
|
||||||
self.catch(event_definition, correlations=correlations)
|
self.catch(event_definition, correlations=correlations)
|
||||||
|
|
||||||
def do_engine_steps(self, exit_at = None,
|
def waiting_events(self):
|
||||||
will_complete_task=None,
|
# Ultimately I'd like to add an event class so that EventDefinitions would not so double duty as both specs
|
||||||
did_complete_task=None):
|
# and instantiations, and this method would return that. However, I think that's beyond the scope of the
|
||||||
|
# current request.
|
||||||
|
events = []
|
||||||
|
for task in [t for t in self.get_waiting_tasks() if isinstance(t.task_spec, CatchingEvent)]:
|
||||||
|
event_definition = task.task_spec.event_definition
|
||||||
|
events.append({
|
||||||
|
'event_type': event_definition.event_type,
|
||||||
|
'name': event_definition.name if isinstance(event_definition, NamedEventDefinition) else None,
|
||||||
|
'value': event_definition.timer_value(task) if isinstance(event_definition, TimerEventDefinition) else None,
|
||||||
|
})
|
||||||
|
return events
|
||||||
|
|
||||||
|
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
|
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
|
or script tasks). This is done in a loop, so it will keep completing
|
||||||
|
@ -168,9 +185,7 @@ class BpmnWorkflow(Workflow):
|
||||||
:param will_complete_task: Callback that will be called prior to completing a task
|
: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
|
:param did_complete_task: Callback that will be called after completing a task
|
||||||
"""
|
"""
|
||||||
engine_steps = list(
|
engine_steps = list([t for t in self.get_tasks(TaskState.READY) if self._is_engine_task(t.task_spec)])
|
||||||
[t for t in self.get_tasks(TaskState.READY)
|
|
||||||
if self._is_engine_task(t.task_spec)])
|
|
||||||
while engine_steps:
|
while engine_steps:
|
||||||
for task in engine_steps:
|
for task in engine_steps:
|
||||||
if will_complete_task is not None:
|
if will_complete_task is not None:
|
||||||
|
@ -180,9 +195,7 @@ class BpmnWorkflow(Workflow):
|
||||||
did_complete_task(task)
|
did_complete_task(task)
|
||||||
if task.task_spec.name == exit_at:
|
if task.task_spec.name == exit_at:
|
||||||
return task
|
return task
|
||||||
engine_steps = list(
|
engine_steps = list([t for t in self.get_tasks(TaskState.READY) if self._is_engine_task(t.task_spec)])
|
||||||
[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,
|
will_refresh_task=None,
|
||||||
|
@ -255,6 +268,3 @@ class BpmnWorkflow(Workflow):
|
||||||
|
|
||||||
def _is_engine_task(self, task_spec):
|
def _is_engine_task(self, task_spec):
|
||||||
return (not hasattr(task_spec, 'is_engine_task') or task_spec.is_engine_task())
|
return (not hasattr(task_spec, 'is_engine_task') or task_spec.is_engine_task())
|
||||||
|
|
||||||
def _task_completed_notify(self, task):
|
|
||||||
super(BpmnWorkflow, self)._task_completed_notify(task)
|
|
||||||
|
|
|
@ -53,16 +53,11 @@ class ExclusiveChoice(MultiChoice):
|
||||||
:param task_spec: The following task spec.
|
:param task_spec: The following task spec.
|
||||||
"""
|
"""
|
||||||
assert self.default_task_spec is None
|
assert self.default_task_spec is None
|
||||||
self.outputs.append(task_spec)
|
|
||||||
self.default_task_spec = task_spec.name
|
self.default_task_spec = task_spec.name
|
||||||
task_spec._connect_notify(self)
|
super().connect(task_spec)
|
||||||
|
|
||||||
def test(self):
|
def test(self):
|
||||||
"""
|
super().test()
|
||||||
Checks whether all required attributes are set. Throws an exception
|
|
||||||
if an error was detected.
|
|
||||||
"""
|
|
||||||
MultiChoice.test(self)
|
|
||||||
if self.default_task_spec is None:
|
if self.default_task_spec is None:
|
||||||
raise WorkflowException('A default output is required.', task_spec=self)
|
raise WorkflowException('A default output is required.', task_spec=self)
|
||||||
|
|
||||||
|
@ -76,10 +71,10 @@ class ExclusiveChoice(MultiChoice):
|
||||||
my_task._set_likely_task(spec)
|
my_task._set_likely_task(spec)
|
||||||
|
|
||||||
def _on_complete_hook(self, my_task):
|
def _on_complete_hook(self, my_task):
|
||||||
# Find the first matching condition.
|
|
||||||
output = self._wf_spec.get_task_spec_from_name(self.default_task_spec)
|
output = self._wf_spec.get_task_spec_from_name(self.default_task_spec)
|
||||||
for condition, spec_name in self.cond_task_specs:
|
for condition, spec_name in self.cond_task_specs:
|
||||||
if condition is None or condition._matches(my_task):
|
if condition is not None and condition._matches(my_task):
|
||||||
output = self._wf_spec.get_task_spec_from_name(spec_name)
|
output = self._wf_spec.get_task_spec_from_name(spec_name)
|
||||||
break
|
break
|
||||||
|
|
||||||
|
|
|
@ -125,6 +125,26 @@ class Join(TaskSpec):
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def _get_split_task(self, my_task):
|
||||||
|
# One Join spec may have multiple corresponding Task objects::
|
||||||
|
#
|
||||||
|
# - Due to the MultiInstance pattern.
|
||||||
|
# - Due to the ThreadSplit pattern.
|
||||||
|
#
|
||||||
|
# When using the MultiInstance pattern, we want to join across
|
||||||
|
# the resulting task instances. When using the ThreadSplit
|
||||||
|
# pattern, we only join within the same thread. (Both patterns
|
||||||
|
# may also be mixed.)
|
||||||
|
#
|
||||||
|
# We are looking for all task instances that must be joined.
|
||||||
|
# We limit our search by starting at the split point.
|
||||||
|
if self.split_task:
|
||||||
|
task_spec = my_task.workflow.get_task_spec_from_name(self.split_task)
|
||||||
|
split_task = my_task._find_ancestor(task_spec)
|
||||||
|
else:
|
||||||
|
split_task = my_task.workflow.task_tree
|
||||||
|
return split_task
|
||||||
|
|
||||||
def _check_threshold_unstructured(self, my_task, force=False):
|
def _check_threshold_unstructured(self, my_task, force=False):
|
||||||
# The default threshold is the number of inputs.
|
# The default threshold is the number of inputs.
|
||||||
threshold = valueof(my_task, self.threshold)
|
threshold = valueof(my_task, self.threshold)
|
||||||
|
@ -168,7 +188,6 @@ class Join(TaskSpec):
|
||||||
for task in tasks:
|
for task in tasks:
|
||||||
# Refresh path prediction.
|
# Refresh path prediction.
|
||||||
task.task_spec._predict(task)
|
task.task_spec._predict(task)
|
||||||
|
|
||||||
if not self._branch_may_merge_at(task):
|
if not self._branch_may_merge_at(task):
|
||||||
completed += 1
|
completed += 1
|
||||||
elif self._branch_is_complete(task):
|
elif self._branch_is_complete(task):
|
||||||
|
@ -219,24 +238,8 @@ class Join(TaskSpec):
|
||||||
self._do_join(my_task)
|
self._do_join(my_task)
|
||||||
|
|
||||||
def _do_join(self, my_task):
|
def _do_join(self, my_task):
|
||||||
# One Join spec may have multiple corresponding Task objects::
|
|
||||||
#
|
split_task = self._get_split_task(my_task)
|
||||||
# - Due to the MultiInstance pattern.
|
|
||||||
# - Due to the ThreadSplit pattern.
|
|
||||||
#
|
|
||||||
# When using the MultiInstance pattern, we want to join across
|
|
||||||
# the resulting task instances. When using the ThreadSplit
|
|
||||||
# pattern, we only join within the same thread. (Both patterns
|
|
||||||
# may also be mixed.)
|
|
||||||
#
|
|
||||||
# We are looking for all task instances that must be joined.
|
|
||||||
# We limit our search by starting at the split point.
|
|
||||||
if self.split_task:
|
|
||||||
split_task = my_task.workflow.get_task_spec_from_name(
|
|
||||||
self.split_task)
|
|
||||||
split_task = my_task._find_ancestor(split_task)
|
|
||||||
else:
|
|
||||||
split_task = my_task.workflow.task_tree
|
|
||||||
|
|
||||||
# Identify all corresponding task instances within the thread.
|
# Identify all corresponding task instances within the thread.
|
||||||
# Also remember which of those instances was most recently changed,
|
# Also remember which of those instances was most recently changed,
|
||||||
|
@ -259,8 +262,7 @@ class Join(TaskSpec):
|
||||||
# Check whether the state of the instance was recently
|
# Check whether the state of the instance was recently
|
||||||
# changed.
|
# changed.
|
||||||
changed = task.parent.last_state_change
|
changed = task.parent.last_state_change
|
||||||
if last_changed is None \
|
if last_changed is None or changed > last_changed.parent.last_state_change:
|
||||||
or changed > last_changed.parent.last_state_change:
|
|
||||||
last_changed = task
|
last_changed = task
|
||||||
|
|
||||||
# Mark the identified task instances as COMPLETED. The exception
|
# Mark the identified task instances as COMPLETED. The exception
|
||||||
|
@ -276,8 +278,6 @@ class Join(TaskSpec):
|
||||||
task._set_state(TaskState.COMPLETED)
|
task._set_state(TaskState.COMPLETED)
|
||||||
task._drop_children()
|
task._drop_children()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def _on_trigger(self, my_task):
|
def _on_trigger(self, my_task):
|
||||||
"""
|
"""
|
||||||
May be called to fire the Join before the incoming branches are
|
May be called to fire the Join before the incoming branches are
|
||||||
|
|
|
@ -116,24 +116,21 @@ class MultiChoice(TaskSpec):
|
||||||
if child.task_spec in outputs:
|
if child.task_spec in outputs:
|
||||||
child._set_state(best_state)
|
child._set_state(best_state)
|
||||||
|
|
||||||
|
def _get_matching_outputs(self, my_task):
|
||||||
|
outputs = []
|
||||||
|
for condition, output in self.cond_task_specs:
|
||||||
|
if self.choice is not None and output not in self.choice:
|
||||||
|
continue
|
||||||
|
if condition is None or condition._matches(my_task):
|
||||||
|
outputs.append(self._wf_spec.get_task_spec_from_name(output))
|
||||||
|
return outputs
|
||||||
|
|
||||||
def _on_complete_hook(self, my_task):
|
def _on_complete_hook(self, my_task):
|
||||||
"""
|
"""
|
||||||
Runs the task. Should not be called directly.
|
Runs the task. Should not be called directly.
|
||||||
Returns True if completed, False otherwise.
|
Returns True if completed, False otherwise.
|
||||||
"""
|
"""
|
||||||
# Find all matching conditions.
|
my_task._sync_children(self._get_matching_outputs(my_task), TaskState.FUTURE)
|
||||||
outputs = []
|
|
||||||
for condition, output in self.cond_task_specs:
|
|
||||||
if self.choice is not None and output not in self.choice:
|
|
||||||
continue
|
|
||||||
if condition is None:
|
|
||||||
outputs.append(self._wf_spec.get_task_spec_from_name(output))
|
|
||||||
continue
|
|
||||||
if not condition._matches(my_task):
|
|
||||||
continue
|
|
||||||
outputs.append(self._wf_spec.get_task_spec_from_name(output))
|
|
||||||
|
|
||||||
my_task._sync_children(outputs, TaskState.FUTURE)
|
|
||||||
|
|
||||||
def serialize(self, serializer):
|
def serialize(self, serializer):
|
||||||
return serializer.serialize_multi_choice(self)
|
return serializer.serialize_multi_choice(self)
|
||||||
|
|
|
@ -3,7 +3,8 @@
|
||||||
from SpiffWorkflow.bpmn.specs.ExclusiveGateway import ExclusiveGateway
|
from SpiffWorkflow.bpmn.specs.ExclusiveGateway import ExclusiveGateway
|
||||||
from SpiffWorkflow.bpmn.specs.UserTask import UserTask
|
from SpiffWorkflow.bpmn.specs.UserTask import UserTask
|
||||||
from SpiffWorkflow.bpmn.parser.BpmnParser import BpmnParser
|
from SpiffWorkflow.bpmn.parser.BpmnParser import BpmnParser
|
||||||
from SpiffWorkflow.bpmn.parser.task_parsers import ExclusiveGatewayParser, UserTaskParser
|
from SpiffWorkflow.bpmn.parser.TaskParser import TaskParser
|
||||||
|
from SpiffWorkflow.bpmn.parser.task_parsers import ConditionalGatewayParser
|
||||||
from SpiffWorkflow.bpmn.parser.util import full_tag
|
from SpiffWorkflow.bpmn.parser.util import full_tag
|
||||||
|
|
||||||
from SpiffWorkflow.bpmn.serializer.bpmn_converters import BpmnTaskSpecConverter
|
from SpiffWorkflow.bpmn.serializer.bpmn_converters import BpmnTaskSpecConverter
|
||||||
|
@ -38,7 +39,7 @@ class TestUserTask(UserTask):
|
||||||
def deserialize(self, serializer, wf_spec, s_state):
|
def deserialize(self, serializer, wf_spec, s_state):
|
||||||
return serializer.deserialize_generic(wf_spec, s_state, TestUserTask)
|
return serializer.deserialize_generic(wf_spec, s_state, TestUserTask)
|
||||||
|
|
||||||
class TestExclusiveGatewayParser(ExclusiveGatewayParser):
|
class TestExclusiveGatewayParser(ConditionalGatewayParser):
|
||||||
|
|
||||||
def parse_condition(self, sequence_flow_node):
|
def parse_condition(self, sequence_flow_node):
|
||||||
cond = super().parse_condition(sequence_flow_node)
|
cond = super().parse_condition(sequence_flow_node)
|
||||||
|
@ -62,7 +63,7 @@ class TestUserTaskConverter(BpmnTaskSpecConverter):
|
||||||
|
|
||||||
class TestBpmnParser(BpmnParser):
|
class TestBpmnParser(BpmnParser):
|
||||||
OVERRIDE_PARSER_CLASSES = {
|
OVERRIDE_PARSER_CLASSES = {
|
||||||
full_tag('userTask'): (UserTaskParser, TestUserTask),
|
full_tag('userTask'): (TaskParser, TestUserTask),
|
||||||
full_tag('exclusiveGateway'): (TestExclusiveGatewayParser, ExclusiveGateway),
|
full_tag('exclusiveGateway'): (TestExclusiveGatewayParser, ExclusiveGateway),
|
||||||
full_tag('callActivity'): (CallActivityParser, CallActivity)
|
full_tag('callActivity'): (CallActivityParser, CallActivity)
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,14 +18,17 @@ class CallActivityDataTest(BpmnWorkflowTestCase):
|
||||||
self.actual_test(True)
|
self.actual_test(True)
|
||||||
|
|
||||||
def testCallActivityMissingInput(self):
|
def testCallActivityMissingInput(self):
|
||||||
|
|
||||||
self.workflow = BpmnWorkflow(self.spec, self.subprocesses)
|
self.workflow = BpmnWorkflow(self.spec, self.subprocesses)
|
||||||
set_data = self.workflow.spec.task_specs['Activity_0haob58']
|
set_data = self.workflow.spec.task_specs['Activity_0haob58']
|
||||||
set_data.script = """in_1, unused = 1, True"""
|
set_data.script = """in_1, unused = 1, True"""
|
||||||
|
|
||||||
with self.assertRaises(WorkflowDataException) as exc:
|
with self.assertRaises(WorkflowDataException) as exc:
|
||||||
self.advance_to_subprocess()
|
self.advance_to_subprocess()
|
||||||
self.assertEqual(exc.var.name,'in_2')
|
self.assertEqual("'in_2' was not found in the task data. "
|
||||||
|
"You are missing a required Data Input for a call activity.",
|
||||||
|
str(exc.exception))
|
||||||
|
self.assertEqual(exc.exception.data_input.name,'in_2')
|
||||||
|
|
||||||
def testCallActivityMissingOutput(self):
|
def testCallActivityMissingOutput(self):
|
||||||
|
|
||||||
|
@ -40,7 +43,10 @@ class CallActivityDataTest(BpmnWorkflowTestCase):
|
||||||
|
|
||||||
with self.assertRaises(WorkflowDataException) as exc:
|
with self.assertRaises(WorkflowDataException) as exc:
|
||||||
self.complete_subprocess()
|
self.complete_subprocess()
|
||||||
self.assertEqual(exc.var.name,'out_2')
|
|
||||||
|
self.assertEqual("'out_2' was not found in the task data. A Data Output was not provided as promised.",
|
||||||
|
str(exc.exception))
|
||||||
|
self.assertEqual(exc.exception.data_output.name,'out_2')
|
||||||
|
|
||||||
def actual_test(self, save_restore=False):
|
def actual_test(self, save_restore=False):
|
||||||
|
|
||||||
|
@ -85,4 +91,4 @@ class CallActivityDataTest(BpmnWorkflowTestCase):
|
||||||
while len(waiting) > 0:
|
while len(waiting) > 0:
|
||||||
next_task = self.workflow.get_tasks(TaskState.READY)[0]
|
next_task = self.workflow.get_tasks(TaskState.READY)[0]
|
||||||
next_task.complete()
|
next_task.complete()
|
||||||
waiting = self.workflow.get_tasks(TaskState.WAITING)
|
waiting = self.workflow.get_tasks(TaskState.WAITING)
|
||||||
|
|
|
@ -0,0 +1,39 @@
|
||||||
|
from SpiffWorkflow.bpmn.workflow import BpmnWorkflow
|
||||||
|
from SpiffWorkflow.exceptions import WorkflowTaskException
|
||||||
|
|
||||||
|
from .BpmnWorkflowTestCase import BpmnWorkflowTestCase
|
||||||
|
|
||||||
|
class InclusiveGatewayTest(BpmnWorkflowTestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
spec, subprocess = self.load_workflow_spec('inclusive_gateway.bpmn', 'main')
|
||||||
|
self.workflow = BpmnWorkflow(spec)
|
||||||
|
self.workflow.do_engine_steps()
|
||||||
|
|
||||||
|
def testDefaultConditionOnly(self):
|
||||||
|
self.set_data({'v': -1, 'u': -1, 'w': -1})
|
||||||
|
self.workflow.do_engine_steps()
|
||||||
|
self.assertTrue(self.workflow.is_completed())
|
||||||
|
self.assertDictEqual(self.workflow.data, {'v': 0, 'u': -1, 'w': -1})
|
||||||
|
|
||||||
|
def testDefaultConditionOnlySaveRestore(self):
|
||||||
|
self.set_data({'v': -1, 'u': -1, 'w': -1})
|
||||||
|
self.save_restore()
|
||||||
|
self.workflow.do_engine_steps()
|
||||||
|
self.assertTrue(self.workflow.is_completed())
|
||||||
|
self.assertDictEqual(self.workflow.data, {'v': 0, 'u': -1, 'w': -1})
|
||||||
|
|
||||||
|
def testNoPathFromSecondGateway(self):
|
||||||
|
self.set_data({'v': 0, 'u': -1, 'w': -1})
|
||||||
|
self.assertRaises(WorkflowTaskException, self.workflow.do_engine_steps)
|
||||||
|
|
||||||
|
def testParallelCondition(self):
|
||||||
|
self.set_data({'v': 0, 'u': 1, 'w': 1})
|
||||||
|
self.workflow.do_engine_steps()
|
||||||
|
self.assertTrue(self.workflow.is_completed())
|
||||||
|
self.assertDictEqual(self.workflow.data, {'v': 0, 'u': 1, 'w': 1})
|
||||||
|
|
||||||
|
def set_data(self, value):
|
||||||
|
task = self.workflow.get_ready_user_tasks()[0]
|
||||||
|
task.data = value
|
||||||
|
task.complete()
|
|
@ -5,7 +5,6 @@ import datetime
|
||||||
import time
|
import time
|
||||||
from SpiffWorkflow.task import TaskState
|
from SpiffWorkflow.task import TaskState
|
||||||
from SpiffWorkflow.bpmn.workflow import BpmnWorkflow
|
from SpiffWorkflow.bpmn.workflow import BpmnWorkflow
|
||||||
from SpiffWorkflow.bpmn.PythonScriptEngine import PythonScriptEngine
|
|
||||||
from tests.SpiffWorkflow.bpmn.BpmnWorkflowTestCase import BpmnWorkflowTestCase
|
from tests.SpiffWorkflow.bpmn.BpmnWorkflowTestCase import BpmnWorkflowTestCase
|
||||||
|
|
||||||
__author__ = 'kellym'
|
__author__ = 'kellym'
|
||||||
|
@ -16,9 +15,8 @@ class NITimerDurationTest(BpmnWorkflowTestCase):
|
||||||
Non-Interrupting Timer boundary test
|
Non-Interrupting Timer boundary test
|
||||||
"""
|
"""
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.script_engine = PythonScriptEngine(default_globals={"timedelta": datetime.timedelta})
|
|
||||||
spec, subprocesses = self.load_workflow_spec('timer-non-interrupt-boundary.bpmn', 'NonInterruptTimer')
|
spec, subprocesses = self.load_workflow_spec('timer-non-interrupt-boundary.bpmn', 'NonInterruptTimer')
|
||||||
self.workflow = BpmnWorkflow(spec, subprocesses, script_engine=self.script_engine)
|
self.workflow = BpmnWorkflow(spec, subprocesses)
|
||||||
|
|
||||||
def load_spec(self):
|
def load_spec(self):
|
||||||
return
|
return
|
||||||
|
@ -31,57 +29,44 @@ class NITimerDurationTest(BpmnWorkflowTestCase):
|
||||||
|
|
||||||
def actual_test(self,save_restore = False):
|
def actual_test(self,save_restore = False):
|
||||||
|
|
||||||
ready_tasks = self.workflow.get_tasks(TaskState.READY)
|
|
||||||
self.assertEqual(1, len(ready_tasks))
|
|
||||||
self.workflow.complete_task_from_id(ready_tasks[0].id)
|
|
||||||
self.workflow.do_engine_steps()
|
self.workflow.do_engine_steps()
|
||||||
ready_tasks = self.workflow.get_tasks(TaskState.READY)
|
ready_tasks = self.workflow.get_tasks(TaskState.READY)
|
||||||
self.assertEqual(1, len(ready_tasks))
|
event = self.workflow.get_tasks_from_spec_name('Event_0jyy8ao')[0]
|
||||||
ready_tasks[0].data['work_done'] = 'No'
|
self.assertEqual(event.state, TaskState.WAITING)
|
||||||
self.workflow.complete_task_from_id(ready_tasks[0].id)
|
|
||||||
self.workflow.do_engine_steps()
|
|
||||||
|
|
||||||
loopcount = 0
|
loopcount = 0
|
||||||
# test bpmn has a timeout of .25s
|
|
||||||
# we should terminate loop before that.
|
|
||||||
starttime = datetime.datetime.now()
|
starttime = datetime.datetime.now()
|
||||||
while loopcount < 10:
|
# test bpmn has a timeout of .2s; we should terminate loop before that.
|
||||||
ready_tasks = self.workflow.get_tasks(TaskState.READY)
|
# The subprocess will also wait
|
||||||
if len(ready_tasks) > 1:
|
while len(self.workflow.get_waiting_tasks()) == 2 and loopcount < 10:
|
||||||
break
|
|
||||||
if save_restore:
|
if save_restore:
|
||||||
self.save_restore()
|
self.save_restore()
|
||||||
self.workflow.script_engine = self.script_engine
|
|
||||||
#self.assertEqual(1, len(self.workflow.get_tasks(Task.WAITING)))
|
|
||||||
time.sleep(0.1)
|
time.sleep(0.1)
|
||||||
self.workflow.complete_task_from_id(ready_tasks[0].id)
|
ready_tasks = self.workflow.get_tasks(TaskState.READY)
|
||||||
|
# There should be one ready task until the boundary event fires
|
||||||
|
self.assertEqual(len(self.workflow.get_ready_user_tasks()), 1)
|
||||||
self.workflow.refresh_waiting_tasks()
|
self.workflow.refresh_waiting_tasks()
|
||||||
self.workflow.do_engine_steps()
|
self.workflow.do_engine_steps()
|
||||||
loopcount = loopcount +1
|
loopcount += 1
|
||||||
|
|
||||||
endtime = datetime.datetime.now()
|
endtime = datetime.datetime.now()
|
||||||
duration = endtime-starttime
|
duration = endtime - starttime
|
||||||
# appropriate time here is .5 seconds
|
# appropriate time here is .5 seconds due to the .3 seconds that we loop and then
|
||||||
# due to the .3 seconds that we loop and then
|
self.assertEqual(duration < datetime.timedelta(seconds=.5), True)
|
||||||
# the two conditions that we complete after the timer completes.
|
self.assertEqual(duration > datetime.timedelta(seconds=.2), True)
|
||||||
self.assertEqual(duration<datetime.timedelta(seconds=.5),True)
|
ready_tasks = self.workflow.get_ready_user_tasks()
|
||||||
self.assertEqual(duration>datetime.timedelta(seconds=.2),True)
|
# Now there should be two.
|
||||||
|
self.assertEqual(len(ready_tasks), 2)
|
||||||
for task in ready_tasks:
|
for task in ready_tasks:
|
||||||
if task.task_spec == 'GetReason':
|
if task.task_spec.name == 'GetReason':
|
||||||
task.data['delay_reason'] = 'Just Because'
|
task.data['delay_reason'] = 'Just Because'
|
||||||
else:
|
elif task.task_spec.name == 'Activity_Work':
|
||||||
task.data['work_done'] = 'Yes'
|
task.data['work_done'] = 'Yes'
|
||||||
self.workflow.complete_task_from_id(task.id)
|
task.complete()
|
||||||
self.workflow.refresh_waiting_tasks()
|
self.workflow.refresh_waiting_tasks()
|
||||||
self.workflow.do_engine_steps()
|
self.workflow.do_engine_steps()
|
||||||
ready_tasks = self.workflow.get_tasks(TaskState.READY)
|
|
||||||
self.assertEqual(1, len(ready_tasks))
|
|
||||||
ready_tasks[0].data['experience'] = 'Great!'
|
|
||||||
self.workflow.complete_task_from_id(ready_tasks[0].id)
|
|
||||||
self.workflow.do_engine_steps()
|
|
||||||
self.assertEqual(self.workflow.is_completed(),True)
|
self.assertEqual(self.workflow.is_completed(),True)
|
||||||
self.assertEqual(self.workflow.last_task.data,{'work_done': 'Yes', 'experience': 'Great!'})
|
self.assertEqual(self.workflow.last_task.data, {'work_done': 'Yes', 'delay_reason': 'Just Because'})
|
||||||
print (self.workflow.last_task.data)
|
|
||||||
print(duration)
|
|
||||||
|
|
||||||
|
|
||||||
def suite():
|
def suite():
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_17fwemw" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.7.0">
|
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" id="Definitions_17fwemw" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.11.1">
|
||||||
<bpmn:process id="MultiInstance" isExecutable="true">
|
<bpmn:process id="MultiInstance" isExecutable="true">
|
||||||
<bpmn:startEvent id="StartEvent_1" name="StartEvent_1">
|
<bpmn:startEvent id="StartEvent_1" name="StartEvent_1">
|
||||||
<bpmn:outgoing>Flow_0t6p1sb</bpmn:outgoing>
|
<bpmn:outgoing>Flow_0t6p1sb</bpmn:outgoing>
|
||||||
|
@ -40,7 +40,7 @@
|
||||||
<bpmn:incoming>Flow_1dah8xt</bpmn:incoming>
|
<bpmn:incoming>Flow_1dah8xt</bpmn:incoming>
|
||||||
<bpmn:outgoing>Flow_0io0g18</bpmn:outgoing>
|
<bpmn:outgoing>Flow_0io0g18</bpmn:outgoing>
|
||||||
</bpmn:manualTask>
|
</bpmn:manualTask>
|
||||||
<bpmn:exclusiveGateway id="Gateway_1cn7vsp">
|
<bpmn:exclusiveGateway id="Gateway_1cn7vsp" default="Flow_1sx7n9u">
|
||||||
<bpmn:incoming>Flow_0io0g18</bpmn:incoming>
|
<bpmn:incoming>Flow_0io0g18</bpmn:incoming>
|
||||||
<bpmn:incoming>Flow_0i1bv5g</bpmn:incoming>
|
<bpmn:incoming>Flow_0i1bv5g</bpmn:incoming>
|
||||||
<bpmn:outgoing>Flow_1sx7n9u</bpmn:outgoing>
|
<bpmn:outgoing>Flow_1sx7n9u</bpmn:outgoing>
|
||||||
|
@ -52,85 +52,6 @@
|
||||||
</bpmn:process>
|
</bpmn:process>
|
||||||
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
||||||
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="MultiInstance">
|
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="MultiInstance">
|
||||||
<bpmndi:BPMNEdge id="Flow_0ugjw69_di" bpmnElement="Flow_0ugjw69">
|
|
||||||
<di:waypoint x="810" y="117" />
|
|
||||||
<di:waypoint x="912" y="117" />
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNEdge id="Flow_0t6p1sb_di" bpmnElement="Flow_0t6p1sb">
|
|
||||||
<di:waypoint x="208" y="117" />
|
|
||||||
<di:waypoint x="230" y="117" />
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNShape id="Event_1g0pmib_di" bpmnElement="Event_End">
|
|
||||||
<dc:Bounds x="912" y="99" width="36" height="36" />
|
|
||||||
<bpmndi:BPMNLabel>
|
|
||||||
<dc:Bounds x="903" y="75" width="54" height="14" />
|
|
||||||
</bpmndi:BPMNLabel>
|
|
||||||
</bpmndi:BPMNShape>
|
|
||||||
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
|
|
||||||
<dc:Bounds x="172" y="99" width="36" height="36" />
|
|
||||||
<bpmndi:BPMNLabel>
|
|
||||||
<dc:Bounds x="159" y="142" width="64" height="14" />
|
|
||||||
</bpmndi:BPMNLabel>
|
|
||||||
</bpmndi:BPMNShape>
|
|
||||||
<bpmndi:BPMNShape id="Activity_1iyilui_di" bpmnElement="Activity_Loop">
|
|
||||||
<dc:Bounds x="710" y="77" width="100" height="80" />
|
|
||||||
</bpmndi:BPMNShape>
|
|
||||||
<bpmndi:BPMNShape id="Activity_088tnzu_di" bpmnElement="Activity_088tnzu">
|
|
||||||
<dc:Bounds x="230" y="77" width="100" height="80" />
|
|
||||||
</bpmndi:BPMNShape>
|
|
||||||
<bpmndi:BPMNEdge id="Flow_0ds4mp0_di" bpmnElement="Flow_0ds4mp0">
|
|
||||||
<di:waypoint x="330" y="117" />
|
|
||||||
<di:waypoint x="345" y="117" />
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNShape id="Gateway_07go3pk_di" bpmnElement="Gateway_07go3pk" isMarkerVisible="true">
|
|
||||||
<dc:Bounds x="615" y="92" width="50" height="50" />
|
|
||||||
<bpmndi:BPMNLabel>
|
|
||||||
<dc:Bounds x="602" y="62" width="78" height="14" />
|
|
||||||
</bpmndi:BPMNLabel>
|
|
||||||
</bpmndi:BPMNShape>
|
|
||||||
<bpmndi:BPMNEdge id="Flow_1oo4mpj_di" bpmnElement="Flow_1oo4mpj">
|
|
||||||
<di:waypoint x="640" y="142" />
|
|
||||||
<di:waypoint x="640" y="330" />
|
|
||||||
<di:waypoint x="930" y="330" />
|
|
||||||
<di:waypoint x="930" y="135" />
|
|
||||||
<bpmndi:BPMNLabel>
|
|
||||||
<dc:Bounds x="745" y="312" width="80" height="14" />
|
|
||||||
</bpmndi:BPMNLabel>
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNEdge id="Flow_0u92n7b_di" bpmnElement="Flow_0u92n7b">
|
|
||||||
<di:waypoint x="665" y="117" />
|
|
||||||
<di:waypoint x="710" y="117" />
|
|
||||||
<bpmndi:BPMNLabel>
|
|
||||||
<dc:Bounds x="670" y="99" width="35" height="14" />
|
|
||||||
</bpmndi:BPMNLabel>
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNEdge id="Flow_0io0g18_di" bpmnElement="Flow_0io0g18">
|
|
||||||
<di:waypoint x="530" y="117" />
|
|
||||||
<di:waypoint x="535" y="117" />
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNShape id="Gateway_08wnx3s_di" bpmnElement="Gateway_08wnx3s" isMarkerVisible="true">
|
|
||||||
<dc:Bounds x="345" y="92" width="50" height="50" />
|
|
||||||
<bpmndi:BPMNLabel>
|
|
||||||
<dc:Bounds x="341" y="62" width="58" height="14" />
|
|
||||||
</bpmndi:BPMNLabel>
|
|
||||||
</bpmndi:BPMNShape>
|
|
||||||
<bpmndi:BPMNEdge id="Flow_1dah8xt_di" bpmnElement="Flow_1dah8xt">
|
|
||||||
<di:waypoint x="395" y="117" />
|
|
||||||
<di:waypoint x="430" y="117" />
|
|
||||||
<bpmndi:BPMNLabel>
|
|
||||||
<dc:Bounds x="395" y="99" width="35" height="14" />
|
|
||||||
</bpmndi:BPMNLabel>
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNShape id="Activity_0ow7pu7_di" bpmnElement="Activity_0flre28">
|
|
||||||
<dc:Bounds x="430" y="77" width="100" height="80" />
|
|
||||||
</bpmndi:BPMNShape>
|
|
||||||
<bpmndi:BPMNShape id="Gateway_1cn7vsp_di" bpmnElement="Gateway_1cn7vsp" isMarkerVisible="true">
|
|
||||||
<dc:Bounds x="535" y="92" width="50" height="50" />
|
|
||||||
</bpmndi:BPMNShape>
|
|
||||||
<bpmndi:BPMNEdge id="Flow_1sx7n9u_di" bpmnElement="Flow_1sx7n9u">
|
|
||||||
<di:waypoint x="585" y="117" />
|
|
||||||
<di:waypoint x="615" y="117" />
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNEdge id="Flow_0i1bv5g_di" bpmnElement="Flow_0i1bv5g">
|
<bpmndi:BPMNEdge id="Flow_0i1bv5g_di" bpmnElement="Flow_0i1bv5g">
|
||||||
<di:waypoint x="370" y="142" />
|
<di:waypoint x="370" y="142" />
|
||||||
<di:waypoint x="370" y="280" />
|
<di:waypoint x="370" y="280" />
|
||||||
|
@ -140,6 +61,85 @@
|
||||||
<dc:Bounds x="448" y="262" width="34" height="14" />
|
<dc:Bounds x="448" y="262" width="34" height="14" />
|
||||||
</bpmndi:BPMNLabel>
|
</bpmndi:BPMNLabel>
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_1sx7n9u_di" bpmnElement="Flow_1sx7n9u">
|
||||||
|
<di:waypoint x="585" y="117" />
|
||||||
|
<di:waypoint x="615" y="117" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_1dah8xt_di" bpmnElement="Flow_1dah8xt">
|
||||||
|
<di:waypoint x="395" y="117" />
|
||||||
|
<di:waypoint x="430" y="117" />
|
||||||
|
<bpmndi:BPMNLabel>
|
||||||
|
<dc:Bounds x="395" y="99" width="35" height="14" />
|
||||||
|
</bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_0io0g18_di" bpmnElement="Flow_0io0g18">
|
||||||
|
<di:waypoint x="530" y="117" />
|
||||||
|
<di:waypoint x="535" y="117" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_0u92n7b_di" bpmnElement="Flow_0u92n7b">
|
||||||
|
<di:waypoint x="665" y="117" />
|
||||||
|
<di:waypoint x="710" y="117" />
|
||||||
|
<bpmndi:BPMNLabel>
|
||||||
|
<dc:Bounds x="670" y="99" width="35" height="14" />
|
||||||
|
</bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_1oo4mpj_di" bpmnElement="Flow_1oo4mpj">
|
||||||
|
<di:waypoint x="640" y="142" />
|
||||||
|
<di:waypoint x="640" y="330" />
|
||||||
|
<di:waypoint x="930" y="330" />
|
||||||
|
<di:waypoint x="930" y="135" />
|
||||||
|
<bpmndi:BPMNLabel>
|
||||||
|
<dc:Bounds x="745" y="312" width="80" height="14" />
|
||||||
|
</bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_0ds4mp0_di" bpmnElement="Flow_0ds4mp0">
|
||||||
|
<di:waypoint x="330" y="117" />
|
||||||
|
<di:waypoint x="345" y="117" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_0ugjw69_di" bpmnElement="Flow_0ugjw69">
|
||||||
|
<di:waypoint x="810" y="117" />
|
||||||
|
<di:waypoint x="912" y="117" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_0t6p1sb_di" bpmnElement="Flow_0t6p1sb">
|
||||||
|
<di:waypoint x="208" y="117" />
|
||||||
|
<di:waypoint x="230" y="117" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
|
||||||
|
<dc:Bounds x="172" y="99" width="36" height="36" />
|
||||||
|
<bpmndi:BPMNLabel>
|
||||||
|
<dc:Bounds x="159" y="142" width="64" height="14" />
|
||||||
|
</bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="Event_1g0pmib_di" bpmnElement="Event_End">
|
||||||
|
<dc:Bounds x="912" y="99" width="36" height="36" />
|
||||||
|
<bpmndi:BPMNLabel>
|
||||||
|
<dc:Bounds x="903" y="75" width="54" height="14" />
|
||||||
|
</bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="Activity_1iyilui_di" bpmnElement="Activity_Loop">
|
||||||
|
<dc:Bounds x="710" y="77" width="100" height="80" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="Activity_088tnzu_di" bpmnElement="Activity_088tnzu">
|
||||||
|
<dc:Bounds x="230" y="77" width="100" height="80" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="Gateway_07go3pk_di" bpmnElement="Gateway_07go3pk" isMarkerVisible="true">
|
||||||
|
<dc:Bounds x="615" y="92" width="50" height="50" />
|
||||||
|
<bpmndi:BPMNLabel>
|
||||||
|
<dc:Bounds x="602" y="62" width="78" height="14" />
|
||||||
|
</bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="Gateway_08wnx3s_di" bpmnElement="Gateway_08wnx3s" isMarkerVisible="true">
|
||||||
|
<dc:Bounds x="345" y="92" width="50" height="50" />
|
||||||
|
<bpmndi:BPMNLabel>
|
||||||
|
<dc:Bounds x="341" y="62" width="58" height="14" />
|
||||||
|
</bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="Activity_0ow7pu7_di" bpmnElement="Activity_0flre28">
|
||||||
|
<dc:Bounds x="430" y="77" width="100" height="80" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="Gateway_1cn7vsp_di" bpmnElement="Gateway_1cn7vsp" isMarkerVisible="true">
|
||||||
|
<dc:Bounds x="535" y="92" width="50" height="50" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
</bpmndi:BPMNPlane>
|
</bpmndi:BPMNPlane>
|
||||||
</bpmndi:BPMNDiagram>
|
</bpmndi:BPMNDiagram>
|
||||||
</bpmn:definitions>
|
</bpmn:definitions>
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,192 +1,196 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" xmlns:signavio="http://www.signavio.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" exporter="Signavio Process Editor, http://www.signavio.com" exporterVersion="" expressionLanguage="http://www.w3.org/1999/XPath" id="sid-e768d5da-695e-4e7f-9056-00d2c55ebc7a" targetNamespace="http://www.signavio.com/bpmn20" typeLanguage="http://www.w3.org/2001/XMLSchema" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL http://www.omg.org/spec/BPMN/2.0/20100501/BPMN20.xsd">
|
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:signavio="http://www.signavio.com" id="sid-e768d5da-695e-4e7f-9056-00d2c55ebc7a" targetNamespace="http://www.signavio.com/bpmn20" exporter="Camunda Modeler" exporterVersion="4.11.1" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL http://www.omg.org/spec/BPMN/2.0/20100501/BPMN20.xsd">
|
||||||
<collaboration id="sid-0f17acc3-6084-4563-9deb-bdcad51f2d07">
|
<collaboration id="sid-0f17acc3-6084-4563-9deb-bdcad51f2d07">
|
||||||
<participant id="sid-B2E5AD50-035A-4CE8-B8A3-B175A6767B00" name="Parallel One Path Ends" processRef="sid-33b2dda8-ca46-47ca-9f08-43de73abde9e">
|
<participant id="sid-B2E5AD50-035A-4CE8-B8A3-B175A6767B00" name="Parallel One Path Ends" processRef="sid-33b2dda8-ca46-47ca-9f08-43de73abde9e">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
</participant>
|
</participant>
|
||||||
</collaboration>
|
</collaboration>
|
||||||
<process id="sid-33b2dda8-ca46-47ca-9f08-43de73abde9e" isClosed="false" isExecutable="false" name="Parallel One Path Ends" processType="None">
|
<process id="sid-33b2dda8-ca46-47ca-9f08-43de73abde9e" name="Parallel One Path Ends" processType="None" isClosed="false" isExecutable="false">
|
||||||
<laneSet id="sid-a3c82d8b-0ff3-4d32-822a-c4867d4b03ec">
|
<laneSet id="sid-a3c82d8b-0ff3-4d32-822a-c4867d4b03ec">
|
||||||
<lane id="sid-72009BCE-46B4-4B4B-AEAE-1E7199522142" name="Tester">
|
<lane id="sid-72009BCE-46B4-4B4B-AEAE-1E7199522142" name="Tester">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue=""/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<flowNodeRef>sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE</flowNodeRef>
|
<flowNodeRef>sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE</flowNodeRef>
|
||||||
<flowNodeRef>sid-349F8C0C-45EA-489C-84DD-1D944F48D778</flowNodeRef>
|
<flowNodeRef>sid-349F8C0C-45EA-489C-84DD-1D944F48D778</flowNodeRef>
|
||||||
<flowNodeRef>sid-57463471-693A-42A2-9EC6-6460BEDECA86</flowNodeRef>
|
<flowNodeRef>sid-57463471-693A-42A2-9EC6-6460BEDECA86</flowNodeRef>
|
||||||
<flowNodeRef>sid-CA089240-802A-4C32-9130-FB1A33DDCCC3</flowNodeRef>
|
<flowNodeRef>sid-CA089240-802A-4C32-9130-FB1A33DDCCC3</flowNodeRef>
|
||||||
<flowNodeRef>sid-E2054FDD-0C20-4939-938D-2169B317FEE7</flowNodeRef>
|
<flowNodeRef>sid-E2054FDD-0C20-4939-938D-2169B317FEE7</flowNodeRef>
|
||||||
<flowNodeRef>sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5</flowNodeRef>
|
<flowNodeRef>sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5</flowNodeRef>
|
||||||
<flowNodeRef>sid-F3A979E3-F586-4807-8223-1FAB5A5647B0</flowNodeRef>
|
<flowNodeRef>sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB</flowNodeRef>
|
||||||
<flowNodeRef>sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB</flowNodeRef>
|
<flowNodeRef>sid-8FFE9D52-DC83-46A8-BB36-98BA94E5FE84</flowNodeRef>
|
||||||
<flowNodeRef>sid-8FFE9D52-DC83-46A8-BB36-98BA94E5FE84</flowNodeRef>
|
<flowNodeRef>sid-40294A27-262C-4805-94A0-36AC9DFEA55A</flowNodeRef>
|
||||||
<flowNodeRef>sid-40294A27-262C-4805-94A0-36AC9DFEA55A</flowNodeRef>
|
<flowNodeRef>sid-F3A979E3-F586-4807-8223-1FAB5A5647B0</flowNodeRef>
|
||||||
</lane>
|
</lane>
|
||||||
</laneSet>
|
</laneSet>
|
||||||
<startEvent id="sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE" name="">
|
<startEvent id="sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE" name="">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<outgoing>sid-F3994F51-FE54-4910-A1F4-E5895AA1A612</outgoing>
|
<outgoing>sid-F3994F51-FE54-4910-A1F4-E5895AA1A612</outgoing>
|
||||||
</startEvent>
|
</startEvent>
|
||||||
<parallelGateway gatewayDirection="Diverging" id="sid-349F8C0C-45EA-489C-84DD-1D944F48D778" name="">
|
<parallelGateway id="sid-349F8C0C-45EA-489C-84DD-1D944F48D778" name="" gatewayDirection="Diverging">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<incoming>sid-F3994F51-FE54-4910-A1F4-E5895AA1A612</incoming>
|
<incoming>sid-F3994F51-FE54-4910-A1F4-E5895AA1A612</incoming>
|
||||||
<outgoing>sid-7E15C71B-DE9E-4788-B140-A647C99FDC94</outgoing>
|
<outgoing>sid-7E15C71B-DE9E-4788-B140-A647C99FDC94</outgoing>
|
||||||
<outgoing>sid-B6E22A74-A691-453A-A789-B9F8AF787D7C</outgoing>
|
<outgoing>sid-B6E22A74-A691-453A-A789-B9F8AF787D7C</outgoing>
|
||||||
</parallelGateway>
|
</parallelGateway>
|
||||||
<task completionQuantity="1" id="sid-57463471-693A-42A2-9EC6-6460BEDECA86" isForCompensation="false" name="Parallel Task" startQuantity="1">
|
<task id="sid-57463471-693A-42A2-9EC6-6460BEDECA86" name="Parallel Task">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffcc"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffcc" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<incoming>sid-7E15C71B-DE9E-4788-B140-A647C99FDC94</incoming>
|
<incoming>sid-7E15C71B-DE9E-4788-B140-A647C99FDC94</incoming>
|
||||||
<outgoing>sid-E3493781-6466-4AED-BAD2-63D115E14820</outgoing>
|
<outgoing>sid-E3493781-6466-4AED-BAD2-63D115E14820</outgoing>
|
||||||
</task>
|
</task>
|
||||||
<task completionQuantity="1" id="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3" isForCompensation="false" name="Choice 1" startQuantity="1">
|
<task id="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3" name="Choice 1">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffcc"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffcc" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<incoming>sid-B6E22A74-A691-453A-A789-B9F8AF787D7C</incoming>
|
<incoming>sid-B6E22A74-A691-453A-A789-B9F8AF787D7C</incoming>
|
||||||
<outgoing>sid-CAEAD081-6E73-4C98-8656-C67DA18F5140</outgoing>
|
<outgoing>sid-CAEAD081-6E73-4C98-8656-C67DA18F5140</outgoing>
|
||||||
</task>
|
</task>
|
||||||
<exclusiveGateway gatewayDirection="Diverging" id="sid-E2054FDD-0C20-4939-938D-2169B317FEE7" name="">
|
<exclusiveGateway id="sid-E2054FDD-0C20-4939-938D-2169B317FEE7" name="" gatewayDirection="Diverging">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<incoming>sid-CAEAD081-6E73-4C98-8656-C67DA18F5140</incoming>
|
<incoming>sid-CAEAD081-6E73-4C98-8656-C67DA18F5140</incoming>
|
||||||
<outgoing>sid-9C753C3D-F964-45B0-AF57-234F910529EF</outgoing>
|
<outgoing>sid-9C753C3D-F964-45B0-AF57-234F910529EF</outgoing>
|
||||||
<outgoing>sid-3742C960-71D0-4342-8064-AF1BB9EECB42</outgoing>
|
<outgoing>sid-3742C960-71D0-4342-8064-AF1BB9EECB42</outgoing>
|
||||||
</exclusiveGateway>
|
</exclusiveGateway>
|
||||||
<task completionQuantity="1" id="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5" isForCompensation="false" name="Yes Task" startQuantity="1">
|
<task id="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5" name="Yes Task">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffcc"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffcc" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<incoming>sid-9C753C3D-F964-45B0-AF57-234F910529EF</incoming>
|
<incoming>sid-9C753C3D-F964-45B0-AF57-234F910529EF</incoming>
|
||||||
<outgoing>sid-A6DA25CE-636A-46B7-8005-759577956F09</outgoing>
|
<outgoing>sid-A6DA25CE-636A-46B7-8005-759577956F09</outgoing>
|
||||||
</task>
|
</task>
|
||||||
<task completionQuantity="1" id="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0" isForCompensation="false" name="Done" startQuantity="1">
|
<endEvent id="sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB" name="">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffcc"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<incoming>sid-8B2BFD35-F1B2-4C77-AC51-F15960D8791A</incoming>
|
<incoming>sid-40496205-24D7-494C-AB6B-CD42B8D606EF</incoming>
|
||||||
<outgoing>sid-40496205-24D7-494C-AB6B-CD42B8D606EF</outgoing>
|
</endEvent>
|
||||||
</task>
|
<endEvent id="sid-8FFE9D52-DC83-46A8-BB36-98BA94E5FE84" name="">
|
||||||
<endEvent id="sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB" name="">
|
<extensionElements>
|
||||||
<extensionElements>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff" />
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff"/>
|
</extensionElements>
|
||||||
</extensionElements>
|
<incoming>sid-3742C960-71D0-4342-8064-AF1BB9EECB42</incoming>
|
||||||
<incoming>sid-40496205-24D7-494C-AB6B-CD42B8D606EF</incoming>
|
</endEvent>
|
||||||
</endEvent>
|
<inclusiveGateway id="sid-40294A27-262C-4805-94A0-36AC9DFEA55A" name="" gatewayDirection="Converging" default="sid-8B2BFD35-F1B2-4C77-AC51-F15960D8791A">
|
||||||
<endEvent id="sid-8FFE9D52-DC83-46A8-BB36-98BA94E5FE84" name="">
|
<extensionElements>
|
||||||
<extensionElements>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff" />
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff"/>
|
</extensionElements>
|
||||||
</extensionElements>
|
<incoming>sid-A6DA25CE-636A-46B7-8005-759577956F09</incoming>
|
||||||
<incoming>sid-3742C960-71D0-4342-8064-AF1BB9EECB42</incoming>
|
<incoming>sid-E3493781-6466-4AED-BAD2-63D115E14820</incoming>
|
||||||
</endEvent>
|
<outgoing>sid-8B2BFD35-F1B2-4C77-AC51-F15960D8791A</outgoing>
|
||||||
<inclusiveGateway gatewayDirection="Converging" id="sid-40294A27-262C-4805-94A0-36AC9DFEA55A" name="">
|
</inclusiveGateway>
|
||||||
<extensionElements>
|
<sequenceFlow id="sid-F3994F51-FE54-4910-A1F4-E5895AA1A612" name="" sourceRef="sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE" targetRef="sid-349F8C0C-45EA-489C-84DD-1D944F48D778" />
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff"/>
|
<sequenceFlow id="sid-7E15C71B-DE9E-4788-B140-A647C99FDC94" name="" sourceRef="sid-349F8C0C-45EA-489C-84DD-1D944F48D778" targetRef="sid-57463471-693A-42A2-9EC6-6460BEDECA86" />
|
||||||
</extensionElements>
|
<sequenceFlow id="sid-B6E22A74-A691-453A-A789-B9F8AF787D7C" name="" sourceRef="sid-349F8C0C-45EA-489C-84DD-1D944F48D778" targetRef="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3" />
|
||||||
<incoming>sid-A6DA25CE-636A-46B7-8005-759577956F09</incoming>
|
<sequenceFlow id="sid-CAEAD081-6E73-4C98-8656-C67DA18F5140" name="" sourceRef="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3" targetRef="sid-E2054FDD-0C20-4939-938D-2169B317FEE7" />
|
||||||
<incoming>sid-E3493781-6466-4AED-BAD2-63D115E14820</incoming>
|
<sequenceFlow id="sid-9C753C3D-F964-45B0-AF57-234F910529EF" name="Yes" sourceRef="sid-E2054FDD-0C20-4939-938D-2169B317FEE7" targetRef="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5">
|
||||||
<outgoing>sid-8B2BFD35-F1B2-4C77-AC51-F15960D8791A</outgoing>
|
<conditionExpression xsi:type="tFormalExpression">choice == 'Yes'</conditionExpression>
|
||||||
</inclusiveGateway>
|
</sequenceFlow>
|
||||||
<sequenceFlow id="sid-F3994F51-FE54-4910-A1F4-E5895AA1A612" name="" sourceRef="sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE" targetRef="sid-349F8C0C-45EA-489C-84DD-1D944F48D778"/>
|
<sequenceFlow id="sid-A6DA25CE-636A-46B7-8005-759577956F09" name="" sourceRef="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5" targetRef="sid-40294A27-262C-4805-94A0-36AC9DFEA55A" />
|
||||||
<sequenceFlow id="sid-7E15C71B-DE9E-4788-B140-A647C99FDC94" name="" sourceRef="sid-349F8C0C-45EA-489C-84DD-1D944F48D778" targetRef="sid-57463471-693A-42A2-9EC6-6460BEDECA86"/>
|
<sequenceFlow id="sid-40496205-24D7-494C-AB6B-CD42B8D606EF" name="" sourceRef="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0" targetRef="sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB" />
|
||||||
<sequenceFlow id="sid-B6E22A74-A691-453A-A789-B9F8AF787D7C" name="" sourceRef="sid-349F8C0C-45EA-489C-84DD-1D944F48D778" targetRef="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3"/>
|
<sequenceFlow id="sid-3742C960-71D0-4342-8064-AF1BB9EECB42" name="No" sourceRef="sid-E2054FDD-0C20-4939-938D-2169B317FEE7" targetRef="sid-8FFE9D52-DC83-46A8-BB36-98BA94E5FE84">
|
||||||
<sequenceFlow id="sid-CAEAD081-6E73-4C98-8656-C67DA18F5140" name="" sourceRef="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3" targetRef="sid-E2054FDD-0C20-4939-938D-2169B317FEE7"/>
|
<conditionExpression xsi:type="tFormalExpression">choice == 'No'</conditionExpression>
|
||||||
<sequenceFlow id="sid-9C753C3D-F964-45B0-AF57-234F910529EF" name="Yes" sourceRef="sid-E2054FDD-0C20-4939-938D-2169B317FEE7" targetRef="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5"/>
|
</sequenceFlow>
|
||||||
<sequenceFlow id="sid-A6DA25CE-636A-46B7-8005-759577956F09" name="" sourceRef="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5" targetRef="sid-40294A27-262C-4805-94A0-36AC9DFEA55A"/>
|
<sequenceFlow id="sid-E3493781-6466-4AED-BAD2-63D115E14820" name="" sourceRef="sid-57463471-693A-42A2-9EC6-6460BEDECA86" targetRef="sid-40294A27-262C-4805-94A0-36AC9DFEA55A" />
|
||||||
<sequenceFlow id="sid-40496205-24D7-494C-AB6B-CD42B8D606EF" name="" sourceRef="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0" targetRef="sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB"/>
|
<sequenceFlow id="sid-8B2BFD35-F1B2-4C77-AC51-F15960D8791A" name="" sourceRef="sid-40294A27-262C-4805-94A0-36AC9DFEA55A" targetRef="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0" />
|
||||||
<sequenceFlow id="sid-3742C960-71D0-4342-8064-AF1BB9EECB42" name="No" sourceRef="sid-E2054FDD-0C20-4939-938D-2169B317FEE7" targetRef="sid-8FFE9D52-DC83-46A8-BB36-98BA94E5FE84"/>
|
<task id="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0" name="Done">
|
||||||
<sequenceFlow id="sid-E3493781-6466-4AED-BAD2-63D115E14820" name="" sourceRef="sid-57463471-693A-42A2-9EC6-6460BEDECA86" targetRef="sid-40294A27-262C-4805-94A0-36AC9DFEA55A"/>
|
<extensionElements>
|
||||||
<sequenceFlow id="sid-8B2BFD35-F1B2-4C77-AC51-F15960D8791A" name="" sourceRef="sid-40294A27-262C-4805-94A0-36AC9DFEA55A" targetRef="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffcc" />
|
||||||
</process>
|
</extensionElements>
|
||||||
<bpmndi:BPMNDiagram id="sid-45a74cc8-83cd-41da-8041-dd8449ea4c0f">
|
<incoming>sid-8B2BFD35-F1B2-4C77-AC51-F15960D8791A</incoming>
|
||||||
<bpmndi:BPMNPlane bpmnElement="sid-0f17acc3-6084-4563-9deb-bdcad51f2d07" id="sid-8979dc6d-9b90-4b0d-8bab-1999dec21a52">
|
<outgoing>sid-40496205-24D7-494C-AB6B-CD42B8D606EF</outgoing>
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-B2E5AD50-035A-4CE8-B8A3-B175A6767B00" id="sid-B2E5AD50-035A-4CE8-B8A3-B175A6767B00_gui" isHorizontal="true">
|
</task>
|
||||||
<omgdc:Bounds height="479.0" width="776.0" x="120.0" y="90.0"/>
|
</process>
|
||||||
</bpmndi:BPMNShape>
|
<bpmndi:BPMNDiagram id="sid-45a74cc8-83cd-41da-8041-dd8449ea4c0f">
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-72009BCE-46B4-4B4B-AEAE-1E7199522142" id="sid-72009BCE-46B4-4B4B-AEAE-1E7199522142_gui" isHorizontal="true">
|
<bpmndi:BPMNPlane id="sid-8979dc6d-9b90-4b0d-8bab-1999dec21a52" bpmnElement="sid-0f17acc3-6084-4563-9deb-bdcad51f2d07">
|
||||||
<omgdc:Bounds height="479.0" width="746.0" x="150.0" y="90.0"/>
|
<bpmndi:BPMNShape id="sid-B2E5AD50-035A-4CE8-B8A3-B175A6767B00_gui" bpmnElement="sid-B2E5AD50-035A-4CE8-B8A3-B175A6767B00" isHorizontal="true">
|
||||||
</bpmndi:BPMNShape>
|
<omgdc:Bounds x="120" y="90" width="776" height="479" />
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE" id="sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE_gui">
|
</bpmndi:BPMNShape>
|
||||||
<omgdc:Bounds height="30.0" width="30.0" x="190.0" y="122.0"/>
|
<bpmndi:BPMNShape id="sid-72009BCE-46B4-4B4B-AEAE-1E7199522142_gui" bpmnElement="sid-72009BCE-46B4-4B4B-AEAE-1E7199522142" isHorizontal="true">
|
||||||
</bpmndi:BPMNShape>
|
<omgdc:Bounds x="150" y="90" width="746" height="479" />
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-349F8C0C-45EA-489C-84DD-1D944F48D778" id="sid-349F8C0C-45EA-489C-84DD-1D944F48D778_gui">
|
</bpmndi:BPMNShape>
|
||||||
<omgdc:Bounds height="40.0" width="40.0" x="315.0" y="117.0"/>
|
<bpmndi:BPMNEdge id="sid-8B2BFD35-F1B2-4C77-AC51-F15960D8791A_gui" bpmnElement="sid-8B2BFD35-F1B2-4C77-AC51-F15960D8791A">
|
||||||
</bpmndi:BPMNShape>
|
<omgdi:waypoint x="640" y="360" />
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-57463471-693A-42A2-9EC6-6460BEDECA86" id="sid-57463471-693A-42A2-9EC6-6460BEDECA86_gui">
|
<omgdi:waypoint x="678" y="364" />
|
||||||
<omgdc:Bounds height="80.0" width="100.0" x="469.0" y="97.0"/>
|
</bpmndi:BPMNEdge>
|
||||||
</bpmndi:BPMNShape>
|
<bpmndi:BPMNEdge id="sid-E3493781-6466-4AED-BAD2-63D115E14820_gui" bpmnElement="sid-E3493781-6466-4AED-BAD2-63D115E14820">
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3" id="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3_gui">
|
<omgdi:waypoint x="569" y="137" />
|
||||||
<omgdc:Bounds height="80.0" width="100.0" x="231.0" y="214.0"/>
|
<omgdi:waypoint x="620.5" y="137" />
|
||||||
</bpmndi:BPMNShape>
|
<omgdi:waypoint x="620" y="339" />
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-E2054FDD-0C20-4939-938D-2169B317FEE7" id="sid-E2054FDD-0C20-4939-938D-2169B317FEE7_gui" isMarkerVisible="true">
|
</bpmndi:BPMNEdge>
|
||||||
<omgdc:Bounds height="40.0" width="40.0" x="261.0" y="339.0"/>
|
<bpmndi:BPMNEdge id="sid-3742C960-71D0-4342-8064-AF1BB9EECB42_gui" bpmnElement="sid-3742C960-71D0-4342-8064-AF1BB9EECB42">
|
||||||
</bpmndi:BPMNShape>
|
<omgdi:waypoint x="281" y="379" />
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5" id="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5_gui">
|
<omgdi:waypoint x="281" y="448" />
|
||||||
<omgdc:Bounds height="80.0" width="100.0" x="371.0" y="319.0"/>
|
</bpmndi:BPMNEdge>
|
||||||
</bpmndi:BPMNShape>
|
<bpmndi:BPMNEdge id="sid-40496205-24D7-494C-AB6B-CD42B8D606EF_gui" bpmnElement="sid-40496205-24D7-494C-AB6B-CD42B8D606EF">
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0" id="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0_gui">
|
<omgdi:waypoint x="728" y="408" />
|
||||||
<omgdc:Bounds height="80.0" width="100.0" x="678.0" y="328.0"/>
|
<omgdi:waypoint x="728" y="448" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB" id="sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB_gui">
|
<bpmndi:BPMNEdge id="sid-A6DA25CE-636A-46B7-8005-759577956F09_gui" bpmnElement="sid-A6DA25CE-636A-46B7-8005-759577956F09">
|
||||||
<omgdc:Bounds height="28.0" width="28.0" x="714.0" y="448.0"/>
|
<omgdi:waypoint x="471" y="359" />
|
||||||
</bpmndi:BPMNShape>
|
<omgdi:waypoint x="600" y="359" />
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-8FFE9D52-DC83-46A8-BB36-98BA94E5FE84" id="sid-8FFE9D52-DC83-46A8-BB36-98BA94E5FE84_gui">
|
</bpmndi:BPMNEdge>
|
||||||
<omgdc:Bounds height="28.0" width="28.0" x="267.0" y="448.0"/>
|
<bpmndi:BPMNEdge id="sid-9C753C3D-F964-45B0-AF57-234F910529EF_gui" bpmnElement="sid-9C753C3D-F964-45B0-AF57-234F910529EF">
|
||||||
</bpmndi:BPMNShape>
|
<omgdi:waypoint x="301" y="359" />
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-40294A27-262C-4805-94A0-36AC9DFEA55A" id="sid-40294A27-262C-4805-94A0-36AC9DFEA55A_gui">
|
<omgdi:waypoint x="371" y="359" />
|
||||||
<omgdc:Bounds height="40.0" width="40.0" x="600.0" y="339.0"/>
|
</bpmndi:BPMNEdge>
|
||||||
</bpmndi:BPMNShape>
|
<bpmndi:BPMNEdge id="sid-CAEAD081-6E73-4C98-8656-C67DA18F5140_gui" bpmnElement="sid-CAEAD081-6E73-4C98-8656-C67DA18F5140">
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-9C753C3D-F964-45B0-AF57-234F910529EF" id="sid-9C753C3D-F964-45B0-AF57-234F910529EF_gui">
|
<omgdi:waypoint x="281" y="294" />
|
||||||
<omgdi:waypoint x="301.0" y="359.0"/>
|
<omgdi:waypoint x="281" y="339" />
|
||||||
<omgdi:waypoint x="371.0" y="359.0"/>
|
</bpmndi:BPMNEdge>
|
||||||
</bpmndi:BPMNEdge>
|
<bpmndi:BPMNEdge id="sid-B6E22A74-A691-453A-A789-B9F8AF787D7C_gui" bpmnElement="sid-B6E22A74-A691-453A-A789-B9F8AF787D7C">
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-7E15C71B-DE9E-4788-B140-A647C99FDC94" id="sid-7E15C71B-DE9E-4788-B140-A647C99FDC94_gui">
|
<omgdi:waypoint x="335" y="157" />
|
||||||
<omgdi:waypoint x="355.0" y="137.0"/>
|
<omgdi:waypoint x="335.5" y="185.5" />
|
||||||
<omgdi:waypoint x="469.0" y="137.0"/>
|
<omgdi:waypoint x="281" y="185.5" />
|
||||||
</bpmndi:BPMNEdge>
|
<omgdi:waypoint x="281" y="214" />
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-CAEAD081-6E73-4C98-8656-C67DA18F5140" id="sid-CAEAD081-6E73-4C98-8656-C67DA18F5140_gui">
|
</bpmndi:BPMNEdge>
|
||||||
<omgdi:waypoint x="281.0" y="294.0"/>
|
<bpmndi:BPMNEdge id="sid-7E15C71B-DE9E-4788-B140-A647C99FDC94_gui" bpmnElement="sid-7E15C71B-DE9E-4788-B140-A647C99FDC94">
|
||||||
<omgdi:waypoint x="281.0" y="339.0"/>
|
<omgdi:waypoint x="355" y="137" />
|
||||||
</bpmndi:BPMNEdge>
|
<omgdi:waypoint x="469" y="137" />
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-8B2BFD35-F1B2-4C77-AC51-F15960D8791A" id="sid-8B2BFD35-F1B2-4C77-AC51-F15960D8791A_gui">
|
</bpmndi:BPMNEdge>
|
||||||
<omgdi:waypoint x="640.0" y="360.0"/>
|
<bpmndi:BPMNEdge id="sid-F3994F51-FE54-4910-A1F4-E5895AA1A612_gui" bpmnElement="sid-F3994F51-FE54-4910-A1F4-E5895AA1A612">
|
||||||
<omgdi:waypoint x="678.0" y="364.0"/>
|
<omgdi:waypoint x="220" y="137" />
|
||||||
</bpmndi:BPMNEdge>
|
<omgdi:waypoint x="315" y="137" />
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-40496205-24D7-494C-AB6B-CD42B8D606EF" id="sid-40496205-24D7-494C-AB6B-CD42B8D606EF_gui">
|
</bpmndi:BPMNEdge>
|
||||||
<omgdi:waypoint x="728.0" y="408.0"/>
|
<bpmndi:BPMNShape id="sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE_gui" bpmnElement="sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE">
|
||||||
<omgdi:waypoint x="728.0" y="448.0"/>
|
<omgdc:Bounds x="190" y="122" width="30" height="30" />
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-F3994F51-FE54-4910-A1F4-E5895AA1A612" id="sid-F3994F51-FE54-4910-A1F4-E5895AA1A612_gui">
|
<bpmndi:BPMNShape id="sid-349F8C0C-45EA-489C-84DD-1D944F48D778_gui" bpmnElement="sid-349F8C0C-45EA-489C-84DD-1D944F48D778">
|
||||||
<omgdi:waypoint x="220.0" y="137.0"/>
|
<omgdc:Bounds x="315" y="117" width="40" height="40" />
|
||||||
<omgdi:waypoint x="315.0" y="137.0"/>
|
</bpmndi:BPMNShape>
|
||||||
</bpmndi:BPMNEdge>
|
<bpmndi:BPMNShape id="sid-57463471-693A-42A2-9EC6-6460BEDECA86_gui" bpmnElement="sid-57463471-693A-42A2-9EC6-6460BEDECA86">
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-A6DA25CE-636A-46B7-8005-759577956F09" id="sid-A6DA25CE-636A-46B7-8005-759577956F09_gui">
|
<omgdc:Bounds x="469" y="97" width="100" height="80" />
|
||||||
<omgdi:waypoint x="471.0" y="359.0"/>
|
</bpmndi:BPMNShape>
|
||||||
<omgdi:waypoint x="600.0" y="359.0"/>
|
<bpmndi:BPMNShape id="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3_gui" bpmnElement="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3">
|
||||||
</bpmndi:BPMNEdge>
|
<omgdc:Bounds x="231" y="214" width="100" height="80" />
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-B6E22A74-A691-453A-A789-B9F8AF787D7C" id="sid-B6E22A74-A691-453A-A789-B9F8AF787D7C_gui">
|
</bpmndi:BPMNShape>
|
||||||
<omgdi:waypoint x="335.0" y="157.0"/>
|
<bpmndi:BPMNShape id="sid-E2054FDD-0C20-4939-938D-2169B317FEE7_gui" bpmnElement="sid-E2054FDD-0C20-4939-938D-2169B317FEE7" isMarkerVisible="true">
|
||||||
<omgdi:waypoint x="335.5" y="185.5"/>
|
<omgdc:Bounds x="261" y="339" width="40" height="40" />
|
||||||
<omgdi:waypoint x="281.0" y="185.5"/>
|
</bpmndi:BPMNShape>
|
||||||
<omgdi:waypoint x="281.0" y="214.0"/>
|
<bpmndi:BPMNShape id="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5_gui" bpmnElement="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5">
|
||||||
</bpmndi:BPMNEdge>
|
<omgdc:Bounds x="371" y="319" width="100" height="80" />
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-3742C960-71D0-4342-8064-AF1BB9EECB42" id="sid-3742C960-71D0-4342-8064-AF1BB9EECB42_gui">
|
</bpmndi:BPMNShape>
|
||||||
<omgdi:waypoint x="281.0" y="379.0"/>
|
<bpmndi:BPMNShape id="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0_gui" bpmnElement="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0">
|
||||||
<omgdi:waypoint x="281.0" y="448.0"/>
|
<omgdc:Bounds x="678" y="328" width="100" height="80" />
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-E3493781-6466-4AED-BAD2-63D115E14820" id="sid-E3493781-6466-4AED-BAD2-63D115E14820_gui">
|
<bpmndi:BPMNShape id="sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB_gui" bpmnElement="sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB">
|
||||||
<omgdi:waypoint x="569.0" y="137.0"/>
|
<omgdc:Bounds x="714" y="448" width="28" height="28" />
|
||||||
<omgdi:waypoint x="620.5" y="137.0"/>
|
</bpmndi:BPMNShape>
|
||||||
<omgdi:waypoint x="620.0" y="339.0"/>
|
<bpmndi:BPMNShape id="sid-8FFE9D52-DC83-46A8-BB36-98BA94E5FE84_gui" bpmnElement="sid-8FFE9D52-DC83-46A8-BB36-98BA94E5FE84">
|
||||||
</bpmndi:BPMNEdge>
|
<omgdc:Bounds x="267" y="448" width="28" height="28" />
|
||||||
</bpmndi:BPMNPlane>
|
</bpmndi:BPMNShape>
|
||||||
</bpmndi:BPMNDiagram>
|
<bpmndi:BPMNShape id="sid-40294A27-262C-4805-94A0-36AC9DFEA55A_gui" bpmnElement="sid-40294A27-262C-4805-94A0-36AC9DFEA55A">
|
||||||
|
<omgdc:Bounds x="600" y="339" width="40" height="40" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
</bpmndi:BPMNPlane>
|
||||||
|
</bpmndi:BPMNDiagram>
|
||||||
</definitions>
|
</definitions>
|
||||||
|
|
|
@ -1,219 +1,223 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" xmlns:signavio="http://www.signavio.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" exporter="Signavio Process Editor, http://www.signavio.com" exporterVersion="" expressionLanguage="http://www.w3.org/1999/XPath" id="sid-30c405f0-d9e2-4a64-bee9-991f9cdd29ca" targetNamespace="http://www.signavio.com/bpmn20" typeLanguage="http://www.w3.org/2001/XMLSchema" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL http://www.omg.org/spec/BPMN/2.0/20100501/BPMN20.xsd">
|
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:signavio="http://www.signavio.com" id="sid-30c405f0-d9e2-4a64-bee9-991f9cdd29ca" targetNamespace="http://www.signavio.com/bpmn20" exporter="Camunda Modeler" exporterVersion="4.11.1" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL http://www.omg.org/spec/BPMN/2.0/20100501/BPMN20.xsd">
|
||||||
<collaboration id="sid-5a474cce-f38e-40ef-8177-46451f1c0008">
|
<collaboration id="sid-5a474cce-f38e-40ef-8177-46451f1c0008">
|
||||||
<participant id="sid-B2E5AD50-035A-4CE8-B8A3-B175A6767B00" name="Parallel Then Exclusive No Inclusive" processRef="sid-900d26c9-beab-47a4-8092-4284bfb39927">
|
<participant id="sid-B2E5AD50-035A-4CE8-B8A3-B175A6767B00" name="Parallel Then Exclusive No Inclusive" processRef="sid-900d26c9-beab-47a4-8092-4284bfb39927">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
</participant>
|
</participant>
|
||||||
</collaboration>
|
</collaboration>
|
||||||
<process id="sid-900d26c9-beab-47a4-8092-4284bfb39927" isClosed="false" isExecutable="false" name="Parallel Then Exclusive No Inclusive" processType="None">
|
<process id="sid-900d26c9-beab-47a4-8092-4284bfb39927" name="Parallel Then Exclusive No Inclusive" processType="None" isClosed="false" isExecutable="false">
|
||||||
<laneSet id="sid-6ee2dc30-d14c-4d0c-9e3c-dab157e066ae">
|
<laneSet id="sid-6ee2dc30-d14c-4d0c-9e3c-dab157e066ae">
|
||||||
<lane id="sid-72009BCE-46B4-4B4B-AEAE-1E7199522142" name="Tester">
|
<lane id="sid-72009BCE-46B4-4B4B-AEAE-1E7199522142" name="Tester">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue=""/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<flowNodeRef>sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE</flowNodeRef>
|
<flowNodeRef>sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE</flowNodeRef>
|
||||||
<flowNodeRef>sid-349F8C0C-45EA-489C-84DD-1D944F48D778</flowNodeRef>
|
<flowNodeRef>sid-349F8C0C-45EA-489C-84DD-1D944F48D778</flowNodeRef>
|
||||||
<flowNodeRef>sid-57463471-693A-42A2-9EC6-6460BEDECA86</flowNodeRef>
|
<flowNodeRef>sid-57463471-693A-42A2-9EC6-6460BEDECA86</flowNodeRef>
|
||||||
<flowNodeRef>sid-CA089240-802A-4C32-9130-FB1A33DDCCC3</flowNodeRef>
|
<flowNodeRef>sid-CA089240-802A-4C32-9130-FB1A33DDCCC3</flowNodeRef>
|
||||||
<flowNodeRef>sid-E2054FDD-0C20-4939-938D-2169B317FEE7</flowNodeRef>
|
<flowNodeRef>sid-E2054FDD-0C20-4939-938D-2169B317FEE7</flowNodeRef>
|
||||||
<flowNodeRef>sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5</flowNodeRef>
|
<flowNodeRef>sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5</flowNodeRef>
|
||||||
<flowNodeRef>sid-2A302E91-F89F-4913-8F55-5C3AC5FAE4D3</flowNodeRef>
|
<flowNodeRef>sid-2A302E91-F89F-4913-8F55-5C3AC5FAE4D3</flowNodeRef>
|
||||||
<flowNodeRef>sid-F3A979E3-F586-4807-8223-1FAB5A5647B0</flowNodeRef>
|
<flowNodeRef>sid-F3A979E3-F586-4807-8223-1FAB5A5647B0</flowNodeRef>
|
||||||
<flowNodeRef>sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB</flowNodeRef>
|
<flowNodeRef>sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB</flowNodeRef>
|
||||||
<flowNodeRef>sid-040FCBAD-0550-4251-B799-74FCDB0DC3E2</flowNodeRef>
|
<flowNodeRef>sid-040FCBAD-0550-4251-B799-74FCDB0DC3E2</flowNodeRef>
|
||||||
<flowNodeRef>sid-D856C519-562B-46A3-B32C-9587F394BD0F</flowNodeRef>
|
<flowNodeRef>sid-D856C519-562B-46A3-B32C-9587F394BD0F</flowNodeRef>
|
||||||
</lane>
|
</lane>
|
||||||
</laneSet>
|
</laneSet>
|
||||||
<startEvent id="sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE" name="">
|
<startEvent id="sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE" name="">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<outgoing>sid-F3994F51-FE54-4910-A1F4-E5895AA1A612</outgoing>
|
<outgoing>sid-F3994F51-FE54-4910-A1F4-E5895AA1A612</outgoing>
|
||||||
</startEvent>
|
</startEvent>
|
||||||
<parallelGateway gatewayDirection="Diverging" id="sid-349F8C0C-45EA-489C-84DD-1D944F48D778" name="">
|
<parallelGateway id="sid-349F8C0C-45EA-489C-84DD-1D944F48D778" name="" gatewayDirection="Diverging">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<incoming>sid-F3994F51-FE54-4910-A1F4-E5895AA1A612</incoming>
|
<incoming>sid-F3994F51-FE54-4910-A1F4-E5895AA1A612</incoming>
|
||||||
<outgoing>sid-7E15C71B-DE9E-4788-B140-A647C99FDC94</outgoing>
|
<outgoing>sid-7E15C71B-DE9E-4788-B140-A647C99FDC94</outgoing>
|
||||||
<outgoing>sid-B6E22A74-A691-453A-A789-B9F8AF787D7C</outgoing>
|
<outgoing>sid-B6E22A74-A691-453A-A789-B9F8AF787D7C</outgoing>
|
||||||
</parallelGateway>
|
</parallelGateway>
|
||||||
<task completionQuantity="1" id="sid-57463471-693A-42A2-9EC6-6460BEDECA86" isForCompensation="false" name="Parallel Task" startQuantity="1">
|
<task id="sid-57463471-693A-42A2-9EC6-6460BEDECA86" name="Parallel Task">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffcc"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffcc" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<incoming>sid-7E15C71B-DE9E-4788-B140-A647C99FDC94</incoming>
|
<incoming>sid-7E15C71B-DE9E-4788-B140-A647C99FDC94</incoming>
|
||||||
<outgoing>sid-E3493781-6466-4AED-BAD2-63D115E14820</outgoing>
|
<outgoing>sid-E3493781-6466-4AED-BAD2-63D115E14820</outgoing>
|
||||||
</task>
|
</task>
|
||||||
<task completionQuantity="1" id="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3" isForCompensation="false" name="Choice 1" startQuantity="1">
|
<task id="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3" name="Choice 1">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffcc"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffcc" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<incoming>sid-B6E22A74-A691-453A-A789-B9F8AF787D7C</incoming>
|
<incoming>sid-B6E22A74-A691-453A-A789-B9F8AF787D7C</incoming>
|
||||||
<outgoing>sid-CAEAD081-6E73-4C98-8656-C67DA18F5140</outgoing>
|
<outgoing>sid-CAEAD081-6E73-4C98-8656-C67DA18F5140</outgoing>
|
||||||
</task>
|
</task>
|
||||||
<exclusiveGateway gatewayDirection="Diverging" id="sid-E2054FDD-0C20-4939-938D-2169B317FEE7" name="">
|
<exclusiveGateway id="sid-E2054FDD-0C20-4939-938D-2169B317FEE7" name="" gatewayDirection="Diverging">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<incoming>sid-CAEAD081-6E73-4C98-8656-C67DA18F5140</incoming>
|
<incoming>sid-CAEAD081-6E73-4C98-8656-C67DA18F5140</incoming>
|
||||||
<outgoing>sid-3742C960-71D0-4342-8064-AF1BB9EECB42</outgoing>
|
<outgoing>sid-3742C960-71D0-4342-8064-AF1BB9EECB42</outgoing>
|
||||||
<outgoing>sid-9C753C3D-F964-45B0-AF57-234F910529EF</outgoing>
|
<outgoing>sid-9C753C3D-F964-45B0-AF57-234F910529EF</outgoing>
|
||||||
</exclusiveGateway>
|
</exclusiveGateway>
|
||||||
<task completionQuantity="1" id="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5" isForCompensation="false" name="Yes Task" startQuantity="1">
|
<task id="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5" name="Yes Task">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffcc"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffcc" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<incoming>sid-9C753C3D-F964-45B0-AF57-234F910529EF</incoming>
|
<incoming>sid-9C753C3D-F964-45B0-AF57-234F910529EF</incoming>
|
||||||
<outgoing>sid-A6DA25CE-636A-46B7-8005-759577956F09</outgoing>
|
<outgoing>sid-A6DA25CE-636A-46B7-8005-759577956F09</outgoing>
|
||||||
</task>
|
</task>
|
||||||
<task completionQuantity="1" id="sid-2A302E91-F89F-4913-8F55-5C3AC5FAE4D3" isForCompensation="false" name="No Task" startQuantity="1">
|
<task id="sid-2A302E91-F89F-4913-8F55-5C3AC5FAE4D3" name="No Task">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffcc"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffcc" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<incoming>sid-3742C960-71D0-4342-8064-AF1BB9EECB42</incoming>
|
<incoming>sid-3742C960-71D0-4342-8064-AF1BB9EECB42</incoming>
|
||||||
<outgoing>sid-12F60C82-D18F-4747-B5B5-34FD40F2C8DE</outgoing>
|
<outgoing>sid-12F60C82-D18F-4747-B5B5-34FD40F2C8DE</outgoing>
|
||||||
</task>
|
</task>
|
||||||
<task completionQuantity="1" id="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0" isForCompensation="false" name="Done" startQuantity="1">
|
<task id="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0" name="Done">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffcc"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffcc" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<incoming>sid-0895E09C-077C-4D12-8C11-31F28CBC7740</incoming>
|
<incoming>sid-0895E09C-077C-4D12-8C11-31F28CBC7740</incoming>
|
||||||
<outgoing>sid-40496205-24D7-494C-AB6B-CD42B8D606EF</outgoing>
|
<outgoing>sid-40496205-24D7-494C-AB6B-CD42B8D606EF</outgoing>
|
||||||
</task>
|
</task>
|
||||||
<endEvent id="sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB" name="">
|
<endEvent id="sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB" name="">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<incoming>sid-40496205-24D7-494C-AB6B-CD42B8D606EF</incoming>
|
<incoming>sid-40496205-24D7-494C-AB6B-CD42B8D606EF</incoming>
|
||||||
</endEvent>
|
</endEvent>
|
||||||
<exclusiveGateway gatewayDirection="Converging" id="sid-040FCBAD-0550-4251-B799-74FCDB0DC3E2" name="">
|
<exclusiveGateway id="sid-040FCBAD-0550-4251-B799-74FCDB0DC3E2" name="" gatewayDirection="Converging" default="sid-3B450653-1657-4247-B96E-6E3E6262BB97">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<incoming>sid-12F60C82-D18F-4747-B5B5-34FD40F2C8DE</incoming>
|
<incoming>sid-12F60C82-D18F-4747-B5B5-34FD40F2C8DE</incoming>
|
||||||
<incoming>sid-A6DA25CE-636A-46B7-8005-759577956F09</incoming>
|
<incoming>sid-A6DA25CE-636A-46B7-8005-759577956F09</incoming>
|
||||||
<outgoing>sid-3B450653-1657-4247-B96E-6E3E6262BB97</outgoing>
|
<outgoing>sid-3B450653-1657-4247-B96E-6E3E6262BB97</outgoing>
|
||||||
</exclusiveGateway>
|
</exclusiveGateway>
|
||||||
<parallelGateway gatewayDirection="Converging" id="sid-D856C519-562B-46A3-B32C-9587F394BD0F" name="">
|
<parallelGateway id="sid-D856C519-562B-46A3-B32C-9587F394BD0F" name="" gatewayDirection="Converging">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<incoming>sid-E3493781-6466-4AED-BAD2-63D115E14820</incoming>
|
<incoming>sid-E3493781-6466-4AED-BAD2-63D115E14820</incoming>
|
||||||
<incoming>sid-3B450653-1657-4247-B96E-6E3E6262BB97</incoming>
|
<incoming>sid-3B450653-1657-4247-B96E-6E3E6262BB97</incoming>
|
||||||
<outgoing>sid-0895E09C-077C-4D12-8C11-31F28CBC7740</outgoing>
|
<outgoing>sid-0895E09C-077C-4D12-8C11-31F28CBC7740</outgoing>
|
||||||
</parallelGateway>
|
</parallelGateway>
|
||||||
<sequenceFlow id="sid-F3994F51-FE54-4910-A1F4-E5895AA1A612" name="" sourceRef="sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE" targetRef="sid-349F8C0C-45EA-489C-84DD-1D944F48D778"/>
|
<sequenceFlow id="sid-F3994F51-FE54-4910-A1F4-E5895AA1A612" name="" sourceRef="sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE" targetRef="sid-349F8C0C-45EA-489C-84DD-1D944F48D778" />
|
||||||
<sequenceFlow id="sid-7E15C71B-DE9E-4788-B140-A647C99FDC94" name="" sourceRef="sid-349F8C0C-45EA-489C-84DD-1D944F48D778" targetRef="sid-57463471-693A-42A2-9EC6-6460BEDECA86"/>
|
<sequenceFlow id="sid-7E15C71B-DE9E-4788-B140-A647C99FDC94" name="" sourceRef="sid-349F8C0C-45EA-489C-84DD-1D944F48D778" targetRef="sid-57463471-693A-42A2-9EC6-6460BEDECA86" />
|
||||||
<sequenceFlow id="sid-B6E22A74-A691-453A-A789-B9F8AF787D7C" name="" sourceRef="sid-349F8C0C-45EA-489C-84DD-1D944F48D778" targetRef="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3"/>
|
<sequenceFlow id="sid-B6E22A74-A691-453A-A789-B9F8AF787D7C" name="" sourceRef="sid-349F8C0C-45EA-489C-84DD-1D944F48D778" targetRef="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3" />
|
||||||
<sequenceFlow id="sid-CAEAD081-6E73-4C98-8656-C67DA18F5140" name="" sourceRef="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3" targetRef="sid-E2054FDD-0C20-4939-938D-2169B317FEE7"/>
|
<sequenceFlow id="sid-CAEAD081-6E73-4C98-8656-C67DA18F5140" name="" sourceRef="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3" targetRef="sid-E2054FDD-0C20-4939-938D-2169B317FEE7" />
|
||||||
<sequenceFlow id="sid-3742C960-71D0-4342-8064-AF1BB9EECB42" name="No" sourceRef="sid-E2054FDD-0C20-4939-938D-2169B317FEE7" targetRef="sid-2A302E91-F89F-4913-8F55-5C3AC5FAE4D3"/>
|
<sequenceFlow id="sid-3742C960-71D0-4342-8064-AF1BB9EECB42" name="No" sourceRef="sid-E2054FDD-0C20-4939-938D-2169B317FEE7" targetRef="sid-2A302E91-F89F-4913-8F55-5C3AC5FAE4D3">
|
||||||
<sequenceFlow id="sid-9C753C3D-F964-45B0-AF57-234F910529EF" name="Yes" sourceRef="sid-E2054FDD-0C20-4939-938D-2169B317FEE7" targetRef="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5"/>
|
<conditionExpression xsi:type="tFormalExpression">choice == 'No'</conditionExpression>
|
||||||
<sequenceFlow id="sid-E3493781-6466-4AED-BAD2-63D115E14820" name="" sourceRef="sid-57463471-693A-42A2-9EC6-6460BEDECA86" targetRef="sid-D856C519-562B-46A3-B32C-9587F394BD0F"/>
|
</sequenceFlow>
|
||||||
<sequenceFlow id="sid-12F60C82-D18F-4747-B5B5-34FD40F2C8DE" name="" sourceRef="sid-2A302E91-F89F-4913-8F55-5C3AC5FAE4D3" targetRef="sid-040FCBAD-0550-4251-B799-74FCDB0DC3E2"/>
|
<sequenceFlow id="sid-9C753C3D-F964-45B0-AF57-234F910529EF" name="Yes" sourceRef="sid-E2054FDD-0C20-4939-938D-2169B317FEE7" targetRef="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5">
|
||||||
<sequenceFlow id="sid-0895E09C-077C-4D12-8C11-31F28CBC7740" name="" sourceRef="sid-D856C519-562B-46A3-B32C-9587F394BD0F" targetRef="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0"/>
|
<conditionExpression xsi:type="tFormalExpression">choice == 'Yes'</conditionExpression>
|
||||||
<sequenceFlow id="sid-40496205-24D7-494C-AB6B-CD42B8D606EF" name="" sourceRef="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0" targetRef="sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB"/>
|
</sequenceFlow>
|
||||||
<sequenceFlow id="sid-A6DA25CE-636A-46B7-8005-759577956F09" name="" sourceRef="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5" targetRef="sid-040FCBAD-0550-4251-B799-74FCDB0DC3E2"/>
|
<sequenceFlow id="sid-E3493781-6466-4AED-BAD2-63D115E14820" name="" sourceRef="sid-57463471-693A-42A2-9EC6-6460BEDECA86" targetRef="sid-D856C519-562B-46A3-B32C-9587F394BD0F" />
|
||||||
<sequenceFlow id="sid-3B450653-1657-4247-B96E-6E3E6262BB97" name="" sourceRef="sid-040FCBAD-0550-4251-B799-74FCDB0DC3E2" targetRef="sid-D856C519-562B-46A3-B32C-9587F394BD0F"/>
|
<sequenceFlow id="sid-12F60C82-D18F-4747-B5B5-34FD40F2C8DE" name="" sourceRef="sid-2A302E91-F89F-4913-8F55-5C3AC5FAE4D3" targetRef="sid-040FCBAD-0550-4251-B799-74FCDB0DC3E2" />
|
||||||
</process>
|
<sequenceFlow id="sid-0895E09C-077C-4D12-8C11-31F28CBC7740" name="" sourceRef="sid-D856C519-562B-46A3-B32C-9587F394BD0F" targetRef="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0" />
|
||||||
<bpmndi:BPMNDiagram id="sid-8e452264-f261-4e0f-bb04-953b98a69997">
|
<sequenceFlow id="sid-40496205-24D7-494C-AB6B-CD42B8D606EF" name="" sourceRef="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0" targetRef="sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB" />
|
||||||
<bpmndi:BPMNPlane bpmnElement="sid-5a474cce-f38e-40ef-8177-46451f1c0008" id="sid-2831b2c4-9485-4174-9ccc-4942ec15b903">
|
<sequenceFlow id="sid-A6DA25CE-636A-46B7-8005-759577956F09" name="" sourceRef="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5" targetRef="sid-040FCBAD-0550-4251-B799-74FCDB0DC3E2" />
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-B2E5AD50-035A-4CE8-B8A3-B175A6767B00" id="sid-B2E5AD50-035A-4CE8-B8A3-B175A6767B00_gui" isHorizontal="true">
|
<sequenceFlow id="sid-3B450653-1657-4247-B96E-6E3E6262BB97" name="" sourceRef="sid-040FCBAD-0550-4251-B799-74FCDB0DC3E2" targetRef="sid-D856C519-562B-46A3-B32C-9587F394BD0F" />
|
||||||
<omgdc:Bounds height="479.0" width="776.0" x="120.0" y="90.0"/>
|
</process>
|
||||||
</bpmndi:BPMNShape>
|
<bpmndi:BPMNDiagram id="sid-8e452264-f261-4e0f-bb04-953b98a69997">
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-72009BCE-46B4-4B4B-AEAE-1E7199522142" id="sid-72009BCE-46B4-4B4B-AEAE-1E7199522142_gui" isHorizontal="true">
|
<bpmndi:BPMNPlane id="sid-2831b2c4-9485-4174-9ccc-4942ec15b903" bpmnElement="sid-5a474cce-f38e-40ef-8177-46451f1c0008">
|
||||||
<omgdc:Bounds height="479.0" width="746.0" x="150.0" y="90.0"/>
|
<bpmndi:BPMNShape id="sid-B2E5AD50-035A-4CE8-B8A3-B175A6767B00_gui" bpmnElement="sid-B2E5AD50-035A-4CE8-B8A3-B175A6767B00" isHorizontal="true">
|
||||||
</bpmndi:BPMNShape>
|
<omgdc:Bounds x="120" y="90" width="776" height="479" />
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE" id="sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE_gui">
|
</bpmndi:BPMNShape>
|
||||||
<omgdc:Bounds height="30.0" width="30.0" x="190.0" y="122.0"/>
|
<bpmndi:BPMNShape id="sid-72009BCE-46B4-4B4B-AEAE-1E7199522142_gui" bpmnElement="sid-72009BCE-46B4-4B4B-AEAE-1E7199522142" isHorizontal="true">
|
||||||
</bpmndi:BPMNShape>
|
<omgdc:Bounds x="150" y="90" width="746" height="479" />
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-349F8C0C-45EA-489C-84DD-1D944F48D778" id="sid-349F8C0C-45EA-489C-84DD-1D944F48D778_gui">
|
</bpmndi:BPMNShape>
|
||||||
<omgdc:Bounds height="40.0" width="40.0" x="315.0" y="117.0"/>
|
<bpmndi:BPMNEdge id="sid-3B450653-1657-4247-B96E-6E3E6262BB97_gui" bpmnElement="sid-3B450653-1657-4247-B96E-6E3E6262BB97">
|
||||||
</bpmndi:BPMNShape>
|
<omgdi:waypoint x="543" y="410" />
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-57463471-693A-42A2-9EC6-6460BEDECA86" id="sid-57463471-693A-42A2-9EC6-6460BEDECA86_gui">
|
<omgdi:waypoint x="568.5" y="410.5" />
|
||||||
<omgdc:Bounds height="80.0" width="100.0" x="469.0" y="97.0"/>
|
<omgdi:waypoint x="568.5" y="368" />
|
||||||
</bpmndi:BPMNShape>
|
<omgdi:waypoint x="600" y="368" />
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3" id="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3_gui">
|
</bpmndi:BPMNEdge>
|
||||||
<omgdc:Bounds height="80.0" width="100.0" x="231.0" y="214.0"/>
|
<bpmndi:BPMNEdge id="sid-A6DA25CE-636A-46B7-8005-759577956F09_gui" bpmnElement="sid-A6DA25CE-636A-46B7-8005-759577956F09">
|
||||||
</bpmndi:BPMNShape>
|
<omgdi:waypoint x="471" y="359" />
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-E2054FDD-0C20-4939-938D-2169B317FEE7" id="sid-E2054FDD-0C20-4939-938D-2169B317FEE7_gui" isMarkerVisible="true">
|
<omgdi:waypoint x="523.5" y="359" />
|
||||||
<omgdc:Bounds height="40.0" width="40.0" x="261.0" y="339.0"/>
|
<omgdi:waypoint x="523" y="390" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5" id="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5_gui">
|
<bpmndi:BPMNEdge id="sid-40496205-24D7-494C-AB6B-CD42B8D606EF_gui" bpmnElement="sid-40496205-24D7-494C-AB6B-CD42B8D606EF">
|
||||||
<omgdc:Bounds height="80.0" width="100.0" x="371.0" y="319.0"/>
|
<omgdi:waypoint x="728" y="408" />
|
||||||
</bpmndi:BPMNShape>
|
<omgdi:waypoint x="728" y="448" />
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-2A302E91-F89F-4913-8F55-5C3AC5FAE4D3" id="sid-2A302E91-F89F-4913-8F55-5C3AC5FAE4D3_gui">
|
</bpmndi:BPMNEdge>
|
||||||
<omgdc:Bounds height="80.0" width="100.0" x="231.0" y="437.0"/>
|
<bpmndi:BPMNEdge id="sid-0895E09C-077C-4D12-8C11-31F28CBC7740_gui" bpmnElement="sid-0895E09C-077C-4D12-8C11-31F28CBC7740">
|
||||||
</bpmndi:BPMNShape>
|
<omgdi:waypoint x="640" y="368" />
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0" id="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0_gui">
|
<omgdi:waypoint x="678" y="368" />
|
||||||
<omgdc:Bounds height="80.0" width="100.0" x="678.0" y="328.0"/>
|
</bpmndi:BPMNEdge>
|
||||||
</bpmndi:BPMNShape>
|
<bpmndi:BPMNEdge id="sid-12F60C82-D18F-4747-B5B5-34FD40F2C8DE_gui" bpmnElement="sid-12F60C82-D18F-4747-B5B5-34FD40F2C8DE">
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB" id="sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB_gui">
|
<omgdi:waypoint x="331" y="477" />
|
||||||
<omgdc:Bounds height="28.0" width="28.0" x="714.0" y="448.0"/>
|
<omgdi:waypoint x="523.5" y="477" />
|
||||||
</bpmndi:BPMNShape>
|
<omgdi:waypoint x="523" y="430" />
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-040FCBAD-0550-4251-B799-74FCDB0DC3E2" id="sid-040FCBAD-0550-4251-B799-74FCDB0DC3E2_gui" isMarkerVisible="true">
|
</bpmndi:BPMNEdge>
|
||||||
<omgdc:Bounds height="40.0" width="40.0" x="503.0" y="390.0"/>
|
<bpmndi:BPMNEdge id="sid-E3493781-6466-4AED-BAD2-63D115E14820_gui" bpmnElement="sid-E3493781-6466-4AED-BAD2-63D115E14820">
|
||||||
</bpmndi:BPMNShape>
|
<omgdi:waypoint x="569" y="137" />
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-D856C519-562B-46A3-B32C-9587F394BD0F" id="sid-D856C519-562B-46A3-B32C-9587F394BD0F_gui">
|
<omgdi:waypoint x="630" y="137" />
|
||||||
<omgdc:Bounds height="40.0" width="40.0" x="600.0" y="348.0"/>
|
<omgdi:waypoint x="620" y="348" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-7E15C71B-DE9E-4788-B140-A647C99FDC94" id="sid-7E15C71B-DE9E-4788-B140-A647C99FDC94_gui">
|
<bpmndi:BPMNEdge id="sid-9C753C3D-F964-45B0-AF57-234F910529EF_gui" bpmnElement="sid-9C753C3D-F964-45B0-AF57-234F910529EF">
|
||||||
<omgdi:waypoint x="355.0" y="137.0"/>
|
<omgdi:waypoint x="301" y="359" />
|
||||||
<omgdi:waypoint x="469.0" y="137.0"/>
|
<omgdi:waypoint x="371" y="359" />
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-12F60C82-D18F-4747-B5B5-34FD40F2C8DE" id="sid-12F60C82-D18F-4747-B5B5-34FD40F2C8DE_gui">
|
<bpmndi:BPMNEdge id="sid-3742C960-71D0-4342-8064-AF1BB9EECB42_gui" bpmnElement="sid-3742C960-71D0-4342-8064-AF1BB9EECB42">
|
||||||
<omgdi:waypoint x="331.0" y="477.0"/>
|
<omgdi:waypoint x="281" y="379" />
|
||||||
<omgdi:waypoint x="523.5" y="477.0"/>
|
<omgdi:waypoint x="281" y="437" />
|
||||||
<omgdi:waypoint x="523.0" y="430.0"/>
|
</bpmndi:BPMNEdge>
|
||||||
</bpmndi:BPMNEdge>
|
<bpmndi:BPMNEdge id="sid-CAEAD081-6E73-4C98-8656-C67DA18F5140_gui" bpmnElement="sid-CAEAD081-6E73-4C98-8656-C67DA18F5140">
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-40496205-24D7-494C-AB6B-CD42B8D606EF" id="sid-40496205-24D7-494C-AB6B-CD42B8D606EF_gui">
|
<omgdi:waypoint x="281" y="294" />
|
||||||
<omgdi:waypoint x="728.0" y="408.0"/>
|
<omgdi:waypoint x="281" y="339" />
|
||||||
<omgdi:waypoint x="728.0" y="448.0"/>
|
</bpmndi:BPMNEdge>
|
||||||
</bpmndi:BPMNEdge>
|
<bpmndi:BPMNEdge id="sid-B6E22A74-A691-453A-A789-B9F8AF787D7C_gui" bpmnElement="sid-B6E22A74-A691-453A-A789-B9F8AF787D7C">
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-F3994F51-FE54-4910-A1F4-E5895AA1A612" id="sid-F3994F51-FE54-4910-A1F4-E5895AA1A612_gui">
|
<omgdi:waypoint x="335" y="157" />
|
||||||
<omgdi:waypoint x="220.0" y="137.0"/>
|
<omgdi:waypoint x="335.5" y="185.5" />
|
||||||
<omgdi:waypoint x="315.0" y="137.0"/>
|
<omgdi:waypoint x="281" y="185.5" />
|
||||||
</bpmndi:BPMNEdge>
|
<omgdi:waypoint x="281" y="214" />
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-B6E22A74-A691-453A-A789-B9F8AF787D7C" id="sid-B6E22A74-A691-453A-A789-B9F8AF787D7C_gui">
|
</bpmndi:BPMNEdge>
|
||||||
<omgdi:waypoint x="335.0" y="157.0"/>
|
<bpmndi:BPMNEdge id="sid-7E15C71B-DE9E-4788-B140-A647C99FDC94_gui" bpmnElement="sid-7E15C71B-DE9E-4788-B140-A647C99FDC94">
|
||||||
<omgdi:waypoint x="335.5" y="185.5"/>
|
<omgdi:waypoint x="355" y="137" />
|
||||||
<omgdi:waypoint x="281.0" y="185.5"/>
|
<omgdi:waypoint x="469" y="137" />
|
||||||
<omgdi:waypoint x="281.0" y="214.0"/>
|
</bpmndi:BPMNEdge>
|
||||||
</bpmndi:BPMNEdge>
|
<bpmndi:BPMNEdge id="sid-F3994F51-FE54-4910-A1F4-E5895AA1A612_gui" bpmnElement="sid-F3994F51-FE54-4910-A1F4-E5895AA1A612">
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-E3493781-6466-4AED-BAD2-63D115E14820" id="sid-E3493781-6466-4AED-BAD2-63D115E14820_gui">
|
<omgdi:waypoint x="220" y="137" />
|
||||||
<omgdi:waypoint x="569.0" y="137.0"/>
|
<omgdi:waypoint x="315" y="137" />
|
||||||
<omgdi:waypoint x="630.0" y="137.0"/>
|
</bpmndi:BPMNEdge>
|
||||||
<omgdi:waypoint x="620.0" y="348.0"/>
|
<bpmndi:BPMNShape id="sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE_gui" bpmnElement="sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE">
|
||||||
</bpmndi:BPMNEdge>
|
<omgdc:Bounds x="190" y="122" width="30" height="30" />
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-9C753C3D-F964-45B0-AF57-234F910529EF" id="sid-9C753C3D-F964-45B0-AF57-234F910529EF_gui">
|
</bpmndi:BPMNShape>
|
||||||
<omgdi:waypoint x="301.0" y="359.0"/>
|
<bpmndi:BPMNShape id="sid-349F8C0C-45EA-489C-84DD-1D944F48D778_gui" bpmnElement="sid-349F8C0C-45EA-489C-84DD-1D944F48D778">
|
||||||
<omgdi:waypoint x="371.0" y="359.0"/>
|
<omgdc:Bounds x="315" y="117" width="40" height="40" />
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-CAEAD081-6E73-4C98-8656-C67DA18F5140" id="sid-CAEAD081-6E73-4C98-8656-C67DA18F5140_gui">
|
<bpmndi:BPMNShape id="sid-57463471-693A-42A2-9EC6-6460BEDECA86_gui" bpmnElement="sid-57463471-693A-42A2-9EC6-6460BEDECA86">
|
||||||
<omgdi:waypoint x="281.0" y="294.0"/>
|
<omgdc:Bounds x="469" y="97" width="100" height="80" />
|
||||||
<omgdi:waypoint x="281.0" y="339.0"/>
|
</bpmndi:BPMNShape>
|
||||||
</bpmndi:BPMNEdge>
|
<bpmndi:BPMNShape id="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3_gui" bpmnElement="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3">
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-A6DA25CE-636A-46B7-8005-759577956F09" id="sid-A6DA25CE-636A-46B7-8005-759577956F09_gui">
|
<omgdc:Bounds x="231" y="214" width="100" height="80" />
|
||||||
<omgdi:waypoint x="471.0" y="359.0"/>
|
</bpmndi:BPMNShape>
|
||||||
<omgdi:waypoint x="523.5" y="359.0"/>
|
<bpmndi:BPMNShape id="sid-E2054FDD-0C20-4939-938D-2169B317FEE7_gui" bpmnElement="sid-E2054FDD-0C20-4939-938D-2169B317FEE7" isMarkerVisible="true">
|
||||||
<omgdi:waypoint x="523.0" y="390.0"/>
|
<omgdc:Bounds x="261" y="339" width="40" height="40" />
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-3B450653-1657-4247-B96E-6E3E6262BB97" id="sid-3B450653-1657-4247-B96E-6E3E6262BB97_gui">
|
<bpmndi:BPMNShape id="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5_gui" bpmnElement="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5">
|
||||||
<omgdi:waypoint x="543.0" y="410.0"/>
|
<omgdc:Bounds x="371" y="319" width="100" height="80" />
|
||||||
<omgdi:waypoint x="568.5" y="410.5"/>
|
</bpmndi:BPMNShape>
|
||||||
<omgdi:waypoint x="568.5" y="368.0"/>
|
<bpmndi:BPMNShape id="sid-2A302E91-F89F-4913-8F55-5C3AC5FAE4D3_gui" bpmnElement="sid-2A302E91-F89F-4913-8F55-5C3AC5FAE4D3">
|
||||||
<omgdi:waypoint x="600.0" y="368.0"/>
|
<omgdc:Bounds x="231" y="437" width="100" height="80" />
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-3742C960-71D0-4342-8064-AF1BB9EECB42" id="sid-3742C960-71D0-4342-8064-AF1BB9EECB42_gui">
|
<bpmndi:BPMNShape id="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0_gui" bpmnElement="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0">
|
||||||
<omgdi:waypoint x="281.0" y="379.0"/>
|
<omgdc:Bounds x="678" y="328" width="100" height="80" />
|
||||||
<omgdi:waypoint x="281.0" y="437.0"/>
|
</bpmndi:BPMNShape>
|
||||||
</bpmndi:BPMNEdge>
|
<bpmndi:BPMNShape id="sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB_gui" bpmnElement="sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB">
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-0895E09C-077C-4D12-8C11-31F28CBC7740" id="sid-0895E09C-077C-4D12-8C11-31F28CBC7740_gui">
|
<omgdc:Bounds x="714" y="448" width="28" height="28" />
|
||||||
<omgdi:waypoint x="640.0" y="368.0"/>
|
</bpmndi:BPMNShape>
|
||||||
<omgdi:waypoint x="678.0" y="368.0"/>
|
<bpmndi:BPMNShape id="sid-040FCBAD-0550-4251-B799-74FCDB0DC3E2_gui" bpmnElement="sid-040FCBAD-0550-4251-B799-74FCDB0DC3E2" isMarkerVisible="true">
|
||||||
</bpmndi:BPMNEdge>
|
<omgdc:Bounds x="503" y="390" width="40" height="40" />
|
||||||
</bpmndi:BPMNPlane>
|
</bpmndi:BPMNShape>
|
||||||
</bpmndi:BPMNDiagram>
|
<bpmndi:BPMNShape id="sid-D856C519-562B-46A3-B32C-9587F394BD0F_gui" bpmnElement="sid-D856C519-562B-46A3-B32C-9587F394BD0F">
|
||||||
|
<omgdc:Bounds x="600" y="348" width="40" height="40" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
</bpmndi:BPMNPlane>
|
||||||
|
</bpmndi:BPMNDiagram>
|
||||||
</definitions>
|
</definitions>
|
||||||
|
|
|
@ -1,202 +1,206 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" xmlns:signavio="http://www.signavio.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" exporter="Signavio Process Editor, http://www.signavio.com" exporterVersion="" expressionLanguage="http://www.w3.org/1999/XPath" id="sid-2ed227c3-91bf-49c2-983f-0712464fa6d4" targetNamespace="http://www.signavio.com/bpmn20" typeLanguage="http://www.w3.org/2001/XMLSchema" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL http://www.omg.org/spec/BPMN/2.0/20100501/BPMN20.xsd">
|
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:signavio="http://www.signavio.com" id="sid-2ed227c3-91bf-49c2-983f-0712464fa6d4" targetNamespace="http://www.signavio.com/bpmn20" exporter="Camunda Modeler" exporterVersion="4.11.1" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL http://www.omg.org/spec/BPMN/2.0/20100501/BPMN20.xsd">
|
||||||
<collaboration id="sid-6b109fe2-498a-4dd3-a372-4ad57a3e03b8">
|
<collaboration id="sid-6b109fe2-498a-4dd3-a372-4ad57a3e03b8">
|
||||||
<participant id="sid-B2E5AD50-035A-4CE8-B8A3-B175A6767B00" name="Parallel Then Exclusive" processRef="sid-bb9ea2d5-58b6-43c7-8e77-6e28f71106f0">
|
<participant id="sid-B2E5AD50-035A-4CE8-B8A3-B175A6767B00" name="Parallel Then Exclusive" processRef="sid-bb9ea2d5-58b6-43c7-8e77-6e28f71106f0">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
</participant>
|
</participant>
|
||||||
</collaboration>
|
</collaboration>
|
||||||
<process id="sid-bb9ea2d5-58b6-43c7-8e77-6e28f71106f0" isClosed="false" isExecutable="false" name="Parallel Then Exclusive" processType="None">
|
<process id="sid-bb9ea2d5-58b6-43c7-8e77-6e28f71106f0" name="Parallel Then Exclusive" processType="None" isClosed="false" isExecutable="false">
|
||||||
<laneSet id="sid-97ba594c-117d-496d-bcbf-0287c7af58d8">
|
<laneSet id="sid-97ba594c-117d-496d-bcbf-0287c7af58d8">
|
||||||
<lane id="sid-72009BCE-46B4-4B4B-AEAE-1E7199522142" name="Tester">
|
<lane id="sid-72009BCE-46B4-4B4B-AEAE-1E7199522142" name="Tester">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue=""/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<flowNodeRef>sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE</flowNodeRef>
|
<flowNodeRef>sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE</flowNodeRef>
|
||||||
<flowNodeRef>sid-349F8C0C-45EA-489C-84DD-1D944F48D778</flowNodeRef>
|
<flowNodeRef>sid-349F8C0C-45EA-489C-84DD-1D944F48D778</flowNodeRef>
|
||||||
<flowNodeRef>sid-57463471-693A-42A2-9EC6-6460BEDECA86</flowNodeRef>
|
<flowNodeRef>sid-57463471-693A-42A2-9EC6-6460BEDECA86</flowNodeRef>
|
||||||
<flowNodeRef>sid-CA089240-802A-4C32-9130-FB1A33DDCCC3</flowNodeRef>
|
<flowNodeRef>sid-CA089240-802A-4C32-9130-FB1A33DDCCC3</flowNodeRef>
|
||||||
<flowNodeRef>sid-E2054FDD-0C20-4939-938D-2169B317FEE7</flowNodeRef>
|
<flowNodeRef>sid-E2054FDD-0C20-4939-938D-2169B317FEE7</flowNodeRef>
|
||||||
<flowNodeRef>sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5</flowNodeRef>
|
<flowNodeRef>sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5</flowNodeRef>
|
||||||
<flowNodeRef>sid-2A302E91-F89F-4913-8F55-5C3AC5FAE4D3</flowNodeRef>
|
<flowNodeRef>sid-2A302E91-F89F-4913-8F55-5C3AC5FAE4D3</flowNodeRef>
|
||||||
<flowNodeRef>sid-F3A979E3-F586-4807-8223-1FAB5A5647B0</flowNodeRef>
|
<flowNodeRef>sid-F3A979E3-F586-4807-8223-1FAB5A5647B0</flowNodeRef>
|
||||||
<flowNodeRef>sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB</flowNodeRef>
|
<flowNodeRef>sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB</flowNodeRef>
|
||||||
<flowNodeRef>sid-EBB511F3-5AD5-4307-9B9B-85C17F8889D5</flowNodeRef>
|
<flowNodeRef>sid-EBB511F3-5AD5-4307-9B9B-85C17F8889D5</flowNodeRef>
|
||||||
</lane>
|
</lane>
|
||||||
</laneSet>
|
</laneSet>
|
||||||
<startEvent id="sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE" name="">
|
<startEvent id="sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE" name="">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<outgoing>sid-F3994F51-FE54-4910-A1F4-E5895AA1A612</outgoing>
|
<outgoing>sid-F3994F51-FE54-4910-A1F4-E5895AA1A612</outgoing>
|
||||||
</startEvent>
|
</startEvent>
|
||||||
<parallelGateway gatewayDirection="Diverging" id="sid-349F8C0C-45EA-489C-84DD-1D944F48D778" name="">
|
<parallelGateway id="sid-349F8C0C-45EA-489C-84DD-1D944F48D778" name="" gatewayDirection="Diverging">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<incoming>sid-F3994F51-FE54-4910-A1F4-E5895AA1A612</incoming>
|
<incoming>sid-F3994F51-FE54-4910-A1F4-E5895AA1A612</incoming>
|
||||||
<outgoing>sid-7E15C71B-DE9E-4788-B140-A647C99FDC94</outgoing>
|
<outgoing>sid-7E15C71B-DE9E-4788-B140-A647C99FDC94</outgoing>
|
||||||
<outgoing>sid-B6E22A74-A691-453A-A789-B9F8AF787D7C</outgoing>
|
<outgoing>sid-B6E22A74-A691-453A-A789-B9F8AF787D7C</outgoing>
|
||||||
</parallelGateway>
|
</parallelGateway>
|
||||||
<task completionQuantity="1" id="sid-57463471-693A-42A2-9EC6-6460BEDECA86" isForCompensation="false" name="Parallel Task" startQuantity="1">
|
<task id="sid-57463471-693A-42A2-9EC6-6460BEDECA86" name="Parallel Task">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffcc"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffcc" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<incoming>sid-7E15C71B-DE9E-4788-B140-A647C99FDC94</incoming>
|
<incoming>sid-7E15C71B-DE9E-4788-B140-A647C99FDC94</incoming>
|
||||||
<outgoing>sid-E3493781-6466-4AED-BAD2-63D115E14820</outgoing>
|
<outgoing>sid-E3493781-6466-4AED-BAD2-63D115E14820</outgoing>
|
||||||
</task>
|
</task>
|
||||||
<task completionQuantity="1" id="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3" isForCompensation="false" name="Choice 1" startQuantity="1">
|
<task id="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3" name="Choice 1">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffcc"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffcc" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<incoming>sid-B6E22A74-A691-453A-A789-B9F8AF787D7C</incoming>
|
<incoming>sid-B6E22A74-A691-453A-A789-B9F8AF787D7C</incoming>
|
||||||
<outgoing>sid-CAEAD081-6E73-4C98-8656-C67DA18F5140</outgoing>
|
<outgoing>sid-CAEAD081-6E73-4C98-8656-C67DA18F5140</outgoing>
|
||||||
</task>
|
</task>
|
||||||
<exclusiveGateway gatewayDirection="Diverging" id="sid-E2054FDD-0C20-4939-938D-2169B317FEE7" name="">
|
<exclusiveGateway id="sid-E2054FDD-0C20-4939-938D-2169B317FEE7" name="" gatewayDirection="Diverging">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<incoming>sid-CAEAD081-6E73-4C98-8656-C67DA18F5140</incoming>
|
<incoming>sid-CAEAD081-6E73-4C98-8656-C67DA18F5140</incoming>
|
||||||
<outgoing>sid-3742C960-71D0-4342-8064-AF1BB9EECB42</outgoing>
|
<outgoing>sid-3742C960-71D0-4342-8064-AF1BB9EECB42</outgoing>
|
||||||
<outgoing>sid-9C753C3D-F964-45B0-AF57-234F910529EF</outgoing>
|
<outgoing>sid-9C753C3D-F964-45B0-AF57-234F910529EF</outgoing>
|
||||||
</exclusiveGateway>
|
</exclusiveGateway>
|
||||||
<task completionQuantity="1" id="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5" isForCompensation="false" name="Yes Task" startQuantity="1">
|
<task id="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5" name="Yes Task">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffcc"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffcc" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<incoming>sid-9C753C3D-F964-45B0-AF57-234F910529EF</incoming>
|
<incoming>sid-9C753C3D-F964-45B0-AF57-234F910529EF</incoming>
|
||||||
<outgoing>sid-A6DA25CE-636A-46B7-8005-759577956F09</outgoing>
|
<outgoing>sid-A6DA25CE-636A-46B7-8005-759577956F09</outgoing>
|
||||||
</task>
|
</task>
|
||||||
<task completionQuantity="1" id="sid-2A302E91-F89F-4913-8F55-5C3AC5FAE4D3" isForCompensation="false" name="No Task" startQuantity="1">
|
<task id="sid-2A302E91-F89F-4913-8F55-5C3AC5FAE4D3" name="No Task">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffcc"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffcc" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<incoming>sid-3742C960-71D0-4342-8064-AF1BB9EECB42</incoming>
|
<incoming>sid-3742C960-71D0-4342-8064-AF1BB9EECB42</incoming>
|
||||||
<outgoing>sid-12F60C82-D18F-4747-B5B5-34FD40F2C8DE</outgoing>
|
<outgoing>sid-12F60C82-D18F-4747-B5B5-34FD40F2C8DE</outgoing>
|
||||||
</task>
|
</task>
|
||||||
<task completionQuantity="1" id="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0" isForCompensation="false" name="Done" startQuantity="1">
|
<task id="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0" name="Done">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffcc"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffcc" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<incoming>sid-0895E09C-077C-4D12-8C11-31F28CBC7740</incoming>
|
<incoming>sid-0895E09C-077C-4D12-8C11-31F28CBC7740</incoming>
|
||||||
<outgoing>sid-40496205-24D7-494C-AB6B-CD42B8D606EF</outgoing>
|
<outgoing>sid-40496205-24D7-494C-AB6B-CD42B8D606EF</outgoing>
|
||||||
</task>
|
</task>
|
||||||
<endEvent id="sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB" name="">
|
<endEvent id="sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB" name="">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<incoming>sid-40496205-24D7-494C-AB6B-CD42B8D606EF</incoming>
|
<incoming>sid-40496205-24D7-494C-AB6B-CD42B8D606EF</incoming>
|
||||||
</endEvent>
|
</endEvent>
|
||||||
<inclusiveGateway gatewayDirection="Converging" id="sid-EBB511F3-5AD5-4307-9B9B-85C17F8889D5" name="">
|
<inclusiveGateway id="sid-EBB511F3-5AD5-4307-9B9B-85C17F8889D5" name="" gatewayDirection="Converging" default="sid-0895E09C-077C-4D12-8C11-31F28CBC7740">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<incoming>sid-E3493781-6466-4AED-BAD2-63D115E14820</incoming>
|
<incoming>sid-E3493781-6466-4AED-BAD2-63D115E14820</incoming>
|
||||||
<incoming>sid-12F60C82-D18F-4747-B5B5-34FD40F2C8DE</incoming>
|
<incoming>sid-12F60C82-D18F-4747-B5B5-34FD40F2C8DE</incoming>
|
||||||
<incoming>sid-A6DA25CE-636A-46B7-8005-759577956F09</incoming>
|
<incoming>sid-A6DA25CE-636A-46B7-8005-759577956F09</incoming>
|
||||||
<outgoing>sid-0895E09C-077C-4D12-8C11-31F28CBC7740</outgoing>
|
<outgoing>sid-0895E09C-077C-4D12-8C11-31F28CBC7740</outgoing>
|
||||||
</inclusiveGateway>
|
</inclusiveGateway>
|
||||||
<sequenceFlow id="sid-F3994F51-FE54-4910-A1F4-E5895AA1A612" name="" sourceRef="sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE" targetRef="sid-349F8C0C-45EA-489C-84DD-1D944F48D778"/>
|
<sequenceFlow id="sid-F3994F51-FE54-4910-A1F4-E5895AA1A612" name="" sourceRef="sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE" targetRef="sid-349F8C0C-45EA-489C-84DD-1D944F48D778" />
|
||||||
<sequenceFlow id="sid-7E15C71B-DE9E-4788-B140-A647C99FDC94" name="" sourceRef="sid-349F8C0C-45EA-489C-84DD-1D944F48D778" targetRef="sid-57463471-693A-42A2-9EC6-6460BEDECA86"/>
|
<sequenceFlow id="sid-7E15C71B-DE9E-4788-B140-A647C99FDC94" name="" sourceRef="sid-349F8C0C-45EA-489C-84DD-1D944F48D778" targetRef="sid-57463471-693A-42A2-9EC6-6460BEDECA86" />
|
||||||
<sequenceFlow id="sid-B6E22A74-A691-453A-A789-B9F8AF787D7C" name="" sourceRef="sid-349F8C0C-45EA-489C-84DD-1D944F48D778" targetRef="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3"/>
|
<sequenceFlow id="sid-B6E22A74-A691-453A-A789-B9F8AF787D7C" name="" sourceRef="sid-349F8C0C-45EA-489C-84DD-1D944F48D778" targetRef="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3" />
|
||||||
<sequenceFlow id="sid-CAEAD081-6E73-4C98-8656-C67DA18F5140" name="" sourceRef="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3" targetRef="sid-E2054FDD-0C20-4939-938D-2169B317FEE7"/>
|
<sequenceFlow id="sid-CAEAD081-6E73-4C98-8656-C67DA18F5140" name="" sourceRef="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3" targetRef="sid-E2054FDD-0C20-4939-938D-2169B317FEE7" />
|
||||||
<sequenceFlow id="sid-3742C960-71D0-4342-8064-AF1BB9EECB42" name="No" sourceRef="sid-E2054FDD-0C20-4939-938D-2169B317FEE7" targetRef="sid-2A302E91-F89F-4913-8F55-5C3AC5FAE4D3"/>
|
<sequenceFlow id="sid-3742C960-71D0-4342-8064-AF1BB9EECB42" name="No" sourceRef="sid-E2054FDD-0C20-4939-938D-2169B317FEE7" targetRef="sid-2A302E91-F89F-4913-8F55-5C3AC5FAE4D3">
|
||||||
<sequenceFlow id="sid-9C753C3D-F964-45B0-AF57-234F910529EF" name="Yes" sourceRef="sid-E2054FDD-0C20-4939-938D-2169B317FEE7" targetRef="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5"/>
|
<conditionExpression xsi:type="tFormalExpression">choice == 'No'</conditionExpression>
|
||||||
<sequenceFlow id="sid-E3493781-6466-4AED-BAD2-63D115E14820" name="" sourceRef="sid-57463471-693A-42A2-9EC6-6460BEDECA86" targetRef="sid-EBB511F3-5AD5-4307-9B9B-85C17F8889D5"/>
|
</sequenceFlow>
|
||||||
<sequenceFlow id="sid-12F60C82-D18F-4747-B5B5-34FD40F2C8DE" name="" sourceRef="sid-2A302E91-F89F-4913-8F55-5C3AC5FAE4D3" targetRef="sid-EBB511F3-5AD5-4307-9B9B-85C17F8889D5"/>
|
<sequenceFlow id="sid-9C753C3D-F964-45B0-AF57-234F910529EF" name="Yes" sourceRef="sid-E2054FDD-0C20-4939-938D-2169B317FEE7" targetRef="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5">
|
||||||
<sequenceFlow id="sid-0895E09C-077C-4D12-8C11-31F28CBC7740" name="" sourceRef="sid-EBB511F3-5AD5-4307-9B9B-85C17F8889D5" targetRef="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0"/>
|
<conditionExpression xsi:type="tFormalExpression">choice == 'Yes'</conditionExpression>
|
||||||
<sequenceFlow id="sid-40496205-24D7-494C-AB6B-CD42B8D606EF" name="" sourceRef="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0" targetRef="sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB"/>
|
</sequenceFlow>
|
||||||
<sequenceFlow id="sid-A6DA25CE-636A-46B7-8005-759577956F09" name="" sourceRef="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5" targetRef="sid-EBB511F3-5AD5-4307-9B9B-85C17F8889D5"/>
|
<sequenceFlow id="sid-E3493781-6466-4AED-BAD2-63D115E14820" name="" sourceRef="sid-57463471-693A-42A2-9EC6-6460BEDECA86" targetRef="sid-EBB511F3-5AD5-4307-9B9B-85C17F8889D5" />
|
||||||
</process>
|
<sequenceFlow id="sid-12F60C82-D18F-4747-B5B5-34FD40F2C8DE" name="" sourceRef="sid-2A302E91-F89F-4913-8F55-5C3AC5FAE4D3" targetRef="sid-EBB511F3-5AD5-4307-9B9B-85C17F8889D5" />
|
||||||
<bpmndi:BPMNDiagram id="sid-70742719-bbc1-49e7-aa4e-ad7ae1df57a8">
|
<sequenceFlow id="sid-0895E09C-077C-4D12-8C11-31F28CBC7740" name="" sourceRef="sid-EBB511F3-5AD5-4307-9B9B-85C17F8889D5" targetRef="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0" />
|
||||||
<bpmndi:BPMNPlane bpmnElement="sid-6b109fe2-498a-4dd3-a372-4ad57a3e03b8" id="sid-17cf042c-b181-4b41-ac37-d9559cd9c89f">
|
<sequenceFlow id="sid-40496205-24D7-494C-AB6B-CD42B8D606EF" name="" sourceRef="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0" targetRef="sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB" />
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-B2E5AD50-035A-4CE8-B8A3-B175A6767B00" id="sid-B2E5AD50-035A-4CE8-B8A3-B175A6767B00_gui" isHorizontal="true">
|
<sequenceFlow id="sid-A6DA25CE-636A-46B7-8005-759577956F09" name="" sourceRef="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5" targetRef="sid-EBB511F3-5AD5-4307-9B9B-85C17F8889D5" />
|
||||||
<omgdc:Bounds height="479.0" width="776.0" x="120.0" y="90.0"/>
|
</process>
|
||||||
</bpmndi:BPMNShape>
|
<bpmndi:BPMNDiagram id="sid-70742719-bbc1-49e7-aa4e-ad7ae1df57a8">
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-72009BCE-46B4-4B4B-AEAE-1E7199522142" id="sid-72009BCE-46B4-4B4B-AEAE-1E7199522142_gui" isHorizontal="true">
|
<bpmndi:BPMNPlane id="sid-17cf042c-b181-4b41-ac37-d9559cd9c89f" bpmnElement="sid-6b109fe2-498a-4dd3-a372-4ad57a3e03b8">
|
||||||
<omgdc:Bounds height="479.0" width="746.0" x="150.0" y="90.0"/>
|
<bpmndi:BPMNShape id="sid-B2E5AD50-035A-4CE8-B8A3-B175A6767B00_gui" bpmnElement="sid-B2E5AD50-035A-4CE8-B8A3-B175A6767B00" isHorizontal="true">
|
||||||
</bpmndi:BPMNShape>
|
<omgdc:Bounds x="120" y="90" width="776" height="479" />
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE" id="sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE_gui">
|
</bpmndi:BPMNShape>
|
||||||
<omgdc:Bounds height="30.0" width="30.0" x="190.0" y="122.0"/>
|
<bpmndi:BPMNShape id="sid-72009BCE-46B4-4B4B-AEAE-1E7199522142_gui" bpmnElement="sid-72009BCE-46B4-4B4B-AEAE-1E7199522142" isHorizontal="true">
|
||||||
</bpmndi:BPMNShape>
|
<omgdc:Bounds x="150" y="90" width="746" height="479" />
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-349F8C0C-45EA-489C-84DD-1D944F48D778" id="sid-349F8C0C-45EA-489C-84DD-1D944F48D778_gui">
|
</bpmndi:BPMNShape>
|
||||||
<omgdc:Bounds height="40.0" width="40.0" x="315.0" y="117.0"/>
|
<bpmndi:BPMNEdge id="sid-A6DA25CE-636A-46B7-8005-759577956F09_gui" bpmnElement="sid-A6DA25CE-636A-46B7-8005-759577956F09">
|
||||||
</bpmndi:BPMNShape>
|
<omgdi:waypoint x="471" y="359" />
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-57463471-693A-42A2-9EC6-6460BEDECA86" id="sid-57463471-693A-42A2-9EC6-6460BEDECA86_gui">
|
<omgdi:waypoint x="535.5" y="359" />
|
||||||
<omgdc:Bounds height="80.0" width="100.0" x="469.0" y="97.0"/>
|
<omgdi:waypoint x="535.5" y="368.5" />
|
||||||
</bpmndi:BPMNShape>
|
<omgdi:waypoint x="600" y="368" />
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3" id="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3_gui">
|
</bpmndi:BPMNEdge>
|
||||||
<omgdc:Bounds height="80.0" width="100.0" x="231.0" y="214.0"/>
|
<bpmndi:BPMNEdge id="sid-40496205-24D7-494C-AB6B-CD42B8D606EF_gui" bpmnElement="sid-40496205-24D7-494C-AB6B-CD42B8D606EF">
|
||||||
</bpmndi:BPMNShape>
|
<omgdi:waypoint x="728" y="408" />
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-E2054FDD-0C20-4939-938D-2169B317FEE7" id="sid-E2054FDD-0C20-4939-938D-2169B317FEE7_gui" isMarkerVisible="true">
|
<omgdi:waypoint x="728" y="448" />
|
||||||
<omgdc:Bounds height="40.0" width="40.0" x="261.0" y="339.0"/>
|
</bpmndi:BPMNEdge>
|
||||||
</bpmndi:BPMNShape>
|
<bpmndi:BPMNEdge id="sid-0895E09C-077C-4D12-8C11-31F28CBC7740_gui" bpmnElement="sid-0895E09C-077C-4D12-8C11-31F28CBC7740">
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5" id="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5_gui">
|
<omgdi:waypoint x="640" y="368" />
|
||||||
<omgdc:Bounds height="80.0" width="100.0" x="371.0" y="319.0"/>
|
<omgdi:waypoint x="678" y="368" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-2A302E91-F89F-4913-8F55-5C3AC5FAE4D3" id="sid-2A302E91-F89F-4913-8F55-5C3AC5FAE4D3_gui">
|
<bpmndi:BPMNEdge id="sid-12F60C82-D18F-4747-B5B5-34FD40F2C8DE_gui" bpmnElement="sid-12F60C82-D18F-4747-B5B5-34FD40F2C8DE">
|
||||||
<omgdc:Bounds height="80.0" width="100.0" x="231.0" y="437.0"/>
|
<omgdi:waypoint x="331" y="477" />
|
||||||
</bpmndi:BPMNShape>
|
<omgdi:waypoint x="630" y="477" />
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0" id="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0_gui">
|
<omgdi:waypoint x="621" y="388" />
|
||||||
<omgdc:Bounds height="80.0" width="100.0" x="678.0" y="328.0"/>
|
</bpmndi:BPMNEdge>
|
||||||
</bpmndi:BPMNShape>
|
<bpmndi:BPMNEdge id="sid-E3493781-6466-4AED-BAD2-63D115E14820_gui" bpmnElement="sid-E3493781-6466-4AED-BAD2-63D115E14820">
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB" id="sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB_gui">
|
<omgdi:waypoint x="569" y="137" />
|
||||||
<omgdc:Bounds height="28.0" width="28.0" x="714.0" y="448.0"/>
|
<omgdi:waypoint x="630" y="137" />
|
||||||
</bpmndi:BPMNShape>
|
<omgdi:waypoint x="620" y="348" />
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-EBB511F3-5AD5-4307-9B9B-85C17F8889D5" id="sid-EBB511F3-5AD5-4307-9B9B-85C17F8889D5_gui">
|
</bpmndi:BPMNEdge>
|
||||||
<omgdc:Bounds height="40.0" width="40.0" x="600.0" y="348.0"/>
|
<bpmndi:BPMNEdge id="sid-9C753C3D-F964-45B0-AF57-234F910529EF_gui" bpmnElement="sid-9C753C3D-F964-45B0-AF57-234F910529EF">
|
||||||
</bpmndi:BPMNShape>
|
<omgdi:waypoint x="301" y="359" />
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-9C753C3D-F964-45B0-AF57-234F910529EF" id="sid-9C753C3D-F964-45B0-AF57-234F910529EF_gui">
|
<omgdi:waypoint x="371" y="359" />
|
||||||
<omgdi:waypoint x="301.0" y="359.0"/>
|
</bpmndi:BPMNEdge>
|
||||||
<omgdi:waypoint x="371.0" y="359.0"/>
|
<bpmndi:BPMNEdge id="sid-3742C960-71D0-4342-8064-AF1BB9EECB42_gui" bpmnElement="sid-3742C960-71D0-4342-8064-AF1BB9EECB42">
|
||||||
</bpmndi:BPMNEdge>
|
<omgdi:waypoint x="281" y="379" />
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-7E15C71B-DE9E-4788-B140-A647C99FDC94" id="sid-7E15C71B-DE9E-4788-B140-A647C99FDC94_gui">
|
<omgdi:waypoint x="281" y="437" />
|
||||||
<omgdi:waypoint x="355.0" y="137.0"/>
|
</bpmndi:BPMNEdge>
|
||||||
<omgdi:waypoint x="469.0" y="137.0"/>
|
<bpmndi:BPMNEdge id="sid-CAEAD081-6E73-4C98-8656-C67DA18F5140_gui" bpmnElement="sid-CAEAD081-6E73-4C98-8656-C67DA18F5140">
|
||||||
</bpmndi:BPMNEdge>
|
<omgdi:waypoint x="281" y="294" />
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-CAEAD081-6E73-4C98-8656-C67DA18F5140" id="sid-CAEAD081-6E73-4C98-8656-C67DA18F5140_gui">
|
<omgdi:waypoint x="281" y="339" />
|
||||||
<omgdi:waypoint x="281.0" y="294.0"/>
|
</bpmndi:BPMNEdge>
|
||||||
<omgdi:waypoint x="281.0" y="339.0"/>
|
<bpmndi:BPMNEdge id="sid-B6E22A74-A691-453A-A789-B9F8AF787D7C_gui" bpmnElement="sid-B6E22A74-A691-453A-A789-B9F8AF787D7C">
|
||||||
</bpmndi:BPMNEdge>
|
<omgdi:waypoint x="335" y="157" />
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-12F60C82-D18F-4747-B5B5-34FD40F2C8DE" id="sid-12F60C82-D18F-4747-B5B5-34FD40F2C8DE_gui">
|
<omgdi:waypoint x="335.5" y="185.5" />
|
||||||
<omgdi:waypoint x="331.0" y="477.0"/>
|
<omgdi:waypoint x="281" y="185.5" />
|
||||||
<omgdi:waypoint x="630.0" y="477.0"/>
|
<omgdi:waypoint x="281" y="214" />
|
||||||
<omgdi:waypoint x="621.0" y="388.0"/>
|
</bpmndi:BPMNEdge>
|
||||||
</bpmndi:BPMNEdge>
|
<bpmndi:BPMNEdge id="sid-7E15C71B-DE9E-4788-B140-A647C99FDC94_gui" bpmnElement="sid-7E15C71B-DE9E-4788-B140-A647C99FDC94">
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-40496205-24D7-494C-AB6B-CD42B8D606EF" id="sid-40496205-24D7-494C-AB6B-CD42B8D606EF_gui">
|
<omgdi:waypoint x="355" y="137" />
|
||||||
<omgdi:waypoint x="728.0" y="408.0"/>
|
<omgdi:waypoint x="469" y="137" />
|
||||||
<omgdi:waypoint x="728.0" y="448.0"/>
|
</bpmndi:BPMNEdge>
|
||||||
</bpmndi:BPMNEdge>
|
<bpmndi:BPMNEdge id="sid-F3994F51-FE54-4910-A1F4-E5895AA1A612_gui" bpmnElement="sid-F3994F51-FE54-4910-A1F4-E5895AA1A612">
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-F3994F51-FE54-4910-A1F4-E5895AA1A612" id="sid-F3994F51-FE54-4910-A1F4-E5895AA1A612_gui">
|
<omgdi:waypoint x="220" y="137" />
|
||||||
<omgdi:waypoint x="220.0" y="137.0"/>
|
<omgdi:waypoint x="315" y="137" />
|
||||||
<omgdi:waypoint x="315.0" y="137.0"/>
|
</bpmndi:BPMNEdge>
|
||||||
</bpmndi:BPMNEdge>
|
<bpmndi:BPMNShape id="sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE_gui" bpmnElement="sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE">
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-A6DA25CE-636A-46B7-8005-759577956F09" id="sid-A6DA25CE-636A-46B7-8005-759577956F09_gui">
|
<omgdc:Bounds x="190" y="122" width="30" height="30" />
|
||||||
<omgdi:waypoint x="471.0" y="359.0"/>
|
</bpmndi:BPMNShape>
|
||||||
<omgdi:waypoint x="535.5" y="359.0"/>
|
<bpmndi:BPMNShape id="sid-349F8C0C-45EA-489C-84DD-1D944F48D778_gui" bpmnElement="sid-349F8C0C-45EA-489C-84DD-1D944F48D778">
|
||||||
<omgdi:waypoint x="535.5" y="368.5"/>
|
<omgdc:Bounds x="315" y="117" width="40" height="40" />
|
||||||
<omgdi:waypoint x="600.0" y="368.0"/>
|
</bpmndi:BPMNShape>
|
||||||
</bpmndi:BPMNEdge>
|
<bpmndi:BPMNShape id="sid-57463471-693A-42A2-9EC6-6460BEDECA86_gui" bpmnElement="sid-57463471-693A-42A2-9EC6-6460BEDECA86">
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-B6E22A74-A691-453A-A789-B9F8AF787D7C" id="sid-B6E22A74-A691-453A-A789-B9F8AF787D7C_gui">
|
<omgdc:Bounds x="469" y="97" width="100" height="80" />
|
||||||
<omgdi:waypoint x="335.0" y="157.0"/>
|
</bpmndi:BPMNShape>
|
||||||
<omgdi:waypoint x="335.5" y="185.5"/>
|
<bpmndi:BPMNShape id="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3_gui" bpmnElement="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3">
|
||||||
<omgdi:waypoint x="281.0" y="185.5"/>
|
<omgdc:Bounds x="231" y="214" width="100" height="80" />
|
||||||
<omgdi:waypoint x="281.0" y="214.0"/>
|
</bpmndi:BPMNShape>
|
||||||
</bpmndi:BPMNEdge>
|
<bpmndi:BPMNShape id="sid-E2054FDD-0C20-4939-938D-2169B317FEE7_gui" bpmnElement="sid-E2054FDD-0C20-4939-938D-2169B317FEE7" isMarkerVisible="true">
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-0895E09C-077C-4D12-8C11-31F28CBC7740" id="sid-0895E09C-077C-4D12-8C11-31F28CBC7740_gui">
|
<omgdc:Bounds x="261" y="339" width="40" height="40" />
|
||||||
<omgdi:waypoint x="640.0" y="368.0"/>
|
</bpmndi:BPMNShape>
|
||||||
<omgdi:waypoint x="678.0" y="368.0"/>
|
<bpmndi:BPMNShape id="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5_gui" bpmnElement="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5">
|
||||||
</bpmndi:BPMNEdge>
|
<omgdc:Bounds x="371" y="319" width="100" height="80" />
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-3742C960-71D0-4342-8064-AF1BB9EECB42" id="sid-3742C960-71D0-4342-8064-AF1BB9EECB42_gui">
|
</bpmndi:BPMNShape>
|
||||||
<omgdi:waypoint x="281.0" y="379.0"/>
|
<bpmndi:BPMNShape id="sid-2A302E91-F89F-4913-8F55-5C3AC5FAE4D3_gui" bpmnElement="sid-2A302E91-F89F-4913-8F55-5C3AC5FAE4D3">
|
||||||
<omgdi:waypoint x="281.0" y="437.0"/>
|
<omgdc:Bounds x="231" y="437" width="100" height="80" />
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-E3493781-6466-4AED-BAD2-63D115E14820" id="sid-E3493781-6466-4AED-BAD2-63D115E14820_gui">
|
<bpmndi:BPMNShape id="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0_gui" bpmnElement="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0">
|
||||||
<omgdi:waypoint x="569.0" y="137.0"/>
|
<omgdc:Bounds x="678" y="328" width="100" height="80" />
|
||||||
<omgdi:waypoint x="630.0" y="137.0"/>
|
</bpmndi:BPMNShape>
|
||||||
<omgdi:waypoint x="620.0" y="348.0"/>
|
<bpmndi:BPMNShape id="sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB_gui" bpmnElement="sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB">
|
||||||
</bpmndi:BPMNEdge>
|
<omgdc:Bounds x="714" y="448" width="28" height="28" />
|
||||||
</bpmndi:BPMNPlane>
|
</bpmndi:BPMNShape>
|
||||||
</bpmndi:BPMNDiagram>
|
<bpmndi:BPMNShape id="sid-EBB511F3-5AD5-4307-9B9B-85C17F8889D5_gui" bpmnElement="sid-EBB511F3-5AD5-4307-9B9B-85C17F8889D5">
|
||||||
|
<omgdc:Bounds x="600" y="348" width="40" height="40" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
</bpmndi:BPMNPlane>
|
||||||
|
</bpmndi:BPMNDiagram>
|
||||||
</definitions>
|
</definitions>
|
||||||
|
|
|
@ -1,201 +1,205 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" xmlns:signavio="http://www.signavio.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" exporter="Signavio Process Editor, http://www.signavio.com" exporterVersion="" expressionLanguage="http://www.w3.org/1999/XPath" id="sid-787944f5-462c-48b5-bce6-9f81a33c0310" targetNamespace="http://www.signavio.com/bpmn20" typeLanguage="http://www.w3.org/2001/XMLSchema" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL http://www.omg.org/spec/BPMN/2.0/20100501/BPMN20.xsd">
|
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:signavio="http://www.signavio.com" id="sid-787944f5-462c-48b5-bce6-9f81a33c0310" targetNamespace="http://www.signavio.com/bpmn20" exporter="Camunda Modeler" exporterVersion="4.11.1" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL http://www.omg.org/spec/BPMN/2.0/20100501/BPMN20.xsd">
|
||||||
<collaboration id="sid-e3b04a04-0860-4643-ad2d-bfe79c257bd9">
|
<collaboration id="sid-e3b04a04-0860-4643-ad2d-bfe79c257bd9">
|
||||||
<participant id="sid-B2E5AD50-035A-4CE8-B8A3-B175A6767B00" name="Parallel Through Same Task" processRef="sid-57c563e3-fb68-4961-ae34-b6201e0c09e8">
|
<participant id="sid-B2E5AD50-035A-4CE8-B8A3-B175A6767B00" name="Parallel Through Same Task" processRef="sid-57c563e3-fb68-4961-ae34-b6201e0c09e8">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
</participant>
|
</participant>
|
||||||
</collaboration>
|
</collaboration>
|
||||||
<process id="sid-57c563e3-fb68-4961-ae34-b6201e0c09e8" isClosed="false" isExecutable="false" name="Parallel Through Same Task" processType="None">
|
<process id="sid-57c563e3-fb68-4961-ae34-b6201e0c09e8" name="Parallel Through Same Task" processType="None" isClosed="false" isExecutable="false">
|
||||||
<laneSet id="sid-d79fd2d7-1cb4-4e41-9b4a-8daac27581a1">
|
<laneSet id="sid-d79fd2d7-1cb4-4e41-9b4a-8daac27581a1">
|
||||||
<lane id="sid-72009BCE-46B4-4B4B-AEAE-1E7199522142" name="Tester">
|
<lane id="sid-72009BCE-46B4-4B4B-AEAE-1E7199522142" name="Tester">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue=""/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<flowNodeRef>sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE</flowNodeRef>
|
<flowNodeRef>sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE</flowNodeRef>
|
||||||
<flowNodeRef>sid-349F8C0C-45EA-489C-84DD-1D944F48D778</flowNodeRef>
|
<flowNodeRef>sid-349F8C0C-45EA-489C-84DD-1D944F48D778</flowNodeRef>
|
||||||
<flowNodeRef>sid-57463471-693A-42A2-9EC6-6460BEDECA86</flowNodeRef>
|
<flowNodeRef>sid-57463471-693A-42A2-9EC6-6460BEDECA86</flowNodeRef>
|
||||||
<flowNodeRef>sid-CA089240-802A-4C32-9130-FB1A33DDCCC3</flowNodeRef>
|
<flowNodeRef>sid-CA089240-802A-4C32-9130-FB1A33DDCCC3</flowNodeRef>
|
||||||
<flowNodeRef>sid-E2054FDD-0C20-4939-938D-2169B317FEE7</flowNodeRef>
|
<flowNodeRef>sid-E2054FDD-0C20-4939-938D-2169B317FEE7</flowNodeRef>
|
||||||
<flowNodeRef>sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5</flowNodeRef>
|
<flowNodeRef>sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5</flowNodeRef>
|
||||||
<flowNodeRef>sid-2A302E91-F89F-4913-8F55-5C3AC5FAE4D3</flowNodeRef>
|
<flowNodeRef>sid-2A302E91-F89F-4913-8F55-5C3AC5FAE4D3</flowNodeRef>
|
||||||
<flowNodeRef>sid-F3A979E3-F586-4807-8223-1FAB5A5647B0</flowNodeRef>
|
<flowNodeRef>sid-F3A979E3-F586-4807-8223-1FAB5A5647B0</flowNodeRef>
|
||||||
<flowNodeRef>sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB</flowNodeRef>
|
<flowNodeRef>sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB</flowNodeRef>
|
||||||
<flowNodeRef>sid-AF897BE2-CC07-4236-902B-DD6E1AB31842</flowNodeRef>
|
<flowNodeRef>sid-AF897BE2-CC07-4236-902B-DD6E1AB31842</flowNodeRef>
|
||||||
</lane>
|
</lane>
|
||||||
</laneSet>
|
</laneSet>
|
||||||
<startEvent id="sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE" name="">
|
<startEvent id="sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE" name="">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<outgoing>sid-F3994F51-FE54-4910-A1F4-E5895AA1A612</outgoing>
|
<outgoing>sid-F3994F51-FE54-4910-A1F4-E5895AA1A612</outgoing>
|
||||||
</startEvent>
|
</startEvent>
|
||||||
<parallelGateway gatewayDirection="Diverging" id="sid-349F8C0C-45EA-489C-84DD-1D944F48D778" name="">
|
<parallelGateway id="sid-349F8C0C-45EA-489C-84DD-1D944F48D778" name="" gatewayDirection="Diverging">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<incoming>sid-F3994F51-FE54-4910-A1F4-E5895AA1A612</incoming>
|
<incoming>sid-F3994F51-FE54-4910-A1F4-E5895AA1A612</incoming>
|
||||||
<outgoing>sid-7E15C71B-DE9E-4788-B140-A647C99FDC94</outgoing>
|
<outgoing>sid-7E15C71B-DE9E-4788-B140-A647C99FDC94</outgoing>
|
||||||
<outgoing>sid-B6E22A74-A691-453A-A789-B9F8AF787D7C</outgoing>
|
<outgoing>sid-B6E22A74-A691-453A-A789-B9F8AF787D7C</outgoing>
|
||||||
</parallelGateway>
|
</parallelGateway>
|
||||||
<task completionQuantity="1" id="sid-57463471-693A-42A2-9EC6-6460BEDECA86" isForCompensation="false" name="Repeated Task" startQuantity="1">
|
<task id="sid-57463471-693A-42A2-9EC6-6460BEDECA86" name="Repeated Task">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffcc"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffcc" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<incoming>sid-7E15C71B-DE9E-4788-B140-A647C99FDC94</incoming>
|
<incoming>sid-7E15C71B-DE9E-4788-B140-A647C99FDC94</incoming>
|
||||||
<incoming>sid-A6DA25CE-636A-46B7-8005-759577956F09</incoming>
|
<incoming>sid-A6DA25CE-636A-46B7-8005-759577956F09</incoming>
|
||||||
<outgoing>sid-E3493781-6466-4AED-BAD2-63D115E14820</outgoing>
|
<outgoing>sid-E3493781-6466-4AED-BAD2-63D115E14820</outgoing>
|
||||||
</task>
|
</task>
|
||||||
<task completionQuantity="1" id="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3" isForCompensation="false" name="Choice 1" startQuantity="1">
|
<task id="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3" name="Choice 1">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffcc"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffcc" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<incoming>sid-B6E22A74-A691-453A-A789-B9F8AF787D7C</incoming>
|
<incoming>sid-B6E22A74-A691-453A-A789-B9F8AF787D7C</incoming>
|
||||||
<outgoing>sid-CAEAD081-6E73-4C98-8656-C67DA18F5140</outgoing>
|
<outgoing>sid-CAEAD081-6E73-4C98-8656-C67DA18F5140</outgoing>
|
||||||
</task>
|
</task>
|
||||||
<exclusiveGateway gatewayDirection="Diverging" id="sid-E2054FDD-0C20-4939-938D-2169B317FEE7" name="">
|
<exclusiveGateway id="sid-E2054FDD-0C20-4939-938D-2169B317FEE7" name="" gatewayDirection="Diverging">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<incoming>sid-CAEAD081-6E73-4C98-8656-C67DA18F5140</incoming>
|
<incoming>sid-CAEAD081-6E73-4C98-8656-C67DA18F5140</incoming>
|
||||||
<outgoing>sid-3742C960-71D0-4342-8064-AF1BB9EECB42</outgoing>
|
<outgoing>sid-3742C960-71D0-4342-8064-AF1BB9EECB42</outgoing>
|
||||||
<outgoing>sid-9C753C3D-F964-45B0-AF57-234F910529EF</outgoing>
|
<outgoing>sid-9C753C3D-F964-45B0-AF57-234F910529EF</outgoing>
|
||||||
</exclusiveGateway>
|
</exclusiveGateway>
|
||||||
<task completionQuantity="1" id="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5" isForCompensation="false" name="Yes Task" startQuantity="1">
|
<task id="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5" name="Yes Task">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffcc"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffcc" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<incoming>sid-9C753C3D-F964-45B0-AF57-234F910529EF</incoming>
|
<incoming>sid-9C753C3D-F964-45B0-AF57-234F910529EF</incoming>
|
||||||
<outgoing>sid-A6DA25CE-636A-46B7-8005-759577956F09</outgoing>
|
<outgoing>sid-A6DA25CE-636A-46B7-8005-759577956F09</outgoing>
|
||||||
</task>
|
</task>
|
||||||
<task completionQuantity="1" id="sid-2A302E91-F89F-4913-8F55-5C3AC5FAE4D3" isForCompensation="false" name="No Task" startQuantity="1">
|
<task id="sid-2A302E91-F89F-4913-8F55-5C3AC5FAE4D3" name="No Task">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffcc"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffcc" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<incoming>sid-3742C960-71D0-4342-8064-AF1BB9EECB42</incoming>
|
<incoming>sid-3742C960-71D0-4342-8064-AF1BB9EECB42</incoming>
|
||||||
<outgoing>sid-12F60C82-D18F-4747-B5B5-34FD40F2C8DE</outgoing>
|
<outgoing>sid-12F60C82-D18F-4747-B5B5-34FD40F2C8DE</outgoing>
|
||||||
</task>
|
</task>
|
||||||
<task completionQuantity="1" id="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0" isForCompensation="false" name="Done" startQuantity="1">
|
<task id="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0" name="Done">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffcc"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffcc" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<incoming>sid-0895E09C-077C-4D12-8C11-31F28CBC7740</incoming>
|
<incoming>sid-0895E09C-077C-4D12-8C11-31F28CBC7740</incoming>
|
||||||
<outgoing>sid-40496205-24D7-494C-AB6B-CD42B8D606EF</outgoing>
|
<outgoing>sid-40496205-24D7-494C-AB6B-CD42B8D606EF</outgoing>
|
||||||
</task>
|
</task>
|
||||||
<endEvent id="sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB" name="">
|
<endEvent id="sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB" name="">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<incoming>sid-40496205-24D7-494C-AB6B-CD42B8D606EF</incoming>
|
<incoming>sid-40496205-24D7-494C-AB6B-CD42B8D606EF</incoming>
|
||||||
</endEvent>
|
</endEvent>
|
||||||
<inclusiveGateway gatewayDirection="Converging" id="sid-AF897BE2-CC07-4236-902B-DD6E1AB31842" name="">
|
<inclusiveGateway id="sid-AF897BE2-CC07-4236-902B-DD6E1AB31842" name="" gatewayDirection="Converging" default="sid-0895E09C-077C-4D12-8C11-31F28CBC7740">
|
||||||
<extensionElements>
|
<extensionElements>
|
||||||
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff"/>
|
<signavio:signavioMetaData metaKey="bgcolor" metaValue="#ffffff" />
|
||||||
</extensionElements>
|
</extensionElements>
|
||||||
<incoming>sid-E3493781-6466-4AED-BAD2-63D115E14820</incoming>
|
<incoming>sid-E3493781-6466-4AED-BAD2-63D115E14820</incoming>
|
||||||
<incoming>sid-12F60C82-D18F-4747-B5B5-34FD40F2C8DE</incoming>
|
<incoming>sid-12F60C82-D18F-4747-B5B5-34FD40F2C8DE</incoming>
|
||||||
<outgoing>sid-0895E09C-077C-4D12-8C11-31F28CBC7740</outgoing>
|
<outgoing>sid-0895E09C-077C-4D12-8C11-31F28CBC7740</outgoing>
|
||||||
</inclusiveGateway>
|
</inclusiveGateway>
|
||||||
<sequenceFlow id="sid-F3994F51-FE54-4910-A1F4-E5895AA1A612" name="" sourceRef="sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE" targetRef="sid-349F8C0C-45EA-489C-84DD-1D944F48D778"/>
|
<sequenceFlow id="sid-F3994F51-FE54-4910-A1F4-E5895AA1A612" name="" sourceRef="sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE" targetRef="sid-349F8C0C-45EA-489C-84DD-1D944F48D778" />
|
||||||
<sequenceFlow id="sid-7E15C71B-DE9E-4788-B140-A647C99FDC94" name="" sourceRef="sid-349F8C0C-45EA-489C-84DD-1D944F48D778" targetRef="sid-57463471-693A-42A2-9EC6-6460BEDECA86"/>
|
<sequenceFlow id="sid-7E15C71B-DE9E-4788-B140-A647C99FDC94" name="" sourceRef="sid-349F8C0C-45EA-489C-84DD-1D944F48D778" targetRef="sid-57463471-693A-42A2-9EC6-6460BEDECA86" />
|
||||||
<sequenceFlow id="sid-B6E22A74-A691-453A-A789-B9F8AF787D7C" name="" sourceRef="sid-349F8C0C-45EA-489C-84DD-1D944F48D778" targetRef="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3"/>
|
<sequenceFlow id="sid-B6E22A74-A691-453A-A789-B9F8AF787D7C" name="" sourceRef="sid-349F8C0C-45EA-489C-84DD-1D944F48D778" targetRef="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3" />
|
||||||
<sequenceFlow id="sid-CAEAD081-6E73-4C98-8656-C67DA18F5140" name="" sourceRef="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3" targetRef="sid-E2054FDD-0C20-4939-938D-2169B317FEE7"/>
|
<sequenceFlow id="sid-CAEAD081-6E73-4C98-8656-C67DA18F5140" name="" sourceRef="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3" targetRef="sid-E2054FDD-0C20-4939-938D-2169B317FEE7" />
|
||||||
<sequenceFlow id="sid-3742C960-71D0-4342-8064-AF1BB9EECB42" name="No" sourceRef="sid-E2054FDD-0C20-4939-938D-2169B317FEE7" targetRef="sid-2A302E91-F89F-4913-8F55-5C3AC5FAE4D3"/>
|
<sequenceFlow id="sid-3742C960-71D0-4342-8064-AF1BB9EECB42" name="No" sourceRef="sid-E2054FDD-0C20-4939-938D-2169B317FEE7" targetRef="sid-2A302E91-F89F-4913-8F55-5C3AC5FAE4D3">
|
||||||
<sequenceFlow id="sid-9C753C3D-F964-45B0-AF57-234F910529EF" name="Yes" sourceRef="sid-E2054FDD-0C20-4939-938D-2169B317FEE7" targetRef="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5"/>
|
<conditionExpression xsi:type="tFormalExpression">choice == 'No'</conditionExpression>
|
||||||
<sequenceFlow id="sid-E3493781-6466-4AED-BAD2-63D115E14820" name="" sourceRef="sid-57463471-693A-42A2-9EC6-6460BEDECA86" targetRef="sid-AF897BE2-CC07-4236-902B-DD6E1AB31842"/>
|
</sequenceFlow>
|
||||||
<sequenceFlow id="sid-A6DA25CE-636A-46B7-8005-759577956F09" name="" sourceRef="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5" targetRef="sid-57463471-693A-42A2-9EC6-6460BEDECA86"/>
|
<sequenceFlow id="sid-9C753C3D-F964-45B0-AF57-234F910529EF" name="Yes" sourceRef="sid-E2054FDD-0C20-4939-938D-2169B317FEE7" targetRef="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5">
|
||||||
<sequenceFlow id="sid-40496205-24D7-494C-AB6B-CD42B8D606EF" name="" sourceRef="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0" targetRef="sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB"/>
|
<conditionExpression xsi:type="tFormalExpression">choice == 'Yes'</conditionExpression>
|
||||||
<sequenceFlow id="sid-12F60C82-D18F-4747-B5B5-34FD40F2C8DE" name="" sourceRef="sid-2A302E91-F89F-4913-8F55-5C3AC5FAE4D3" targetRef="sid-AF897BE2-CC07-4236-902B-DD6E1AB31842"/>
|
</sequenceFlow>
|
||||||
<sequenceFlow id="sid-0895E09C-077C-4D12-8C11-31F28CBC7740" name="" sourceRef="sid-AF897BE2-CC07-4236-902B-DD6E1AB31842" targetRef="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0"/>
|
<sequenceFlow id="sid-E3493781-6466-4AED-BAD2-63D115E14820" name="" sourceRef="sid-57463471-693A-42A2-9EC6-6460BEDECA86" targetRef="sid-AF897BE2-CC07-4236-902B-DD6E1AB31842" />
|
||||||
</process>
|
<sequenceFlow id="sid-A6DA25CE-636A-46B7-8005-759577956F09" name="" sourceRef="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5" targetRef="sid-57463471-693A-42A2-9EC6-6460BEDECA86" />
|
||||||
<bpmndi:BPMNDiagram id="sid-d0820a7d-420b-432a-8e44-8a26b4f82fda">
|
<sequenceFlow id="sid-40496205-24D7-494C-AB6B-CD42B8D606EF" name="" sourceRef="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0" targetRef="sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB" />
|
||||||
<bpmndi:BPMNPlane bpmnElement="sid-e3b04a04-0860-4643-ad2d-bfe79c257bd9" id="sid-0548e295-5887-423f-b623-7cdeb4dacdf1">
|
<sequenceFlow id="sid-12F60C82-D18F-4747-B5B5-34FD40F2C8DE" name="" sourceRef="sid-2A302E91-F89F-4913-8F55-5C3AC5FAE4D3" targetRef="sid-AF897BE2-CC07-4236-902B-DD6E1AB31842" />
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-B2E5AD50-035A-4CE8-B8A3-B175A6767B00" id="sid-B2E5AD50-035A-4CE8-B8A3-B175A6767B00_gui" isHorizontal="true">
|
<sequenceFlow id="sid-0895E09C-077C-4D12-8C11-31F28CBC7740" name="" sourceRef="sid-AF897BE2-CC07-4236-902B-DD6E1AB31842" targetRef="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0" />
|
||||||
<omgdc:Bounds height="479.0" width="776.0" x="120.0" y="90.0"/>
|
</process>
|
||||||
</bpmndi:BPMNShape>
|
<bpmndi:BPMNDiagram id="sid-d0820a7d-420b-432a-8e44-8a26b4f82fda">
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-72009BCE-46B4-4B4B-AEAE-1E7199522142" id="sid-72009BCE-46B4-4B4B-AEAE-1E7199522142_gui" isHorizontal="true">
|
<bpmndi:BPMNPlane id="sid-0548e295-5887-423f-b623-7cdeb4dacdf1" bpmnElement="sid-e3b04a04-0860-4643-ad2d-bfe79c257bd9">
|
||||||
<omgdc:Bounds height="479.0" width="746.0" x="150.0" y="90.0"/>
|
<bpmndi:BPMNShape id="sid-B2E5AD50-035A-4CE8-B8A3-B175A6767B00_gui" bpmnElement="sid-B2E5AD50-035A-4CE8-B8A3-B175A6767B00" isHorizontal="true">
|
||||||
</bpmndi:BPMNShape>
|
<omgdc:Bounds x="120" y="90" width="776" height="479" />
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE" id="sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE_gui">
|
</bpmndi:BPMNShape>
|
||||||
<omgdc:Bounds height="30.0" width="30.0" x="190.0" y="122.0"/>
|
<bpmndi:BPMNShape id="sid-72009BCE-46B4-4B4B-AEAE-1E7199522142_gui" bpmnElement="sid-72009BCE-46B4-4B4B-AEAE-1E7199522142" isHorizontal="true">
|
||||||
</bpmndi:BPMNShape>
|
<omgdc:Bounds x="150" y="90" width="746" height="479" />
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-349F8C0C-45EA-489C-84DD-1D944F48D778" id="sid-349F8C0C-45EA-489C-84DD-1D944F48D778_gui">
|
</bpmndi:BPMNShape>
|
||||||
<omgdc:Bounds height="40.0" width="40.0" x="315.0" y="117.0"/>
|
<bpmndi:BPMNEdge id="sid-0895E09C-077C-4D12-8C11-31F28CBC7740_gui" bpmnElement="sid-0895E09C-077C-4D12-8C11-31F28CBC7740">
|
||||||
</bpmndi:BPMNShape>
|
<omgdi:waypoint x="625" y="368" />
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-57463471-693A-42A2-9EC6-6460BEDECA86" id="sid-57463471-693A-42A2-9EC6-6460BEDECA86_gui">
|
<omgdi:waypoint x="678" y="368" />
|
||||||
<omgdc:Bounds height="80.0" width="100.0" x="469.0" y="97.0"/>
|
</bpmndi:BPMNEdge>
|
||||||
</bpmndi:BPMNShape>
|
<bpmndi:BPMNEdge id="sid-12F60C82-D18F-4747-B5B5-34FD40F2C8DE_gui" bpmnElement="sid-12F60C82-D18F-4747-B5B5-34FD40F2C8DE">
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3" id="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3_gui">
|
<omgdi:waypoint x="331" y="477" />
|
||||||
<omgdc:Bounds height="80.0" width="100.0" x="231.0" y="214.0"/>
|
<omgdi:waypoint x="605.5" y="477" />
|
||||||
</bpmndi:BPMNShape>
|
<omgdi:waypoint x="605" y="388" />
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-E2054FDD-0C20-4939-938D-2169B317FEE7" id="sid-E2054FDD-0C20-4939-938D-2169B317FEE7_gui" isMarkerVisible="true">
|
</bpmndi:BPMNEdge>
|
||||||
<omgdc:Bounds height="40.0" width="40.0" x="261.0" y="339.0"/>
|
<bpmndi:BPMNEdge id="sid-40496205-24D7-494C-AB6B-CD42B8D606EF_gui" bpmnElement="sid-40496205-24D7-494C-AB6B-CD42B8D606EF">
|
||||||
</bpmndi:BPMNShape>
|
<omgdi:waypoint x="728" y="408" />
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5" id="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5_gui">
|
<omgdi:waypoint x="728" y="448" />
|
||||||
<omgdc:Bounds height="80.0" width="100.0" x="371.0" y="319.0"/>
|
</bpmndi:BPMNEdge>
|
||||||
</bpmndi:BPMNShape>
|
<bpmndi:BPMNEdge id="sid-A6DA25CE-636A-46B7-8005-759577956F09_gui" bpmnElement="sid-A6DA25CE-636A-46B7-8005-759577956F09">
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-2A302E91-F89F-4913-8F55-5C3AC5FAE4D3" id="sid-2A302E91-F89F-4913-8F55-5C3AC5FAE4D3_gui">
|
<omgdi:waypoint x="471" y="359" />
|
||||||
<omgdc:Bounds height="80.0" width="100.0" x="231.0" y="437.0"/>
|
<omgdi:waypoint x="525.12109375" y="359" />
|
||||||
</bpmndi:BPMNShape>
|
<omgdi:waypoint x="525" y="177" />
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0" id="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0_gui">
|
</bpmndi:BPMNEdge>
|
||||||
<omgdc:Bounds height="80.0" width="100.0" x="678.0" y="328.0"/>
|
<bpmndi:BPMNEdge id="sid-E3493781-6466-4AED-BAD2-63D115E14820_gui" bpmnElement="sid-E3493781-6466-4AED-BAD2-63D115E14820">
|
||||||
</bpmndi:BPMNShape>
|
<omgdi:waypoint x="569" y="137" />
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB" id="sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB_gui">
|
<omgdi:waypoint x="605.5" y="137" />
|
||||||
<omgdc:Bounds height="28.0" width="28.0" x="714.0" y="448.0"/>
|
<omgdi:waypoint x="605" y="348" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNShape bpmnElement="sid-AF897BE2-CC07-4236-902B-DD6E1AB31842" id="sid-AF897BE2-CC07-4236-902B-DD6E1AB31842_gui">
|
<bpmndi:BPMNEdge id="sid-9C753C3D-F964-45B0-AF57-234F910529EF_gui" bpmnElement="sid-9C753C3D-F964-45B0-AF57-234F910529EF">
|
||||||
<omgdc:Bounds height="40.0" width="40.0" x="585.0" y="348.0"/>
|
<omgdi:waypoint x="301" y="359" />
|
||||||
</bpmndi:BPMNShape>
|
<omgdi:waypoint x="371" y="359" />
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-9C753C3D-F964-45B0-AF57-234F910529EF" id="sid-9C753C3D-F964-45B0-AF57-234F910529EF_gui">
|
</bpmndi:BPMNEdge>
|
||||||
<omgdi:waypoint x="301.0" y="359.0"/>
|
<bpmndi:BPMNEdge id="sid-3742C960-71D0-4342-8064-AF1BB9EECB42_gui" bpmnElement="sid-3742C960-71D0-4342-8064-AF1BB9EECB42">
|
||||||
<omgdi:waypoint x="371.0" y="359.0"/>
|
<omgdi:waypoint x="281" y="379" />
|
||||||
</bpmndi:BPMNEdge>
|
<omgdi:waypoint x="281" y="437" />
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-7E15C71B-DE9E-4788-B140-A647C99FDC94" id="sid-7E15C71B-DE9E-4788-B140-A647C99FDC94_gui">
|
</bpmndi:BPMNEdge>
|
||||||
<omgdi:waypoint x="355.0" y="137.0"/>
|
<bpmndi:BPMNEdge id="sid-CAEAD081-6E73-4C98-8656-C67DA18F5140_gui" bpmnElement="sid-CAEAD081-6E73-4C98-8656-C67DA18F5140">
|
||||||
<omgdi:waypoint x="469.0" y="137.0"/>
|
<omgdi:waypoint x="281" y="294" />
|
||||||
</bpmndi:BPMNEdge>
|
<omgdi:waypoint x="281" y="339" />
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-CAEAD081-6E73-4C98-8656-C67DA18F5140" id="sid-CAEAD081-6E73-4C98-8656-C67DA18F5140_gui">
|
</bpmndi:BPMNEdge>
|
||||||
<omgdi:waypoint x="281.0" y="294.0"/>
|
<bpmndi:BPMNEdge id="sid-B6E22A74-A691-453A-A789-B9F8AF787D7C_gui" bpmnElement="sid-B6E22A74-A691-453A-A789-B9F8AF787D7C">
|
||||||
<omgdi:waypoint x="281.0" y="339.0"/>
|
<omgdi:waypoint x="335" y="157" />
|
||||||
</bpmndi:BPMNEdge>
|
<omgdi:waypoint x="335.5" y="185.5" />
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-12F60C82-D18F-4747-B5B5-34FD40F2C8DE" id="sid-12F60C82-D18F-4747-B5B5-34FD40F2C8DE_gui">
|
<omgdi:waypoint x="281" y="185.5" />
|
||||||
<omgdi:waypoint x="331.0" y="477.0"/>
|
<omgdi:waypoint x="281" y="214" />
|
||||||
<omgdi:waypoint x="605.5" y="477.0"/>
|
</bpmndi:BPMNEdge>
|
||||||
<omgdi:waypoint x="605.0" y="388.0"/>
|
<bpmndi:BPMNEdge id="sid-7E15C71B-DE9E-4788-B140-A647C99FDC94_gui" bpmnElement="sid-7E15C71B-DE9E-4788-B140-A647C99FDC94">
|
||||||
</bpmndi:BPMNEdge>
|
<omgdi:waypoint x="355" y="137" />
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-40496205-24D7-494C-AB6B-CD42B8D606EF" id="sid-40496205-24D7-494C-AB6B-CD42B8D606EF_gui">
|
<omgdi:waypoint x="469" y="137" />
|
||||||
<omgdi:waypoint x="728.0" y="408.0"/>
|
</bpmndi:BPMNEdge>
|
||||||
<omgdi:waypoint x="728.0" y="448.0"/>
|
<bpmndi:BPMNEdge id="sid-F3994F51-FE54-4910-A1F4-E5895AA1A612_gui" bpmnElement="sid-F3994F51-FE54-4910-A1F4-E5895AA1A612">
|
||||||
</bpmndi:BPMNEdge>
|
<omgdi:waypoint x="220" y="137" />
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-F3994F51-FE54-4910-A1F4-E5895AA1A612" id="sid-F3994F51-FE54-4910-A1F4-E5895AA1A612_gui">
|
<omgdi:waypoint x="315" y="137" />
|
||||||
<omgdi:waypoint x="220.0" y="137.0"/>
|
</bpmndi:BPMNEdge>
|
||||||
<omgdi:waypoint x="315.0" y="137.0"/>
|
<bpmndi:BPMNShape id="sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE_gui" bpmnElement="sid-B33EE043-AB93-4343-A1D4-7B267E2DAFBE">
|
||||||
</bpmndi:BPMNEdge>
|
<omgdc:Bounds x="190" y="122" width="30" height="30" />
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-A6DA25CE-636A-46B7-8005-759577956F09" id="sid-A6DA25CE-636A-46B7-8005-759577956F09_gui">
|
</bpmndi:BPMNShape>
|
||||||
<omgdi:waypoint x="471.0" y="359.0"/>
|
<bpmndi:BPMNShape id="sid-349F8C0C-45EA-489C-84DD-1D944F48D778_gui" bpmnElement="sid-349F8C0C-45EA-489C-84DD-1D944F48D778">
|
||||||
<omgdi:waypoint x="525.12109375" y="359.0"/>
|
<omgdc:Bounds x="315" y="117" width="40" height="40" />
|
||||||
<omgdi:waypoint x="525.0" y="177.0"/>
|
</bpmndi:BPMNShape>
|
||||||
</bpmndi:BPMNEdge>
|
<bpmndi:BPMNShape id="sid-57463471-693A-42A2-9EC6-6460BEDECA86_gui" bpmnElement="sid-57463471-693A-42A2-9EC6-6460BEDECA86">
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-B6E22A74-A691-453A-A789-B9F8AF787D7C" id="sid-B6E22A74-A691-453A-A789-B9F8AF787D7C_gui">
|
<omgdc:Bounds x="469" y="97" width="100" height="80" />
|
||||||
<omgdi:waypoint x="335.0" y="157.0"/>
|
</bpmndi:BPMNShape>
|
||||||
<omgdi:waypoint x="335.5" y="185.5"/>
|
<bpmndi:BPMNShape id="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3_gui" bpmnElement="sid-CA089240-802A-4C32-9130-FB1A33DDCCC3">
|
||||||
<omgdi:waypoint x="281.0" y="185.5"/>
|
<omgdc:Bounds x="231" y="214" width="100" height="80" />
|
||||||
<omgdi:waypoint x="281.0" y="214.0"/>
|
</bpmndi:BPMNShape>
|
||||||
</bpmndi:BPMNEdge>
|
<bpmndi:BPMNShape id="sid-E2054FDD-0C20-4939-938D-2169B317FEE7_gui" bpmnElement="sid-E2054FDD-0C20-4939-938D-2169B317FEE7" isMarkerVisible="true">
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-0895E09C-077C-4D12-8C11-31F28CBC7740" id="sid-0895E09C-077C-4D12-8C11-31F28CBC7740_gui">
|
<omgdc:Bounds x="261" y="339" width="40" height="40" />
|
||||||
<omgdi:waypoint x="625.0" y="368.0"/>
|
</bpmndi:BPMNShape>
|
||||||
<omgdi:waypoint x="678.0" y="368.0"/>
|
<bpmndi:BPMNShape id="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5_gui" bpmnElement="sid-34AD79D9-BE0C-4F97-AC23-7A97D238A6E5">
|
||||||
</bpmndi:BPMNEdge>
|
<omgdc:Bounds x="371" y="319" width="100" height="80" />
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-3742C960-71D0-4342-8064-AF1BB9EECB42" id="sid-3742C960-71D0-4342-8064-AF1BB9EECB42_gui">
|
</bpmndi:BPMNShape>
|
||||||
<omgdi:waypoint x="281.0" y="379.0"/>
|
<bpmndi:BPMNShape id="sid-2A302E91-F89F-4913-8F55-5C3AC5FAE4D3_gui" bpmnElement="sid-2A302E91-F89F-4913-8F55-5C3AC5FAE4D3">
|
||||||
<omgdi:waypoint x="281.0" y="437.0"/>
|
<omgdc:Bounds x="231" y="437" width="100" height="80" />
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNEdge bpmnElement="sid-E3493781-6466-4AED-BAD2-63D115E14820" id="sid-E3493781-6466-4AED-BAD2-63D115E14820_gui">
|
<bpmndi:BPMNShape id="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0_gui" bpmnElement="sid-F3A979E3-F586-4807-8223-1FAB5A5647B0">
|
||||||
<omgdi:waypoint x="569.0" y="137.0"/>
|
<omgdc:Bounds x="678" y="328" width="100" height="80" />
|
||||||
<omgdi:waypoint x="605.5" y="137.0"/>
|
</bpmndi:BPMNShape>
|
||||||
<omgdi:waypoint x="605.0" y="348.0"/>
|
<bpmndi:BPMNShape id="sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB_gui" bpmnElement="sid-51816945-79BF-47F9-BA3C-E95ABAE3D1DB">
|
||||||
</bpmndi:BPMNEdge>
|
<omgdc:Bounds x="714" y="448" width="28" height="28" />
|
||||||
</bpmndi:BPMNPlane>
|
</bpmndi:BPMNShape>
|
||||||
</bpmndi:BPMNDiagram>
|
<bpmndi:BPMNShape id="sid-AF897BE2-CC07-4236-902B-DD6E1AB31842_gui" bpmnElement="sid-AF897BE2-CC07-4236-902B-DD6E1AB31842">
|
||||||
|
<omgdc:Bounds x="585" y="348" width="40" height="40" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
</bpmndi:BPMNPlane>
|
||||||
|
</bpmndi:BPMNDiagram>
|
||||||
</definitions>
|
</definitions>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_10tix8p" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.7.0">
|
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_10tix8p" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.11.1">
|
||||||
<bpmn:process id="boundary_event" name=" " isExecutable="true">
|
<bpmn:process id="boundary_event" name=" " isExecutable="true">
|
||||||
<bpmn:startEvent id="StartEvent_1">
|
<bpmn:startEvent id="StartEvent_1">
|
||||||
<bpmn:outgoing>Flow_1pbxbk9</bpmn:outgoing>
|
<bpmn:outgoing>Flow_1pbxbk9</bpmn:outgoing>
|
||||||
|
@ -65,77 +65,46 @@
|
||||||
<bpmn:boundaryEvent id="Event_0iiih8g" name="FedUp" attachedToRef="Subworkflow">
|
<bpmn:boundaryEvent id="Event_0iiih8g" name="FedUp" attachedToRef="Subworkflow">
|
||||||
<bpmn:outgoing>Flow_0yzqey7</bpmn:outgoing>
|
<bpmn:outgoing>Flow_0yzqey7</bpmn:outgoing>
|
||||||
<bpmn:timerEventDefinition id="TimerEventDefinition_0irxg9m">
|
<bpmn:timerEventDefinition id="TimerEventDefinition_0irxg9m">
|
||||||
<bpmn:timeDuration xsi:type="bpmn:tFormalExpression">PT0.03S</bpmn:timeDuration>
|
<bpmn:timeDuration xsi:type="bpmn:tFormalExpression">"PT0.03S"</bpmn:timeDuration>
|
||||||
</bpmn:timerEventDefinition>
|
</bpmn:timerEventDefinition>
|
||||||
</bpmn:boundaryEvent>
|
</bpmn:boundaryEvent>
|
||||||
</bpmn:process>
|
</bpmn:process>
|
||||||
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
||||||
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="boundary_event">
|
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="boundary_event">
|
||||||
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
|
<bpmndi:BPMNEdge id="Flow_1jnwt7c_di" bpmnElement="Flow_1jnwt7c">
|
||||||
<dc:Bounds x="162" y="211" width="36" height="36" />
|
<di:waypoint x="320" y="229" />
|
||||||
</bpmndi:BPMNShape>
|
<di:waypoint x="370" y="229" />
|
||||||
<bpmndi:BPMNShape id="Activity_0zzr7a4_di" bpmnElement="Subworkflow" isExpanded="true">
|
|
||||||
<dc:Bounds x="370" y="77" width="690" height="303" />
|
|
||||||
</bpmndi:BPMNShape>
|
|
||||||
<bpmndi:BPMNShape id="Event_0jwaisd_di" bpmnElement="Event_0jwaisd">
|
|
||||||
<dc:Bounds x="410" y="159" width="36" height="36" />
|
|
||||||
</bpmndi:BPMNShape>
|
|
||||||
<bpmndi:BPMNShape id="Activity_0ytsuvr_di" bpmnElement="Activity_1ya1db2">
|
|
||||||
<dc:Bounds x="910" y="470" width="100" height="80" />
|
|
||||||
</bpmndi:BPMNShape>
|
|
||||||
<bpmndi:BPMNShape id="Activity_11rkn53_di" bpmnElement="Activity_Pester_Dad">
|
|
||||||
<dc:Bounds x="570" y="137" width="100" height="80" />
|
|
||||||
</bpmndi:BPMNShape>
|
|
||||||
<bpmndi:BPMNEdge id="Flow_0yzqey7_di" bpmnElement="Flow_0yzqey7">
|
|
||||||
<di:waypoint x="950" y="398" />
|
|
||||||
<di:waypoint x="950" y="444" />
|
|
||||||
<di:waypoint x="960" y="444" />
|
|
||||||
<di:waypoint x="960" y="470" />
|
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge id="Flow_0vmzw8v_di" bpmnElement="Flow_0vmzw8v">
|
<bpmndi:BPMNEdge id="Flow_0jqkm6y_di" bpmnElement="Flow_0jqkm6y">
|
||||||
<di:waypoint x="446" y="177" />
|
<di:waypoint x="1280" y="220" />
|
||||||
<di:waypoint x="570" y="177" />
|
<di:waypoint x="1402" y="220" />
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNShape id="Event_0lasqgj_di" bpmnElement="Event_0lasqgj">
|
<bpmndi:BPMNEdge id="Flow_1v53za5_di" bpmnElement="Flow_1v53za5">
|
||||||
<dc:Bounds x="952" y="159" width="36" height="36" />
|
<di:waypoint x="1000" y="510" />
|
||||||
</bpmndi:BPMNShape>
|
<di:waypoint x="1230" y="510" />
|
||||||
<bpmndi:BPMNEdge id="Flow_1pbxbk9_di" bpmnElement="Flow_1pbxbk9">
|
<di:waypoint x="1230" y="260" />
|
||||||
<di:waypoint x="198" y="229" />
|
|
||||||
<di:waypoint x="220" y="229" />
|
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge id="Flow_0f0f7wg_di" bpmnElement="Flow_0f0f7wg">
|
<bpmndi:BPMNEdge id="Flow_0f0f7wg_di" bpmnElement="Flow_0f0f7wg">
|
||||||
<di:waypoint x="1060" y="220" />
|
<di:waypoint x="1060" y="220" />
|
||||||
<di:waypoint x="1180" y="220" />
|
<di:waypoint x="1180" y="220" />
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge id="Flow_1v53za5_di" bpmnElement="Flow_1v53za5">
|
<bpmndi:BPMNEdge id="Flow_1pbxbk9_di" bpmnElement="Flow_1pbxbk9">
|
||||||
<di:waypoint x="1010" y="510" />
|
<di:waypoint x="198" y="229" />
|
||||||
<di:waypoint x="1230" y="510" />
|
<di:waypoint x="220" y="229" />
|
||||||
<di:waypoint x="1230" y="260" />
|
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNShape id="Event_000aj7r_di" bpmnElement="Event_000aj7r">
|
<bpmndi:BPMNEdge id="Flow_0yzqey7_di" bpmnElement="Flow_0yzqey7">
|
||||||
<dc:Bounds x="1402" y="202" width="36" height="36" />
|
<di:waypoint x="950" y="398" />
|
||||||
|
<di:waypoint x="950" y="470" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
|
||||||
|
<dc:Bounds x="162" y="211" width="36" height="36" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNEdge id="Flow_0jqkm6y_di" bpmnElement="Flow_0jqkm6y">
|
<bpmndi:BPMNShape id="Activity_0ytsuvr_di" bpmnElement="Activity_1ya1db2">
|
||||||
<di:waypoint x="1280" y="220" />
|
<dc:Bounds x="900" y="470" width="100" height="80" />
|
||||||
<di:waypoint x="1402" y="220" />
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNShape id="Activity_1vjvfhi_di" bpmnElement="StopCar">
|
|
||||||
<dc:Bounds x="1180" y="180" width="100" height="80" />
|
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNShape id="Gateway_17zgs3c_di" bpmnElement="Gateway_17zgs3c" isMarkerVisible="true">
|
<bpmndi:BPMNShape id="Activity_0zzr7a4_di" bpmnElement="Subworkflow" isExpanded="true">
|
||||||
<dc:Bounds x="725" y="152" width="50" height="50" />
|
<dc:Bounds x="370" y="77" width="690" height="303" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNEdge id="Flow_0axldsu_di" bpmnElement="Flow_0axldsu">
|
|
||||||
<di:waypoint x="670" y="177" />
|
|
||||||
<di:waypoint x="725" y="177" />
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNEdge id="Flow_0q65w45_di" bpmnElement="Flow_0q65w45">
|
|
||||||
<di:waypoint x="775" y="177" />
|
|
||||||
<di:waypoint x="952" y="177" />
|
|
||||||
<bpmndi:BPMNLabel>
|
|
||||||
<dc:Bounds x="855" y="159" width="19" height="14" />
|
|
||||||
</bpmndi:BPMNLabel>
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNEdge id="Flow_0hkqchr_di" bpmnElement="Flow_0hkqchr">
|
<bpmndi:BPMNEdge id="Flow_0hkqchr_di" bpmnElement="Flow_0hkqchr">
|
||||||
<di:waypoint x="750" y="202" />
|
<di:waypoint x="750" y="202" />
|
||||||
<di:waypoint x="750" y="320" />
|
<di:waypoint x="750" y="320" />
|
||||||
|
@ -145,10 +114,39 @@
|
||||||
<dc:Bounds x="678" y="302" width="15" height="14" />
|
<dc:Bounds x="678" y="302" width="15" height="14" />
|
||||||
</bpmndi:BPMNLabel>
|
</bpmndi:BPMNLabel>
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge id="Flow_1jnwt7c_di" bpmnElement="Flow_1jnwt7c">
|
<bpmndi:BPMNEdge id="Flow_0q65w45_di" bpmnElement="Flow_0q65w45">
|
||||||
<di:waypoint x="320" y="229" />
|
<di:waypoint x="775" y="177" />
|
||||||
<di:waypoint x="370" y="229" />
|
<di:waypoint x="952" y="177" />
|
||||||
|
<bpmndi:BPMNLabel>
|
||||||
|
<dc:Bounds x="855" y="159" width="19" height="14" />
|
||||||
|
</bpmndi:BPMNLabel>
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_0axldsu_di" bpmnElement="Flow_0axldsu">
|
||||||
|
<di:waypoint x="670" y="177" />
|
||||||
|
<di:waypoint x="725" y="177" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_0vmzw8v_di" bpmnElement="Flow_0vmzw8v">
|
||||||
|
<di:waypoint x="446" y="177" />
|
||||||
|
<di:waypoint x="570" y="177" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNShape id="Event_0jwaisd_di" bpmnElement="Event_0jwaisd">
|
||||||
|
<dc:Bounds x="410" y="159" width="36" height="36" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="Activity_11rkn53_di" bpmnElement="Activity_Pester_Dad">
|
||||||
|
<dc:Bounds x="570" y="137" width="100" height="80" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="Event_0lasqgj_di" bpmnElement="Event_0lasqgj">
|
||||||
|
<dc:Bounds x="952" y="159" width="36" height="36" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="Gateway_17zgs3c_di" bpmnElement="Gateway_17zgs3c" isMarkerVisible="true">
|
||||||
|
<dc:Bounds x="725" y="152" width="50" height="50" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="Event_000aj7r_di" bpmnElement="Event_000aj7r">
|
||||||
|
<dc:Bounds x="1402" y="202" width="36" height="36" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="Activity_1vjvfhi_di" bpmnElement="StopCar">
|
||||||
|
<dc:Bounds x="1180" y="180" width="100" height="80" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNShape id="Activity_0q76z8e_di" bpmnElement="Activity_09c27ms">
|
<bpmndi:BPMNShape id="Activity_0q76z8e_di" bpmnElement="Activity_09c27ms">
|
||||||
<dc:Bounds x="220" y="189" width="100" height="80" />
|
<dc:Bounds x="220" y="189" width="100" height="80" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_1l7iuxt" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.10.0" modeler:executionPlatform="Camunda Platform" modeler:executionPlatformVersion="7.15.0">
|
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_1l7iuxt" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.11.1" modeler:executionPlatform="Camunda Platform" modeler:executionPlatformVersion="7.15.0">
|
||||||
<bpmn:process id="test_timer" name="test_timer" isExecutable="true">
|
<bpmn:process id="test_timer" name="test_timer" isExecutable="true">
|
||||||
<bpmn:startEvent id="StartEvent_1">
|
<bpmn:startEvent id="StartEvent_1">
|
||||||
<bpmn:outgoing>Flow_164sojd</bpmn:outgoing>
|
<bpmn:outgoing>Flow_164sojd</bpmn:outgoing>
|
||||||
|
@ -8,7 +8,7 @@
|
||||||
<bpmn:boundaryEvent id="Event_0y4hbl0" cancelActivity="false" attachedToRef="user_task">
|
<bpmn:boundaryEvent id="Event_0y4hbl0" cancelActivity="false" attachedToRef="user_task">
|
||||||
<bpmn:outgoing>Flow_0ac4lx5</bpmn:outgoing>
|
<bpmn:outgoing>Flow_0ac4lx5</bpmn:outgoing>
|
||||||
<bpmn:timerEventDefinition id="TimerEventDefinition_1w16uhl">
|
<bpmn:timerEventDefinition id="TimerEventDefinition_1w16uhl">
|
||||||
<bpmn:timeDuration xsi:type="bpmn:tFormalExpression">timedelta(milliseconds=2)</bpmn:timeDuration>
|
<bpmn:timeDuration xsi:type="bpmn:tFormalExpression">"PT0.002S"</bpmn:timeDuration>
|
||||||
</bpmn:timerEventDefinition>
|
</bpmn:timerEventDefinition>
|
||||||
</bpmn:boundaryEvent>
|
</bpmn:boundaryEvent>
|
||||||
<bpmn:sequenceFlow id="Flow_0ac4lx5" sourceRef="Event_0y4hbl0" targetRef="set_variable" />
|
<bpmn:sequenceFlow id="Flow_0ac4lx5" sourceRef="Event_0y4hbl0" targetRef="set_variable" />
|
||||||
|
@ -34,32 +34,23 @@
|
||||||
</bpmn:process>
|
</bpmn:process>
|
||||||
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
||||||
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="test_timer">
|
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="test_timer">
|
||||||
<bpmndi:BPMNEdge id="Flow_164sojd_di" bpmnElement="Flow_164sojd">
|
|
||||||
<di:waypoint x="188" y="117" />
|
|
||||||
<di:waypoint x="220" y="117" />
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNEdge id="Flow_0ac4lx5_di" bpmnElement="Flow_0ac4lx5">
|
|
||||||
<di:waypoint x="420" y="175" />
|
|
||||||
<di:waypoint x="420" y="240" />
|
|
||||||
<di:waypoint x="490" y="240" />
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNEdge id="Flow_04tuv5z_di" bpmnElement="Flow_04tuv5z">
|
|
||||||
<di:waypoint x="460" y="117" />
|
|
||||||
<di:waypoint x="542" y="117" />
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNEdge id="Flow_1m2vq4v_di" bpmnElement="Flow_1m2vq4v">
|
<bpmndi:BPMNEdge id="Flow_1m2vq4v_di" bpmnElement="Flow_1m2vq4v">
|
||||||
<di:waypoint x="320" y="117" />
|
<di:waypoint x="320" y="117" />
|
||||||
<di:waypoint x="360" y="117" />
|
<di:waypoint x="360" y="117" />
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNShape id="Activity_1oduoqz_di" bpmnElement="set_variable">
|
<bpmndi:BPMNEdge id="Flow_04tuv5z_di" bpmnElement="Flow_04tuv5z">
|
||||||
<dc:Bounds x="490" y="200" width="100" height="80" />
|
<di:waypoint x="460" y="117" />
|
||||||
</bpmndi:BPMNShape>
|
<di:waypoint x="682" y="117" />
|
||||||
<bpmndi:BPMNShape id="Event_0olfqht_di" bpmnElement="final_end_event">
|
</bpmndi:BPMNEdge>
|
||||||
<dc:Bounds x="542" y="99" width="36" height="36" />
|
<bpmndi:BPMNEdge id="Flow_0ac4lx5_di" bpmnElement="Flow_0ac4lx5">
|
||||||
<bpmndi:BPMNLabel>
|
<di:waypoint x="420" y="175" />
|
||||||
<dc:Bounds x="527" y="142" width="69" height="14" />
|
<di:waypoint x="420" y="240" />
|
||||||
</bpmndi:BPMNLabel>
|
<di:waypoint x="460" y="240" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_164sojd_di" bpmnElement="Flow_164sojd">
|
||||||
|
<di:waypoint x="188" y="117" />
|
||||||
|
<di:waypoint x="220" y="117" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
|
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
|
||||||
<dc:Bounds x="152" y="99" width="36" height="36" />
|
<dc:Bounds x="152" y="99" width="36" height="36" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
|
@ -69,6 +60,15 @@
|
||||||
<bpmndi:BPMNShape id="Activity_0hx9z9f_di" bpmnElement="user_task">
|
<bpmndi:BPMNShape id="Activity_0hx9z9f_di" bpmnElement="user_task">
|
||||||
<dc:Bounds x="360" y="77" width="100" height="80" />
|
<dc:Bounds x="360" y="77" width="100" height="80" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="Event_0olfqht_di" bpmnElement="final_end_event">
|
||||||
|
<dc:Bounds x="682" y="99" width="36" height="36" />
|
||||||
|
<bpmndi:BPMNLabel>
|
||||||
|
<dc:Bounds x="667" y="142" width="69" height="14" />
|
||||||
|
</bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="Activity_1oduoqz_di" bpmnElement="set_variable">
|
||||||
|
<dc:Bounds x="460" y="200" width="100" height="80" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNShape id="Event_0w4k4ro_di" bpmnElement="Event_0y4hbl0">
|
<bpmndi:BPMNShape id="Event_0w4k4ro_di" bpmnElement="Event_0y4hbl0">
|
||||||
<dc:Bounds x="402" y="139" width="36" height="36" />
|
<dc:Bounds x="402" y="139" width="36" height="36" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
<bpmn:incoming>Flow_1rfbrlf</bpmn:incoming>
|
<bpmn:incoming>Flow_1rfbrlf</bpmn:incoming>
|
||||||
<bpmn:outgoing>Flow_0mppjk9</bpmn:outgoing>
|
<bpmn:outgoing>Flow_0mppjk9</bpmn:outgoing>
|
||||||
<bpmn:timerEventDefinition id="TimerEventDefinition_0reo0gl">
|
<bpmn:timerEventDefinition id="TimerEventDefinition_0reo0gl">
|
||||||
<bpmn:timeDuration xsi:type="bpmn:tFormalExpression">timedelta(seconds=1)</bpmn:timeDuration>
|
<bpmn:timeDuration xsi:type="bpmn:tFormalExpression">"PT1S"</bpmn:timeDuration>
|
||||||
</bpmn:timerEventDefinition>
|
</bpmn:timerEventDefinition>
|
||||||
</bpmn:intermediateCatchEvent>
|
</bpmn:intermediateCatchEvent>
|
||||||
<bpmn:sequenceFlow id="Flow_1rfbrlf" sourceRef="Gateway_1434v9l" targetRef="timer_event" />
|
<bpmn:sequenceFlow id="Flow_1rfbrlf" sourceRef="Gateway_1434v9l" targetRef="timer_event" />
|
||||||
|
|
|
@ -0,0 +1,131 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_1cze19k" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.11.1" modeler:executionPlatform="Camunda Platform" modeler:executionPlatformVersion="7.15.0">
|
||||||
|
<bpmn:process id="main" isExecutable="true">
|
||||||
|
<bpmn:startEvent id="StartEvent_1">
|
||||||
|
<bpmn:outgoing>Flow_1g5ma8d</bpmn:outgoing>
|
||||||
|
</bpmn:startEvent>
|
||||||
|
<bpmn:sequenceFlow id="Flow_1g5ma8d" sourceRef="StartEvent_1" targetRef="set_data" />
|
||||||
|
<bpmn:sequenceFlow id="Flow_1g7lmw3" sourceRef="set_data" targetRef="first" />
|
||||||
|
<bpmn:inclusiveGateway id="first" default="default">
|
||||||
|
<bpmn:incoming>Flow_1g7lmw3</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>default</bpmn:outgoing>
|
||||||
|
<bpmn:outgoing>u_positive</bpmn:outgoing>
|
||||||
|
<bpmn:outgoing>w_positive</bpmn:outgoing>
|
||||||
|
</bpmn:inclusiveGateway>
|
||||||
|
<bpmn:sequenceFlow id="default" sourceRef="first" targetRef="increment_v" />
|
||||||
|
<bpmn:sequenceFlow id="u_positive" name="u positive " sourceRef="first" targetRef="u_plus_v">
|
||||||
|
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">u > 0</bpmn:conditionExpression>
|
||||||
|
</bpmn:sequenceFlow>
|
||||||
|
<bpmn:sequenceFlow id="w_positive" name="w positive" sourceRef="first" targetRef="w_plus_v">
|
||||||
|
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">w > 0</bpmn:conditionExpression>
|
||||||
|
</bpmn:sequenceFlow>
|
||||||
|
<bpmn:sequenceFlow id="Flow_0byxq9y" sourceRef="u_plus_v" targetRef="second" />
|
||||||
|
<bpmn:inclusiveGateway id="second">
|
||||||
|
<bpmn:incoming>Flow_0byxq9y</bpmn:incoming>
|
||||||
|
<bpmn:incoming>Flow_0hatxr4</bpmn:incoming>
|
||||||
|
<bpmn:incoming>Flow_17jgshs</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>check_v</bpmn:outgoing>
|
||||||
|
</bpmn:inclusiveGateway>
|
||||||
|
<bpmn:sequenceFlow id="Flow_0hatxr4" sourceRef="w_plus_v" targetRef="second" />
|
||||||
|
<bpmn:sequenceFlow id="Flow_17jgshs" sourceRef="increment_v" targetRef="second" />
|
||||||
|
<bpmn:endEvent id="Event_05yg5je">
|
||||||
|
<bpmn:incoming>check_v</bpmn:incoming>
|
||||||
|
</bpmn:endEvent>
|
||||||
|
<bpmn:sequenceFlow id="check_v" sourceRef="second" targetRef="Event_05yg5je">
|
||||||
|
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">v == 0</bpmn:conditionExpression>
|
||||||
|
</bpmn:sequenceFlow>
|
||||||
|
<bpmn:userTask id="set_data" name="Set Data">
|
||||||
|
<bpmn:incoming>Flow_1g5ma8d</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>Flow_1g7lmw3</bpmn:outgoing>
|
||||||
|
</bpmn:userTask>
|
||||||
|
<bpmn:scriptTask id="increment_v" name="v += 1">
|
||||||
|
<bpmn:incoming>default</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>Flow_17jgshs</bpmn:outgoing>
|
||||||
|
<bpmn:script>v += 1</bpmn:script>
|
||||||
|
</bpmn:scriptTask>
|
||||||
|
<bpmn:scriptTask id="u_plus_v" name="u += v">
|
||||||
|
<bpmn:incoming>u_positive</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>Flow_0byxq9y</bpmn:outgoing>
|
||||||
|
<bpmn:script>u += v</bpmn:script>
|
||||||
|
</bpmn:scriptTask>
|
||||||
|
<bpmn:scriptTask id="w_plus_v" name="w += v">
|
||||||
|
<bpmn:incoming>w_positive</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>Flow_0hatxr4</bpmn:outgoing>
|
||||||
|
<bpmn:script>w += v</bpmn:script>
|
||||||
|
</bpmn:scriptTask>
|
||||||
|
</bpmn:process>
|
||||||
|
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
||||||
|
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="main">
|
||||||
|
<bpmndi:BPMNEdge id="Flow_0axvo8d_di" bpmnElement="check_v">
|
||||||
|
<di:waypoint x="735" y="117" />
|
||||||
|
<di:waypoint x="792" y="117" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_17jgshs_di" bpmnElement="Flow_17jgshs">
|
||||||
|
<di:waypoint x="630" y="117" />
|
||||||
|
<di:waypoint x="685" y="117" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_0hatxr4_di" bpmnElement="Flow_0hatxr4">
|
||||||
|
<di:waypoint x="630" y="340" />
|
||||||
|
<di:waypoint x="710" y="340" />
|
||||||
|
<di:waypoint x="710" y="142" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_0byxq9y_di" bpmnElement="Flow_0byxq9y">
|
||||||
|
<di:waypoint x="630" y="230" />
|
||||||
|
<di:waypoint x="710" y="230" />
|
||||||
|
<di:waypoint x="710" y="142" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_13u1611_di" bpmnElement="w_positive">
|
||||||
|
<di:waypoint x="450" y="142" />
|
||||||
|
<di:waypoint x="450" y="340" />
|
||||||
|
<di:waypoint x="530" y="340" />
|
||||||
|
<bpmndi:BPMNLabel>
|
||||||
|
<dc:Bounds x="458" y="323" width="48" height="14" />
|
||||||
|
</bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_0qf291b_di" bpmnElement="u_positive">
|
||||||
|
<di:waypoint x="450" y="142" />
|
||||||
|
<di:waypoint x="450" y="230" />
|
||||||
|
<di:waypoint x="530" y="230" />
|
||||||
|
<bpmndi:BPMNLabel>
|
||||||
|
<dc:Bounds x="457" y="210" width="47" height="40" />
|
||||||
|
</bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_070yjdf_di" bpmnElement="default">
|
||||||
|
<di:waypoint x="475" y="117" />
|
||||||
|
<di:waypoint x="530" y="117" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_1g7lmw3_di" bpmnElement="Flow_1g7lmw3">
|
||||||
|
<di:waypoint x="370" y="117" />
|
||||||
|
<di:waypoint x="425" y="117" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_1g5ma8d_di" bpmnElement="Flow_1g5ma8d">
|
||||||
|
<di:waypoint x="215" y="117" />
|
||||||
|
<di:waypoint x="270" y="117" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
|
||||||
|
<dc:Bounds x="179" y="99" width="36" height="36" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="Gateway_0ym4oxy_di" bpmnElement="first">
|
||||||
|
<dc:Bounds x="425" y="92" width="50" height="50" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="Gateway_0taxy2e_di" bpmnElement="second">
|
||||||
|
<dc:Bounds x="685" y="92" width="50" height="50" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="Event_05yg5je_di" bpmnElement="Event_05yg5je">
|
||||||
|
<dc:Bounds x="792" y="99" width="36" height="36" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="Activity_1mqdr3e_di" bpmnElement="set_data">
|
||||||
|
<dc:Bounds x="270" y="77" width="100" height="80" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="Activity_0kkbcp1_di" bpmnElement="increment_v">
|
||||||
|
<dc:Bounds x="530" y="77" width="100" height="80" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="Activity_0ttkifo_di" bpmnElement="u_plus_v">
|
||||||
|
<dc:Bounds x="530" y="190" width="100" height="80" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="Activity_0h6sdsx_di" bpmnElement="w_plus_v">
|
||||||
|
<dc:Bounds x="530" y="300" width="100" height="80" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
</bpmndi:BPMNPlane>
|
||||||
|
</bpmndi:BPMNDiagram>
|
||||||
|
</bpmn:definitions>
|
|
@ -0,0 +1,590 @@
|
||||||
|
{
|
||||||
|
"serializer_version": "1.1",
|
||||||
|
"data": {},
|
||||||
|
"last_task": "6bd75ef7-d765-4d0b-83ba-1158d2e9ed0a",
|
||||||
|
"success": true,
|
||||||
|
"tasks": {
|
||||||
|
"ccca8dcf-e833-494a-9281-ec133223ab75": {
|
||||||
|
"id": "ccca8dcf-e833-494a-9281-ec133223ab75",
|
||||||
|
"parent": null,
|
||||||
|
"children": [
|
||||||
|
"6bd75ef7-d765-4d0b-83ba-1158d2e9ed0a"
|
||||||
|
],
|
||||||
|
"last_state_change": 1673895963.536834,
|
||||||
|
"state": 32,
|
||||||
|
"task_spec": "Root",
|
||||||
|
"triggered": false,
|
||||||
|
"workflow_name": "migration_test",
|
||||||
|
"internal_data": {},
|
||||||
|
"data": {}
|
||||||
|
},
|
||||||
|
"6bd75ef7-d765-4d0b-83ba-1158d2e9ed0a": {
|
||||||
|
"id": "6bd75ef7-d765-4d0b-83ba-1158d2e9ed0a",
|
||||||
|
"parent": "ccca8dcf-e833-494a-9281-ec133223ab75",
|
||||||
|
"children": [
|
||||||
|
"34a70bb5-88f7-4a71-9dea-da6893437633"
|
||||||
|
],
|
||||||
|
"last_state_change": 1673896001.8471706,
|
||||||
|
"state": 32,
|
||||||
|
"task_spec": "Start",
|
||||||
|
"triggered": false,
|
||||||
|
"workflow_name": "migration_test",
|
||||||
|
"internal_data": {},
|
||||||
|
"data": {}
|
||||||
|
},
|
||||||
|
"34a70bb5-88f7-4a71-9dea-da6893437633": {
|
||||||
|
"id": "34a70bb5-88f7-4a71-9dea-da6893437633",
|
||||||
|
"parent": "6bd75ef7-d765-4d0b-83ba-1158d2e9ed0a",
|
||||||
|
"children": [
|
||||||
|
"28d6b82b-64e9-41ad-9620-cc00497c859f",
|
||||||
|
"deb1eb94-6537-4cb8-a7e6-ea28c4983732"
|
||||||
|
],
|
||||||
|
"last_state_change": 1673896001.8511543,
|
||||||
|
"state": 8,
|
||||||
|
"task_spec": "StartEvent_1",
|
||||||
|
"triggered": false,
|
||||||
|
"workflow_name": "migration_test",
|
||||||
|
"internal_data": {
|
||||||
|
"repeat": 2,
|
||||||
|
"start_time": "2023-01-16 14:06:41.847524"
|
||||||
|
},
|
||||||
|
"data": {
|
||||||
|
"repeat_count": 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"28d6b82b-64e9-41ad-9620-cc00497c859f": {
|
||||||
|
"id": "28d6b82b-64e9-41ad-9620-cc00497c859f",
|
||||||
|
"parent": "34a70bb5-88f7-4a71-9dea-da6893437633",
|
||||||
|
"children": [
|
||||||
|
"a07abe4c-8122-494f-8b43-b3c44d3f7e34",
|
||||||
|
"975c49d4-dceb-4137-829c-64c657894701"
|
||||||
|
],
|
||||||
|
"last_state_change": 1673895963.5375524,
|
||||||
|
"state": 4,
|
||||||
|
"task_spec": "StartEvent_1",
|
||||||
|
"triggered": false,
|
||||||
|
"workflow_name": "migration_test",
|
||||||
|
"internal_data": {},
|
||||||
|
"data": {}
|
||||||
|
},
|
||||||
|
"a07abe4c-8122-494f-8b43-b3c44d3f7e34": {
|
||||||
|
"id": "a07abe4c-8122-494f-8b43-b3c44d3f7e34",
|
||||||
|
"parent": "28d6b82b-64e9-41ad-9620-cc00497c859f",
|
||||||
|
"children": [],
|
||||||
|
"last_state_change": 1673895963.5380332,
|
||||||
|
"state": 4,
|
||||||
|
"task_spec": "return_to_StartEvent_1",
|
||||||
|
"triggered": false,
|
||||||
|
"workflow_name": "migration_test",
|
||||||
|
"internal_data": {},
|
||||||
|
"data": {}
|
||||||
|
},
|
||||||
|
"975c49d4-dceb-4137-829c-64c657894701": {
|
||||||
|
"id": "975c49d4-dceb-4137-829c-64c657894701",
|
||||||
|
"parent": "28d6b82b-64e9-41ad-9620-cc00497c859f",
|
||||||
|
"children": [
|
||||||
|
"e937e37e-04a7-45b6-b6a4-7615876ae19f"
|
||||||
|
],
|
||||||
|
"last_state_change": 1673895963.5380924,
|
||||||
|
"state": 4,
|
||||||
|
"task_spec": "task_1",
|
||||||
|
"triggered": false,
|
||||||
|
"workflow_name": "migration_test",
|
||||||
|
"internal_data": {},
|
||||||
|
"data": {}
|
||||||
|
},
|
||||||
|
"e937e37e-04a7-45b6-b6a4-7615876ae19f": {
|
||||||
|
"id": "e937e37e-04a7-45b6-b6a4-7615876ae19f",
|
||||||
|
"parent": "975c49d4-dceb-4137-829c-64c657894701",
|
||||||
|
"children": [
|
||||||
|
"42036b41-f934-457a-86e7-cc3b65882073"
|
||||||
|
],
|
||||||
|
"last_state_change": 1673895963.5384276,
|
||||||
|
"state": 4,
|
||||||
|
"task_spec": "Event_1uhhxu1",
|
||||||
|
"triggered": false,
|
||||||
|
"workflow_name": "migration_test",
|
||||||
|
"internal_data": {},
|
||||||
|
"data": {}
|
||||||
|
},
|
||||||
|
"42036b41-f934-457a-86e7-cc3b65882073": {
|
||||||
|
"id": "42036b41-f934-457a-86e7-cc3b65882073",
|
||||||
|
"parent": "e937e37e-04a7-45b6-b6a4-7615876ae19f",
|
||||||
|
"children": [
|
||||||
|
"583f99df-db90-4237-8718-c1cf638c4391",
|
||||||
|
"24f73965-e218-4f94-8ca9-5267cbf635ad"
|
||||||
|
],
|
||||||
|
"last_state_change": 1673895963.5386448,
|
||||||
|
"state": 4,
|
||||||
|
"task_spec": "task_2.BoundaryEventParent",
|
||||||
|
"triggered": false,
|
||||||
|
"workflow_name": "migration_test",
|
||||||
|
"internal_data": {},
|
||||||
|
"data": {}
|
||||||
|
},
|
||||||
|
"583f99df-db90-4237-8718-c1cf638c4391": {
|
||||||
|
"id": "583f99df-db90-4237-8718-c1cf638c4391",
|
||||||
|
"parent": "42036b41-f934-457a-86e7-cc3b65882073",
|
||||||
|
"children": [
|
||||||
|
"825b0a7b-b33e-4692-a11c-9c0fb49e20c0"
|
||||||
|
],
|
||||||
|
"last_state_change": 1673895963.5391376,
|
||||||
|
"state": 4,
|
||||||
|
"task_spec": "task_2",
|
||||||
|
"triggered": false,
|
||||||
|
"workflow_name": "migration_test",
|
||||||
|
"internal_data": {},
|
||||||
|
"data": {}
|
||||||
|
},
|
||||||
|
"825b0a7b-b33e-4692-a11c-9c0fb49e20c0": {
|
||||||
|
"id": "825b0a7b-b33e-4692-a11c-9c0fb49e20c0",
|
||||||
|
"parent": "583f99df-db90-4237-8718-c1cf638c4391",
|
||||||
|
"children": [
|
||||||
|
"e5b6e43e-2ba9-42a2-90c0-25202f096273"
|
||||||
|
],
|
||||||
|
"last_state_change": 1673895963.5393665,
|
||||||
|
"state": 4,
|
||||||
|
"task_spec": "Event_1vzwq7p",
|
||||||
|
"triggered": false,
|
||||||
|
"workflow_name": "migration_test",
|
||||||
|
"internal_data": {},
|
||||||
|
"data": {}
|
||||||
|
},
|
||||||
|
"e5b6e43e-2ba9-42a2-90c0-25202f096273": {
|
||||||
|
"id": "e5b6e43e-2ba9-42a2-90c0-25202f096273",
|
||||||
|
"parent": "825b0a7b-b33e-4692-a11c-9c0fb49e20c0",
|
||||||
|
"children": [
|
||||||
|
"0a5fbc15-2807-463d-9762-b7b724835a40"
|
||||||
|
],
|
||||||
|
"last_state_change": 1673895963.5396175,
|
||||||
|
"state": 4,
|
||||||
|
"task_spec": "migration_test.EndJoin",
|
||||||
|
"triggered": false,
|
||||||
|
"workflow_name": "migration_test",
|
||||||
|
"internal_data": {},
|
||||||
|
"data": {}
|
||||||
|
},
|
||||||
|
"0a5fbc15-2807-463d-9762-b7b724835a40": {
|
||||||
|
"id": "0a5fbc15-2807-463d-9762-b7b724835a40",
|
||||||
|
"parent": "e5b6e43e-2ba9-42a2-90c0-25202f096273",
|
||||||
|
"children": [],
|
||||||
|
"last_state_change": 1673895963.5398767,
|
||||||
|
"state": 4,
|
||||||
|
"task_spec": "End",
|
||||||
|
"triggered": false,
|
||||||
|
"workflow_name": "migration_test",
|
||||||
|
"internal_data": {},
|
||||||
|
"data": {}
|
||||||
|
},
|
||||||
|
"24f73965-e218-4f94-8ca9-5267cbf635ad": {
|
||||||
|
"id": "24f73965-e218-4f94-8ca9-5267cbf635ad",
|
||||||
|
"parent": "42036b41-f934-457a-86e7-cc3b65882073",
|
||||||
|
"children": [],
|
||||||
|
"last_state_change": 1673895963.5390024,
|
||||||
|
"state": 1,
|
||||||
|
"task_spec": "Event_1bkh7yi",
|
||||||
|
"triggered": false,
|
||||||
|
"workflow_name": "migration_test",
|
||||||
|
"internal_data": {},
|
||||||
|
"data": {}
|
||||||
|
},
|
||||||
|
"deb1eb94-6537-4cb8-a7e6-ea28c4983732": {
|
||||||
|
"id": "deb1eb94-6537-4cb8-a7e6-ea28c4983732",
|
||||||
|
"parent": "34a70bb5-88f7-4a71-9dea-da6893437633",
|
||||||
|
"children": [
|
||||||
|
"56045c5b-9400-4fea-ae82-b357268672f8"
|
||||||
|
],
|
||||||
|
"last_state_change": 1673895963.5376105,
|
||||||
|
"state": 4,
|
||||||
|
"task_spec": "task_1",
|
||||||
|
"triggered": false,
|
||||||
|
"workflow_name": "migration_test",
|
||||||
|
"internal_data": {},
|
||||||
|
"data": {}
|
||||||
|
},
|
||||||
|
"56045c5b-9400-4fea-ae82-b357268672f8": {
|
||||||
|
"id": "56045c5b-9400-4fea-ae82-b357268672f8",
|
||||||
|
"parent": "deb1eb94-6537-4cb8-a7e6-ea28c4983732",
|
||||||
|
"children": [
|
||||||
|
"fd71446e-d8b4-42dd-980b-624a82848853"
|
||||||
|
],
|
||||||
|
"last_state_change": 1673895963.540343,
|
||||||
|
"state": 4,
|
||||||
|
"task_spec": "Event_1uhhxu1",
|
||||||
|
"triggered": false,
|
||||||
|
"workflow_name": "migration_test",
|
||||||
|
"internal_data": {},
|
||||||
|
"data": {}
|
||||||
|
},
|
||||||
|
"fd71446e-d8b4-42dd-980b-624a82848853": {
|
||||||
|
"id": "fd71446e-d8b4-42dd-980b-624a82848853",
|
||||||
|
"parent": "56045c5b-9400-4fea-ae82-b357268672f8",
|
||||||
|
"children": [
|
||||||
|
"8960300d-28c1-463d-b7a1-29e872c02d98",
|
||||||
|
"a6bca2b5-7064-49c9-a172-18c1435d173d"
|
||||||
|
],
|
||||||
|
"last_state_change": 1673895963.5405483,
|
||||||
|
"state": 4,
|
||||||
|
"task_spec": "task_2.BoundaryEventParent",
|
||||||
|
"triggered": false,
|
||||||
|
"workflow_name": "migration_test",
|
||||||
|
"internal_data": {},
|
||||||
|
"data": {}
|
||||||
|
},
|
||||||
|
"8960300d-28c1-463d-b7a1-29e872c02d98": {
|
||||||
|
"id": "8960300d-28c1-463d-b7a1-29e872c02d98",
|
||||||
|
"parent": "fd71446e-d8b4-42dd-980b-624a82848853",
|
||||||
|
"children": [
|
||||||
|
"6b33df30-07fd-4572-abfd-f29eb9906f0b"
|
||||||
|
],
|
||||||
|
"last_state_change": 1673895963.540891,
|
||||||
|
"state": 4,
|
||||||
|
"task_spec": "task_2",
|
||||||
|
"triggered": false,
|
||||||
|
"workflow_name": "migration_test",
|
||||||
|
"internal_data": {},
|
||||||
|
"data": {}
|
||||||
|
},
|
||||||
|
"6b33df30-07fd-4572-abfd-f29eb9906f0b": {
|
||||||
|
"id": "6b33df30-07fd-4572-abfd-f29eb9906f0b",
|
||||||
|
"parent": "8960300d-28c1-463d-b7a1-29e872c02d98",
|
||||||
|
"children": [
|
||||||
|
"0d571ca2-ffb1-4d8b-9dda-4e8cbd8b8ae1"
|
||||||
|
],
|
||||||
|
"last_state_change": 1673895963.5411036,
|
||||||
|
"state": 4,
|
||||||
|
"task_spec": "Event_1vzwq7p",
|
||||||
|
"triggered": false,
|
||||||
|
"workflow_name": "migration_test",
|
||||||
|
"internal_data": {},
|
||||||
|
"data": {}
|
||||||
|
},
|
||||||
|
"0d571ca2-ffb1-4d8b-9dda-4e8cbd8b8ae1": {
|
||||||
|
"id": "0d571ca2-ffb1-4d8b-9dda-4e8cbd8b8ae1",
|
||||||
|
"parent": "6b33df30-07fd-4572-abfd-f29eb9906f0b",
|
||||||
|
"children": [
|
||||||
|
"1e8fc80a-1968-4411-a10b-16cb4261f3b8"
|
||||||
|
],
|
||||||
|
"last_state_change": 1673895963.5413618,
|
||||||
|
"state": 4,
|
||||||
|
"task_spec": "migration_test.EndJoin",
|
||||||
|
"triggered": false,
|
||||||
|
"workflow_name": "migration_test",
|
||||||
|
"internal_data": {},
|
||||||
|
"data": {}
|
||||||
|
},
|
||||||
|
"1e8fc80a-1968-4411-a10b-16cb4261f3b8": {
|
||||||
|
"id": "1e8fc80a-1968-4411-a10b-16cb4261f3b8",
|
||||||
|
"parent": "0d571ca2-ffb1-4d8b-9dda-4e8cbd8b8ae1",
|
||||||
|
"children": [],
|
||||||
|
"last_state_change": 1673895963.541654,
|
||||||
|
"state": 4,
|
||||||
|
"task_spec": "End",
|
||||||
|
"triggered": false,
|
||||||
|
"workflow_name": "migration_test",
|
||||||
|
"internal_data": {},
|
||||||
|
"data": {}
|
||||||
|
},
|
||||||
|
"a6bca2b5-7064-49c9-a172-18c1435d173d": {
|
||||||
|
"id": "a6bca2b5-7064-49c9-a172-18c1435d173d",
|
||||||
|
"parent": "fd71446e-d8b4-42dd-980b-624a82848853",
|
||||||
|
"children": [],
|
||||||
|
"last_state_change": 1673895963.5408392,
|
||||||
|
"state": 1,
|
||||||
|
"task_spec": "Event_1bkh7yi",
|
||||||
|
"triggered": false,
|
||||||
|
"workflow_name": "migration_test",
|
||||||
|
"internal_data": {},
|
||||||
|
"data": {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "ccca8dcf-e833-494a-9281-ec133223ab75",
|
||||||
|
"spec": {
|
||||||
|
"name": "migration_test",
|
||||||
|
"description": "migration_test",
|
||||||
|
"file": "/home/essweine/work/sartography/code/SpiffWorkflow/tests/SpiffWorkflow/bpmn/data/serialization/v1-1.bpmn",
|
||||||
|
"task_specs": {
|
||||||
|
"Start": {
|
||||||
|
"id": "migration_test_1",
|
||||||
|
"name": "Start",
|
||||||
|
"description": "",
|
||||||
|
"manual": false,
|
||||||
|
"internal": false,
|
||||||
|
"lookahead": 2,
|
||||||
|
"inputs": [],
|
||||||
|
"outputs": [
|
||||||
|
"StartEvent_1"
|
||||||
|
],
|
||||||
|
"typename": "StartTask"
|
||||||
|
},
|
||||||
|
"migration_test.EndJoin": {
|
||||||
|
"id": "migration_test_2",
|
||||||
|
"name": "migration_test.EndJoin",
|
||||||
|
"description": "",
|
||||||
|
"manual": false,
|
||||||
|
"internal": false,
|
||||||
|
"lookahead": 2,
|
||||||
|
"inputs": [
|
||||||
|
"Event_1vzwq7p"
|
||||||
|
],
|
||||||
|
"outputs": [
|
||||||
|
"End"
|
||||||
|
],
|
||||||
|
"typename": "_EndJoin"
|
||||||
|
},
|
||||||
|
"End": {
|
||||||
|
"id": "migration_test_3",
|
||||||
|
"name": "End",
|
||||||
|
"description": "",
|
||||||
|
"manual": false,
|
||||||
|
"internal": false,
|
||||||
|
"lookahead": 2,
|
||||||
|
"inputs": [
|
||||||
|
"migration_test.EndJoin"
|
||||||
|
],
|
||||||
|
"outputs": [],
|
||||||
|
"typename": "Simple"
|
||||||
|
},
|
||||||
|
"StartEvent_1": {
|
||||||
|
"id": "migration_test_4",
|
||||||
|
"name": "StartEvent_1",
|
||||||
|
"description": null,
|
||||||
|
"manual": false,
|
||||||
|
"internal": false,
|
||||||
|
"lookahead": 2,
|
||||||
|
"inputs": [
|
||||||
|
"Start",
|
||||||
|
"StartEvent_1"
|
||||||
|
],
|
||||||
|
"outputs": [
|
||||||
|
"StartEvent_1",
|
||||||
|
"task_1"
|
||||||
|
],
|
||||||
|
"lane": null,
|
||||||
|
"documentation": null,
|
||||||
|
"loopTask": false,
|
||||||
|
"position": {
|
||||||
|
"x": 179.0,
|
||||||
|
"y": 79.0
|
||||||
|
},
|
||||||
|
"data_input_associations": [],
|
||||||
|
"data_output_associations": [],
|
||||||
|
"event_definition": {
|
||||||
|
"internal": true,
|
||||||
|
"external": true,
|
||||||
|
"label": "StartEvent_1",
|
||||||
|
"cycle_definition": "(2,timedelta(seconds=0.1))",
|
||||||
|
"typename": "CycleTimerEventDefinition"
|
||||||
|
},
|
||||||
|
"typename": "StartEvent",
|
||||||
|
"extensions": {}
|
||||||
|
},
|
||||||
|
"task_1": {
|
||||||
|
"id": "migration_test_5",
|
||||||
|
"name": "task_1",
|
||||||
|
"description": "Task 1",
|
||||||
|
"manual": false,
|
||||||
|
"internal": false,
|
||||||
|
"lookahead": 2,
|
||||||
|
"inputs": [
|
||||||
|
"StartEvent_1"
|
||||||
|
],
|
||||||
|
"outputs": [
|
||||||
|
"Event_1uhhxu1"
|
||||||
|
],
|
||||||
|
"lane": null,
|
||||||
|
"documentation": null,
|
||||||
|
"loopTask": false,
|
||||||
|
"position": {
|
||||||
|
"x": 290.0,
|
||||||
|
"y": 57.0
|
||||||
|
},
|
||||||
|
"data_input_associations": [],
|
||||||
|
"data_output_associations": [],
|
||||||
|
"script": "pass",
|
||||||
|
"typename": "ScriptTask",
|
||||||
|
"extensions": {}
|
||||||
|
},
|
||||||
|
"Event_1uhhxu1": {
|
||||||
|
"id": "migration_test_6",
|
||||||
|
"name": "Event_1uhhxu1",
|
||||||
|
"description": null,
|
||||||
|
"manual": false,
|
||||||
|
"internal": false,
|
||||||
|
"lookahead": 2,
|
||||||
|
"inputs": [
|
||||||
|
"task_1"
|
||||||
|
],
|
||||||
|
"outputs": [
|
||||||
|
"task_2.BoundaryEventParent"
|
||||||
|
],
|
||||||
|
"lane": null,
|
||||||
|
"documentation": null,
|
||||||
|
"loopTask": false,
|
||||||
|
"position": {
|
||||||
|
"x": 452.0,
|
||||||
|
"y": 79.0
|
||||||
|
},
|
||||||
|
"data_input_associations": [],
|
||||||
|
"data_output_associations": [],
|
||||||
|
"event_definition": {
|
||||||
|
"internal": true,
|
||||||
|
"external": true,
|
||||||
|
"label": "Event_1uhhxu1",
|
||||||
|
"dateTime": "datetime(2023, 1, 1)",
|
||||||
|
"typename": "TimerEventDefinition"
|
||||||
|
},
|
||||||
|
"typename": "IntermediateCatchEvent",
|
||||||
|
"extensions": {}
|
||||||
|
},
|
||||||
|
"task_2": {
|
||||||
|
"id": "migration_test_7",
|
||||||
|
"name": "task_2",
|
||||||
|
"description": "Task 2",
|
||||||
|
"manual": false,
|
||||||
|
"internal": false,
|
||||||
|
"lookahead": 2,
|
||||||
|
"inputs": [
|
||||||
|
"task_2.BoundaryEventParent"
|
||||||
|
],
|
||||||
|
"outputs": [
|
||||||
|
"Event_1vzwq7p"
|
||||||
|
],
|
||||||
|
"lane": null,
|
||||||
|
"documentation": null,
|
||||||
|
"loopTask": false,
|
||||||
|
"position": {
|
||||||
|
"x": 560.0,
|
||||||
|
"y": 57.0
|
||||||
|
},
|
||||||
|
"data_input_associations": [],
|
||||||
|
"data_output_associations": [],
|
||||||
|
"script": "time.sleep(0.5)",
|
||||||
|
"typename": "ScriptTask",
|
||||||
|
"extensions": {}
|
||||||
|
},
|
||||||
|
"task_2.BoundaryEventParent": {
|
||||||
|
"id": "migration_test_8",
|
||||||
|
"name": "task_2.BoundaryEventParent",
|
||||||
|
"description": "",
|
||||||
|
"manual": false,
|
||||||
|
"internal": false,
|
||||||
|
"lookahead": 2,
|
||||||
|
"inputs": [
|
||||||
|
"Event_1uhhxu1"
|
||||||
|
],
|
||||||
|
"outputs": [
|
||||||
|
"task_2",
|
||||||
|
"Event_1bkh7yi"
|
||||||
|
],
|
||||||
|
"lane": null,
|
||||||
|
"documentation": null,
|
||||||
|
"loopTask": false,
|
||||||
|
"position": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0
|
||||||
|
},
|
||||||
|
"data_input_associations": [],
|
||||||
|
"data_output_associations": [],
|
||||||
|
"main_child_task_spec": "task_2",
|
||||||
|
"typename": "_BoundaryEventParent"
|
||||||
|
},
|
||||||
|
"Event_1bkh7yi": {
|
||||||
|
"id": "migration_test_9",
|
||||||
|
"name": "Event_1bkh7yi",
|
||||||
|
"description": null,
|
||||||
|
"manual": false,
|
||||||
|
"internal": false,
|
||||||
|
"lookahead": 2,
|
||||||
|
"inputs": [
|
||||||
|
"task_2.BoundaryEventParent"
|
||||||
|
],
|
||||||
|
"outputs": [],
|
||||||
|
"lane": null,
|
||||||
|
"documentation": null,
|
||||||
|
"loopTask": false,
|
||||||
|
"position": {
|
||||||
|
"x": 592.0,
|
||||||
|
"y": 119.0
|
||||||
|
},
|
||||||
|
"data_input_associations": [],
|
||||||
|
"data_output_associations": [],
|
||||||
|
"event_definition": {
|
||||||
|
"internal": true,
|
||||||
|
"external": true,
|
||||||
|
"label": "Event_1bkh7yi",
|
||||||
|
"dateTime": "timedelta(seconds=0.1)",
|
||||||
|
"typename": "TimerEventDefinition"
|
||||||
|
},
|
||||||
|
"cancel_activity": true,
|
||||||
|
"typename": "BoundaryEvent",
|
||||||
|
"extensions": {}
|
||||||
|
},
|
||||||
|
"Event_1vzwq7p": {
|
||||||
|
"id": "migration_test_10",
|
||||||
|
"name": "Event_1vzwq7p",
|
||||||
|
"description": null,
|
||||||
|
"manual": false,
|
||||||
|
"internal": false,
|
||||||
|
"lookahead": 2,
|
||||||
|
"inputs": [
|
||||||
|
"task_2"
|
||||||
|
],
|
||||||
|
"outputs": [
|
||||||
|
"migration_test.EndJoin"
|
||||||
|
],
|
||||||
|
"lane": null,
|
||||||
|
"documentation": null,
|
||||||
|
"loopTask": false,
|
||||||
|
"position": {
|
||||||
|
"x": 742.0,
|
||||||
|
"y": 79.0
|
||||||
|
},
|
||||||
|
"data_input_associations": [],
|
||||||
|
"data_output_associations": [],
|
||||||
|
"event_definition": {
|
||||||
|
"internal": false,
|
||||||
|
"external": false,
|
||||||
|
"typename": "NoneEventDefinition"
|
||||||
|
},
|
||||||
|
"typename": "EndEvent",
|
||||||
|
"extensions": {}
|
||||||
|
},
|
||||||
|
"Root": {
|
||||||
|
"id": "migration_test_11",
|
||||||
|
"name": "Root",
|
||||||
|
"description": "",
|
||||||
|
"manual": false,
|
||||||
|
"internal": false,
|
||||||
|
"lookahead": 2,
|
||||||
|
"inputs": [],
|
||||||
|
"outputs": [],
|
||||||
|
"typename": "Simple"
|
||||||
|
},
|
||||||
|
"return_to_StartEvent_1": {
|
||||||
|
"id": "migration_test_12",
|
||||||
|
"name": "return_to_StartEvent_1",
|
||||||
|
"description": "",
|
||||||
|
"manual": false,
|
||||||
|
"internal": false,
|
||||||
|
"lookahead": 2,
|
||||||
|
"inputs": [
|
||||||
|
"Start",
|
||||||
|
"StartEvent_1"
|
||||||
|
],
|
||||||
|
"outputs": [],
|
||||||
|
"destination_id": "34a70bb5-88f7-4a71-9dea-da6893437633",
|
||||||
|
"destination_spec_name": "StartEvent_1",
|
||||||
|
"typename": "LoopResetTask"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"data_inputs": [],
|
||||||
|
"data_outputs": [],
|
||||||
|
"data_objects": {},
|
||||||
|
"correlation_keys": {},
|
||||||
|
"typename": "BpmnProcessSpec"
|
||||||
|
},
|
||||||
|
"subprocess_specs": {},
|
||||||
|
"subprocesses": {},
|
||||||
|
"bpmn_messages": []
|
||||||
|
}
|
|
@ -22,7 +22,7 @@
|
||||||
<bpmn:startEvent id="CycleStart">
|
<bpmn:startEvent id="CycleStart">
|
||||||
<bpmn:outgoing>Flow_0jtfzsk</bpmn:outgoing>
|
<bpmn:outgoing>Flow_0jtfzsk</bpmn:outgoing>
|
||||||
<bpmn:timerEventDefinition id="TimerEventDefinition_0za5f2h">
|
<bpmn:timerEventDefinition id="TimerEventDefinition_0za5f2h">
|
||||||
<bpmn:timeCycle xsi:type="bpmn:tFormalExpression">(2,timedelta(seconds=0.1))</bpmn:timeCycle>
|
<bpmn:timeCycle xsi:type="bpmn:tFormalExpression">"R2/PT0.1S"</bpmn:timeCycle>
|
||||||
</bpmn:timerEventDefinition>
|
</bpmn:timerEventDefinition>
|
||||||
</bpmn:startEvent>
|
</bpmn:startEvent>
|
||||||
<bpmn:scriptTask id="Refill_Coffee" name="Refill Coffee">
|
<bpmn:scriptTask id="Refill_Coffee" name="Refill Coffee">
|
||||||
|
@ -37,7 +37,7 @@
|
||||||
<bpmn:incoming>Flow_1pahvlr</bpmn:incoming>
|
<bpmn:incoming>Flow_1pahvlr</bpmn:incoming>
|
||||||
<bpmn:outgoing>Flow_05ejbm4</bpmn:outgoing>
|
<bpmn:outgoing>Flow_05ejbm4</bpmn:outgoing>
|
||||||
<bpmn:timerEventDefinition id="TimerEventDefinition_0o35ug0">
|
<bpmn:timerEventDefinition id="TimerEventDefinition_0o35ug0">
|
||||||
<bpmn:timeDuration xsi:type="bpmn:tFormalExpression">timedelta(seconds=0.5)</bpmn:timeDuration>
|
<bpmn:timeDuration xsi:type="bpmn:tFormalExpression">"PT0.5S"</bpmn:timeDuration>
|
||||||
</bpmn:timerEventDefinition>
|
</bpmn:timerEventDefinition>
|
||||||
</bpmn:intermediateCatchEvent>
|
</bpmn:intermediateCatchEvent>
|
||||||
<bpmn:endEvent id="EndItAll">
|
<bpmn:endEvent id="EndItAll">
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_0ilr8m3" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.7.0">
|
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_0ilr8m3" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.11.1">
|
||||||
<bpmn:process id="timer" isExecutable="true">
|
<bpmn:process id="timer" isExecutable="true">
|
||||||
<bpmn:startEvent id="StartEvent_1">
|
<bpmn:startEvent id="StartEvent_1">
|
||||||
<bpmn:outgoing>Flow_1pahvlr</bpmn:outgoing>
|
<bpmn:outgoing>Flow_1pahvlr</bpmn:outgoing>
|
||||||
|
@ -32,12 +32,32 @@
|
||||||
<bpmn:boundaryEvent id="CatchMessage" cancelActivity="false" attachedToRef="Get_Coffee">
|
<bpmn:boundaryEvent id="CatchMessage" cancelActivity="false" attachedToRef="Get_Coffee">
|
||||||
<bpmn:outgoing>Flow_1pzc4jz</bpmn:outgoing>
|
<bpmn:outgoing>Flow_1pzc4jz</bpmn:outgoing>
|
||||||
<bpmn:timerEventDefinition id="TimerEventDefinition_180fybf">
|
<bpmn:timerEventDefinition id="TimerEventDefinition_180fybf">
|
||||||
<bpmn:timeCycle xsi:type="bpmn:tFormalExpression">(2,timedelta(seconds=0.01))</bpmn:timeCycle>
|
<bpmn:timeCycle xsi:type="bpmn:tFormalExpression">"R2/PT0.1S"</bpmn:timeCycle>
|
||||||
</bpmn:timerEventDefinition>
|
</bpmn:timerEventDefinition>
|
||||||
</bpmn:boundaryEvent>
|
</bpmn:boundaryEvent>
|
||||||
</bpmn:process>
|
</bpmn:process>
|
||||||
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
||||||
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="timer">
|
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="timer">
|
||||||
|
<bpmndi:BPMNEdge id="Flow_09d7dp2_di" bpmnElement="Flow_09d7dp2">
|
||||||
|
<di:waypoint x="320" y="117" />
|
||||||
|
<di:waypoint x="370" y="117" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_1pzc4jz_di" bpmnElement="Flow_1pzc4jz">
|
||||||
|
<di:waypoint x="440" y="175" />
|
||||||
|
<di:waypoint x="440" y="210" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_1pahvlr_di" bpmnElement="Flow_1pahvlr">
|
||||||
|
<di:waypoint x="188" y="117" />
|
||||||
|
<di:waypoint x="220" y="117" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_1pvkgnu_di" bpmnElement="Flow_1pvkgnu">
|
||||||
|
<di:waypoint x="470" y="117" />
|
||||||
|
<di:waypoint x="500" y="117" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_1ekgt3x_di" bpmnElement="Flow_1ekgt3x">
|
||||||
|
<di:waypoint x="600" y="117" />
|
||||||
|
<di:waypoint x="632" y="117" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
|
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
|
||||||
<dc:Bounds x="152" y="99" width="36" height="36" />
|
<dc:Bounds x="152" y="99" width="36" height="36" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
|
@ -50,29 +70,9 @@
|
||||||
<bpmndi:BPMNShape id="Event_03w65sk_di" bpmnElement="Event_03w65sk">
|
<bpmndi:BPMNShape id="Event_03w65sk_di" bpmnElement="Event_03w65sk">
|
||||||
<dc:Bounds x="632" y="99" width="36" height="36" />
|
<dc:Bounds x="632" y="99" width="36" height="36" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNEdge id="Flow_1ekgt3x_di" bpmnElement="Flow_1ekgt3x">
|
|
||||||
<di:waypoint x="600" y="117" />
|
|
||||||
<di:waypoint x="632" y="117" />
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNEdge id="Flow_1pvkgnu_di" bpmnElement="Flow_1pvkgnu">
|
|
||||||
<di:waypoint x="470" y="117" />
|
|
||||||
<di:waypoint x="500" y="117" />
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNEdge id="Flow_1pahvlr_di" bpmnElement="Flow_1pahvlr">
|
|
||||||
<di:waypoint x="188" y="117" />
|
|
||||||
<di:waypoint x="220" y="117" />
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNEdge id="Flow_1pzc4jz_di" bpmnElement="Flow_1pzc4jz">
|
|
||||||
<di:waypoint x="440" y="175" />
|
|
||||||
<di:waypoint x="440" y="210" />
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNShape id="Activity_0xk1ts7_di" bpmnElement="Refill_Coffee">
|
<bpmndi:BPMNShape id="Activity_0xk1ts7_di" bpmnElement="Refill_Coffee">
|
||||||
<dc:Bounds x="390" y="210" width="100" height="80" />
|
<dc:Bounds x="390" y="210" width="100" height="80" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNEdge id="Flow_09d7dp2_di" bpmnElement="Flow_09d7dp2">
|
|
||||||
<di:waypoint x="320" y="117" />
|
|
||||||
<di:waypoint x="370" y="117" />
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNShape id="Activity_1tk82xi_di" bpmnElement="Activity_1swqq74">
|
<bpmndi:BPMNShape id="Activity_1tk82xi_di" bpmnElement="Activity_1swqq74">
|
||||||
<dc:Bounds x="220" y="77" width="100" height="80" />
|
<dc:Bounds x="220" y="77" width="100" height="80" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
|
|
|
@ -1,17 +1,10 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_0ilr8m3" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.7.0">
|
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_0ilr8m3" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.11.1">
|
||||||
<bpmn:process id="date_timer" isExecutable="false">
|
<bpmn:process id="date_timer" isExecutable="false">
|
||||||
<bpmn:startEvent id="Event_0u1rmur">
|
<bpmn:startEvent id="Event_0u1rmur">
|
||||||
<bpmn:outgoing>Flow_1i73q45</bpmn:outgoing>
|
<bpmn:outgoing>Flow_1i73q45</bpmn:outgoing>
|
||||||
</bpmn:startEvent>
|
</bpmn:startEvent>
|
||||||
<bpmn:scriptTask id="Activity_1q1wged" name="Set Future Date">
|
|
||||||
<bpmn:incoming>Flow_1i73q45</bpmn:incoming>
|
|
||||||
<bpmn:outgoing>Flow_00e79cz</bpmn:outgoing>
|
|
||||||
<bpmn:script>futuredate = datetime.now() + timedelta(0, 1) - timedelta(seconds=.95)
|
|
||||||
futuredate2 = datetime.strptime('2021-09-01 10:00','%Y-%m-%d %H:%M')</bpmn:script>
|
|
||||||
</bpmn:scriptTask>
|
|
||||||
<bpmn:sequenceFlow id="Flow_1i73q45" sourceRef="Event_0u1rmur" targetRef="Activity_1q1wged" />
|
<bpmn:sequenceFlow id="Flow_1i73q45" sourceRef="Event_0u1rmur" targetRef="Activity_1q1wged" />
|
||||||
<bpmn:sequenceFlow id="Flow_00e79cz" sourceRef="Activity_1q1wged" targetRef="Event_0eb0w95" />
|
|
||||||
<bpmn:intermediateCatchEvent id="Event_0eb0w95" name="Wait till date">
|
<bpmn:intermediateCatchEvent id="Event_0eb0w95" name="Wait till date">
|
||||||
<bpmn:incoming>Flow_00e79cz</bpmn:incoming>
|
<bpmn:incoming>Flow_00e79cz</bpmn:incoming>
|
||||||
<bpmn:outgoing>Flow_1bdrcxy</bpmn:outgoing>
|
<bpmn:outgoing>Flow_1bdrcxy</bpmn:outgoing>
|
||||||
|
@ -19,54 +12,46 @@ futuredate2 = datetime.strptime('2021-09-01 10:00','%Y-%m-%d %H:%M')</bpmn:scrip
|
||||||
<bpmn:timeDate xsi:type="bpmn:tFormalExpression">futuredate</bpmn:timeDate>
|
<bpmn:timeDate xsi:type="bpmn:tFormalExpression">futuredate</bpmn:timeDate>
|
||||||
</bpmn:timerEventDefinition>
|
</bpmn:timerEventDefinition>
|
||||||
</bpmn:intermediateCatchEvent>
|
</bpmn:intermediateCatchEvent>
|
||||||
<bpmn:sequenceFlow id="Flow_1bdrcxy" sourceRef="Event_0eb0w95" targetRef="Activity_0pbdlyu" />
|
<bpmn:sequenceFlow id="Flow_1bdrcxy" sourceRef="Event_0eb0w95" targetRef="Event_19cfzir" />
|
||||||
<bpmn:scriptTask id="Activity_0pbdlyu" name="Do something">
|
|
||||||
<bpmn:incoming>Flow_1bdrcxy</bpmn:incoming>
|
|
||||||
<bpmn:outgoing>Flow_0bjksyv</bpmn:outgoing>
|
|
||||||
<bpmn:script>print('yay!')
|
|
||||||
completed = True</bpmn:script>
|
|
||||||
</bpmn:scriptTask>
|
|
||||||
<bpmn:endEvent id="Event_19cfzir">
|
<bpmn:endEvent id="Event_19cfzir">
|
||||||
<bpmn:incoming>Flow_0bjksyv</bpmn:incoming>
|
<bpmn:incoming>Flow_1bdrcxy</bpmn:incoming>
|
||||||
</bpmn:endEvent>
|
</bpmn:endEvent>
|
||||||
<bpmn:sequenceFlow id="Flow_0bjksyv" sourceRef="Activity_0pbdlyu" targetRef="Event_19cfzir" />
|
<bpmn:scriptTask id="Activity_1q1wged" name="Set Future Date">
|
||||||
|
<bpmn:incoming>Flow_1i73q45</bpmn:incoming>
|
||||||
|
<bpmn:outgoing>Flow_00e79cz</bpmn:outgoing>
|
||||||
|
<bpmn:script>futuredate = (datetime.now() + timedelta(seconds=0.05)).isoformat()</bpmn:script>
|
||||||
|
</bpmn:scriptTask>
|
||||||
|
<bpmn:sequenceFlow id="Flow_00e79cz" sourceRef="Activity_1q1wged" targetRef="Event_0eb0w95" />
|
||||||
</bpmn:process>
|
</bpmn:process>
|
||||||
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
||||||
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="date_timer">
|
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="date_timer">
|
||||||
|
<bpmndi:BPMNEdge id="Flow_1bdrcxy_di" bpmnElement="Flow_1bdrcxy">
|
||||||
|
<di:waypoint x="408" y="120" />
|
||||||
|
<di:waypoint x="492" y="120" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_00e79cz_di" bpmnElement="Flow_00e79cz">
|
||||||
|
<di:waypoint x="320" y="120" />
|
||||||
|
<di:waypoint x="372" y="120" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_1i73q45_di" bpmnElement="Flow_1i73q45">
|
||||||
|
<di:waypoint x="168" y="120" />
|
||||||
|
<di:waypoint x="220" y="120" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNShape id="Event_0u1rmur_di" bpmnElement="Event_0u1rmur">
|
<bpmndi:BPMNShape id="Event_0u1rmur_di" bpmnElement="Event_0u1rmur">
|
||||||
<dc:Bounds x="132" y="102" width="36" height="36" />
|
<dc:Bounds x="132" y="102" width="36" height="36" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNShape id="Activity_0dxzed7_di" bpmnElement="Activity_1q1wged">
|
<bpmndi:BPMNShape id="Activity_0dxzed7_di" bpmnElement="Activity_1q1wged">
|
||||||
<dc:Bounds x="220" y="80" width="100" height="80" />
|
<dc:Bounds x="220" y="80" width="100" height="80" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNEdge id="Flow_1i73q45_di" bpmnElement="Flow_1i73q45">
|
|
||||||
<di:waypoint x="168" y="120" />
|
|
||||||
<di:waypoint x="220" y="120" />
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNEdge id="Flow_00e79cz_di" bpmnElement="Flow_00e79cz">
|
|
||||||
<di:waypoint x="320" y="120" />
|
|
||||||
<di:waypoint x="372" y="120" />
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNShape id="Event_0et6lvm_di" bpmnElement="Event_0eb0w95">
|
<bpmndi:BPMNShape id="Event_0et6lvm_di" bpmnElement="Event_0eb0w95">
|
||||||
<dc:Bounds x="372" y="102" width="36" height="36" />
|
<dc:Bounds x="372" y="102" width="36" height="36" />
|
||||||
<bpmndi:BPMNLabel>
|
<bpmndi:BPMNLabel>
|
||||||
<dc:Bounds x="361" y="145" width="60" height="14" />
|
<dc:Bounds x="361" y="145" width="60" height="14" />
|
||||||
</bpmndi:BPMNLabel>
|
</bpmndi:BPMNLabel>
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNEdge id="Flow_1bdrcxy_di" bpmnElement="Flow_1bdrcxy">
|
|
||||||
<di:waypoint x="408" y="120" />
|
|
||||||
<di:waypoint x="460" y="120" />
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNShape id="Activity_1g6jb6j_di" bpmnElement="Activity_0pbdlyu">
|
|
||||||
<dc:Bounds x="460" y="80" width="100" height="80" />
|
|
||||||
</bpmndi:BPMNShape>
|
|
||||||
<bpmndi:BPMNShape id="Event_19cfzir_di" bpmnElement="Event_19cfzir">
|
<bpmndi:BPMNShape id="Event_19cfzir_di" bpmnElement="Event_19cfzir">
|
||||||
<dc:Bounds x="612" y="102" width="36" height="36" />
|
<dc:Bounds x="492" y="102" width="36" height="36" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNEdge id="Flow_0bjksyv_di" bpmnElement="Flow_0bjksyv">
|
|
||||||
<di:waypoint x="560" y="120" />
|
|
||||||
<di:waypoint x="612" y="120" />
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
</bpmndi:BPMNPlane>
|
</bpmndi:BPMNPlane>
|
||||||
</bpmndi:BPMNDiagram>
|
</bpmndi:BPMNDiagram>
|
||||||
</bpmn:definitions>
|
</bpmn:definitions>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_0wc03ht" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.7.0">
|
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_0wc03ht" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.11.1">
|
||||||
<bpmn:process id="NonInterruptTimer" isExecutable="true">
|
<bpmn:process id="NonInterruptTimer" isExecutable="true">
|
||||||
<bpmn:startEvent id="StartEvent_1">
|
<bpmn:startEvent id="StartEvent_1">
|
||||||
<bpmn:outgoing>Flow_1hyztad</bpmn:outgoing>
|
<bpmn:outgoing>Flow_1hyztad</bpmn:outgoing>
|
||||||
|
@ -38,7 +38,7 @@
|
||||||
<bpmn:boundaryEvent id="Event_0jyy8ao" name="BenchmarkTime" cancelActivity="false" attachedToRef="Activity_0e5qk4z">
|
<bpmn:boundaryEvent id="Event_0jyy8ao" name="BenchmarkTime" cancelActivity="false" attachedToRef="Activity_0e5qk4z">
|
||||||
<bpmn:outgoing>Flow_03e1mfr</bpmn:outgoing>
|
<bpmn:outgoing>Flow_03e1mfr</bpmn:outgoing>
|
||||||
<bpmn:timerEventDefinition id="TimerEventDefinition_15a4lk2">
|
<bpmn:timerEventDefinition id="TimerEventDefinition_15a4lk2">
|
||||||
<bpmn:timeDuration xsi:type="bpmn:tFormalExpression">timedelta(seconds=.2)</bpmn:timeDuration>
|
<bpmn:timeDuration xsi:type="bpmn:tFormalExpression">"PT0.2S"</bpmn:timeDuration>
|
||||||
</bpmn:timerEventDefinition>
|
</bpmn:timerEventDefinition>
|
||||||
</bpmn:boundaryEvent>
|
</bpmn:boundaryEvent>
|
||||||
<bpmn:userTask id="GetReason" name="Delay Reason" camunda:formKey="DelayForm">
|
<bpmn:userTask id="GetReason" name="Delay Reason" camunda:formKey="DelayForm">
|
||||||
|
@ -59,74 +59,46 @@
|
||||||
<bpmn:incoming>Flow_0tlkkap</bpmn:incoming>
|
<bpmn:incoming>Flow_0tlkkap</bpmn:incoming>
|
||||||
<bpmn:outgoing>Flow_0vper9q</bpmn:outgoing>
|
<bpmn:outgoing>Flow_0vper9q</bpmn:outgoing>
|
||||||
</bpmn:parallelGateway>
|
</bpmn:parallelGateway>
|
||||||
<bpmn:sequenceFlow id="Flow_0vper9q" sourceRef="Gateway_19fdoel" targetRef="Experience" />
|
<bpmn:sequenceFlow id="Flow_0vper9q" sourceRef="Gateway_19fdoel" targetRef="Event_17ly1lc" />
|
||||||
<bpmn:endEvent id="Event_17ly1lc">
|
<bpmn:endEvent id="Event_17ly1lc">
|
||||||
<bpmn:incoming>Flow_0or6odg</bpmn:incoming>
|
|
||||||
</bpmn:endEvent>
|
|
||||||
<bpmn:sequenceFlow id="Flow_0or6odg" sourceRef="Experience" targetRef="Event_17ly1lc" />
|
|
||||||
<bpmn:userTask id="Experience" name="What was your work Experience?" camunda:formKey="ExpForm">
|
|
||||||
<bpmn:extensionElements>
|
|
||||||
<camunda:formData>
|
|
||||||
<camunda:formField id="experience" label="What was your Work Experience?" type="string" />
|
|
||||||
</camunda:formData>
|
|
||||||
</bpmn:extensionElements>
|
|
||||||
<bpmn:incoming>Flow_0vper9q</bpmn:incoming>
|
<bpmn:incoming>Flow_0vper9q</bpmn:incoming>
|
||||||
<bpmn:outgoing>Flow_0or6odg</bpmn:outgoing>
|
</bpmn:endEvent>
|
||||||
</bpmn:userTask>
|
|
||||||
</bpmn:process>
|
</bpmn:process>
|
||||||
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
||||||
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="NonInterruptTimer">
|
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="NonInterruptTimer">
|
||||||
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
|
<bpmndi:BPMNEdge id="Flow_0vper9q_di" bpmnElement="Flow_0vper9q">
|
||||||
<dc:Bounds x="112" y="159" width="36" height="36" />
|
<di:waypoint x="835" y="177" />
|
||||||
</bpmndi:BPMNShape>
|
<di:waypoint x="992" y="177" />
|
||||||
<bpmndi:BPMNShape id="Activity_0e5qk4z_di" bpmnElement="Activity_0e5qk4z" isExpanded="true">
|
|
||||||
<dc:Bounds x="210" y="77" width="530" height="200" />
|
|
||||||
</bpmndi:BPMNShape>
|
|
||||||
<bpmndi:BPMNShape id="Event_0rpm2hw_di" bpmnElement="Event_0rpm2hw">
|
|
||||||
<dc:Bounds x="242" y="159" width="36" height="36" />
|
|
||||||
</bpmndi:BPMNShape>
|
|
||||||
<bpmndi:BPMNShape id="Event_0neqjqa_di" bpmnElement="Event_0jyy8ao">
|
|
||||||
<dc:Bounds x="572" y="259" width="36" height="36" />
|
|
||||||
<bpmndi:BPMNLabel>
|
|
||||||
<dc:Bounds x="551" y="302" width="80" height="14" />
|
|
||||||
</bpmndi:BPMNLabel>
|
|
||||||
</bpmndi:BPMNShape>
|
|
||||||
<bpmndi:BPMNShape id="Activity_09w3ybl_di" bpmnElement="GetReason">
|
|
||||||
<dc:Bounds x="540" y="350" width="100" height="80" />
|
|
||||||
</bpmndi:BPMNShape>
|
|
||||||
<bpmndi:BPMNEdge id="Flow_1hyztad_di" bpmnElement="Flow_1hyztad">
|
|
||||||
<di:waypoint x="148" y="177" />
|
|
||||||
<di:waypoint x="210" y="177" />
|
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge id="Flow_07l1pau_di" bpmnElement="Flow_07l1pau">
|
<bpmndi:BPMNEdge id="Flow_03e1mfr_di" bpmnElement="Flow_03e1mfr">
|
||||||
<di:waypoint x="740" y="177" />
|
<di:waypoint x="590" y="295" />
|
||||||
<di:waypoint x="785" y="177" />
|
<di:waypoint x="590" y="350" />
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge id="Flow_0tlkkap_di" bpmnElement="Flow_0tlkkap">
|
<bpmndi:BPMNEdge id="Flow_0tlkkap_di" bpmnElement="Flow_0tlkkap">
|
||||||
<di:waypoint x="640" y="390" />
|
<di:waypoint x="640" y="390" />
|
||||||
<di:waypoint x="810" y="390" />
|
<di:waypoint x="810" y="390" />
|
||||||
<di:waypoint x="810" y="202" />
|
<di:waypoint x="810" y="202" />
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge id="Flow_03e1mfr_di" bpmnElement="Flow_03e1mfr">
|
<bpmndi:BPMNEdge id="Flow_07l1pau_di" bpmnElement="Flow_07l1pau">
|
||||||
<di:waypoint x="590" y="295" />
|
<di:waypoint x="740" y="177" />
|
||||||
<di:waypoint x="590" y="350" />
|
<di:waypoint x="785" y="177" />
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge id="Flow_1ls93l9_di" bpmnElement="Flow_1ls93l9">
|
<bpmndi:BPMNEdge id="Flow_1hyztad_di" bpmnElement="Flow_1hyztad">
|
||||||
<di:waypoint x="278" y="177" />
|
<di:waypoint x="148" y="177" />
|
||||||
<di:waypoint x="320" y="177" />
|
<di:waypoint x="210" y="177" />
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNShape id="Gateway_1qxx57d_di" bpmnElement="Gateway_WorkDone" isMarkerVisible="true">
|
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
|
||||||
<dc:Bounds x="495" y="152" width="50" height="50" />
|
<dc:Bounds x="112" y="159" width="36" height="36" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="Activity_0e5qk4z_di" bpmnElement="Activity_0e5qk4z" isExpanded="true">
|
||||||
|
<dc:Bounds x="210" y="77" width="530" height="200" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_10bimyk_di" bpmnElement="Flow_10bimyk">
|
||||||
|
<di:waypoint x="545" y="177" />
|
||||||
|
<di:waypoint x="602" y="177" />
|
||||||
<bpmndi:BPMNLabel>
|
<bpmndi:BPMNLabel>
|
||||||
<dc:Bounds x="495" y="122" width="51" height="14" />
|
<dc:Bounds x="564" y="159" width="19" height="14" />
|
||||||
</bpmndi:BPMNLabel>
|
</bpmndi:BPMNLabel>
|
||||||
</bpmndi:BPMNShape>
|
|
||||||
<bpmndi:BPMNShape id="Gateway_12d9rs0_di" bpmnElement="Gateway_19fdoel">
|
|
||||||
<dc:Bounds x="785" y="152" width="50" height="50" />
|
|
||||||
</bpmndi:BPMNShape>
|
|
||||||
<bpmndi:BPMNEdge id="Flow_1ku6me6_di" bpmnElement="Flow_1ku6me6">
|
|
||||||
<di:waypoint x="420" y="177" />
|
|
||||||
<di:waypoint x="495" y="177" />
|
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge id="Flow_06jd2h7_di" bpmnElement="Flow_06jd2h7">
|
<bpmndi:BPMNEdge id="Flow_06jd2h7_di" bpmnElement="Flow_06jd2h7">
|
||||||
<di:waypoint x="520" y="202" />
|
<di:waypoint x="520" y="202" />
|
||||||
|
@ -137,32 +109,43 @@
|
||||||
<dc:Bounds x="438" y="232" width="15" height="14" />
|
<dc:Bounds x="438" y="232" width="15" height="14" />
|
||||||
</bpmndi:BPMNLabel>
|
</bpmndi:BPMNLabel>
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_1ku6me6_di" bpmnElement="Flow_1ku6me6">
|
||||||
|
<di:waypoint x="420" y="177" />
|
||||||
|
<di:waypoint x="495" y="177" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_1ls93l9_di" bpmnElement="Flow_1ls93l9">
|
||||||
|
<di:waypoint x="278" y="177" />
|
||||||
|
<di:waypoint x="320" y="177" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNShape id="Event_0rpm2hw_di" bpmnElement="Event_0rpm2hw">
|
||||||
|
<dc:Bounds x="242" y="159" width="36" height="36" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="Gateway_1qxx57d_di" bpmnElement="Gateway_WorkDone" isMarkerVisible="true">
|
||||||
|
<dc:Bounds x="495" y="152" width="50" height="50" />
|
||||||
|
<bpmndi:BPMNLabel>
|
||||||
|
<dc:Bounds x="495" y="122" width="51" height="14" />
|
||||||
|
</bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNShape id="Event_1sxw3jz_di" bpmnElement="Event_1sxw3jz">
|
<bpmndi:BPMNShape id="Event_1sxw3jz_di" bpmnElement="Event_1sxw3jz">
|
||||||
<dc:Bounds x="602" y="159" width="36" height="36" />
|
<dc:Bounds x="602" y="159" width="36" height="36" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNEdge id="Flow_10bimyk_di" bpmnElement="Flow_10bimyk">
|
|
||||||
<di:waypoint x="545" y="177" />
|
|
||||||
<di:waypoint x="602" y="177" />
|
|
||||||
<bpmndi:BPMNLabel>
|
|
||||||
<dc:Bounds x="564" y="159" width="19" height="14" />
|
|
||||||
</bpmndi:BPMNLabel>
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNShape id="Activity_1ax46dw_di" bpmnElement="Activity_Work">
|
<bpmndi:BPMNShape id="Activity_1ax46dw_di" bpmnElement="Activity_Work">
|
||||||
<dc:Bounds x="320" y="137" width="100" height="80" />
|
<dc:Bounds x="320" y="137" width="100" height="80" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNEdge id="Flow_0vper9q_di" bpmnElement="Flow_0vper9q">
|
<bpmndi:BPMNShape id="Activity_09w3ybl_di" bpmnElement="GetReason">
|
||||||
<di:waypoint x="835" y="177" />
|
<dc:Bounds x="540" y="350" width="100" height="80" />
|
||||||
<di:waypoint x="860" y="177" />
|
</bpmndi:BPMNShape>
|
||||||
</bpmndi:BPMNEdge>
|
<bpmndi:BPMNShape id="Gateway_12d9rs0_di" bpmnElement="Gateway_19fdoel">
|
||||||
|
<dc:Bounds x="785" y="152" width="50" height="50" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNShape id="Event_17ly1lc_di" bpmnElement="Event_17ly1lc">
|
<bpmndi:BPMNShape id="Event_17ly1lc_di" bpmnElement="Event_17ly1lc">
|
||||||
<dc:Bounds x="992" y="159" width="36" height="36" />
|
<dc:Bounds x="992" y="159" width="36" height="36" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNEdge id="Flow_0or6odg_di" bpmnElement="Flow_0or6odg">
|
<bpmndi:BPMNShape id="Event_0neqjqa_di" bpmnElement="Event_0jyy8ao">
|
||||||
<di:waypoint x="960" y="177" />
|
<dc:Bounds x="572" y="259" width="36" height="36" />
|
||||||
<di:waypoint x="992" y="177" />
|
<bpmndi:BPMNLabel>
|
||||||
</bpmndi:BPMNEdge>
|
<dc:Bounds x="551" y="302" width="80" height="14" />
|
||||||
<bpmndi:BPMNShape id="Activity_130382b_di" bpmnElement="Experience">
|
</bpmndi:BPMNLabel>
|
||||||
<dc:Bounds x="860" y="137" width="100" height="80" />
|
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
</bpmndi:BPMNPlane>
|
</bpmndi:BPMNPlane>
|
||||||
</bpmndi:BPMNDiagram>
|
</bpmndi:BPMNDiagram>
|
||||||
|
|
|
@ -1,68 +1,44 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_0ilr8m3" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.7.0">
|
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_0ilr8m3" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.11.1">
|
||||||
<bpmn:process id="timer" isExecutable="true">
|
<bpmn:process id="timer" isExecutable="true">
|
||||||
<bpmn:startEvent id="StartEvent_1">
|
<bpmn:startEvent id="StartEvent_1">
|
||||||
<bpmn:outgoing>Flow_1pahvlr</bpmn:outgoing>
|
<bpmn:outgoing>Flow_1pahvlr</bpmn:outgoing>
|
||||||
</bpmn:startEvent>
|
</bpmn:startEvent>
|
||||||
<bpmn:manualTask id="Activity_1ybpou3" name="Get Coffee">
|
|
||||||
<bpmn:incoming>Flow_1pahvlr</bpmn:incoming>
|
|
||||||
<bpmn:outgoing>Flow_1pvkgnu</bpmn:outgoing>
|
|
||||||
</bpmn:manualTask>
|
|
||||||
<bpmn:intermediateCatchEvent id="Event_0bxivgz" name="Take 5">
|
<bpmn:intermediateCatchEvent id="Event_0bxivgz" name="Take 5">
|
||||||
<bpmn:incoming>Flow_1pvkgnu</bpmn:incoming>
|
<bpmn:incoming>Flow_1pahvlr</bpmn:incoming>
|
||||||
<bpmn:outgoing>Flow_1elbn9u</bpmn:outgoing>
|
<bpmn:outgoing>Flow_1elbn9u</bpmn:outgoing>
|
||||||
<bpmn:timerEventDefinition id="TimerEventDefinition_1jrn73k">
|
<bpmn:timerEventDefinition id="TimerEventDefinition_1jrn73k">
|
||||||
<bpmn:timeDuration xsi:type="bpmn:tFormalExpression">timedelta(seconds=.25)</bpmn:timeDuration>
|
<bpmn:timeDuration xsi:type="bpmn:tFormalExpression">"PT0.25S"</bpmn:timeDuration>
|
||||||
</bpmn:timerEventDefinition>
|
</bpmn:timerEventDefinition>
|
||||||
</bpmn:intermediateCatchEvent>
|
</bpmn:intermediateCatchEvent>
|
||||||
<bpmn:manualTask id="Activity_1rbj8j1" name="Get Back To Work">
|
|
||||||
<bpmn:incoming>Flow_1elbn9u</bpmn:incoming>
|
|
||||||
<bpmn:outgoing>Flow_1ekgt3x</bpmn:outgoing>
|
|
||||||
</bpmn:manualTask>
|
|
||||||
<bpmn:endEvent id="Event_03w65sk">
|
<bpmn:endEvent id="Event_03w65sk">
|
||||||
<bpmn:incoming>Flow_1ekgt3x</bpmn:incoming>
|
<bpmn:incoming>Flow_1elbn9u</bpmn:incoming>
|
||||||
</bpmn:endEvent>
|
</bpmn:endEvent>
|
||||||
<bpmn:sequenceFlow id="Flow_1ekgt3x" sourceRef="Activity_1rbj8j1" targetRef="Event_03w65sk" />
|
<bpmn:sequenceFlow id="Flow_1elbn9u" sourceRef="Event_0bxivgz" targetRef="Event_03w65sk" />
|
||||||
<bpmn:sequenceFlow id="Flow_1elbn9u" sourceRef="Event_0bxivgz" targetRef="Activity_1rbj8j1" />
|
<bpmn:sequenceFlow id="Flow_1pahvlr" sourceRef="StartEvent_1" targetRef="Event_0bxivgz" />
|
||||||
<bpmn:sequenceFlow id="Flow_1pvkgnu" sourceRef="Activity_1ybpou3" targetRef="Event_0bxivgz" />
|
|
||||||
<bpmn:sequenceFlow id="Flow_1pahvlr" sourceRef="StartEvent_1" targetRef="Activity_1ybpou3" />
|
|
||||||
</bpmn:process>
|
</bpmn:process>
|
||||||
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
||||||
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="timer">
|
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="timer">
|
||||||
|
<bpmndi:BPMNEdge id="Flow_1pahvlr_di" bpmnElement="Flow_1pahvlr">
|
||||||
|
<di:waypoint x="215" y="117" />
|
||||||
|
<di:waypoint x="262" y="117" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_1elbn9u_di" bpmnElement="Flow_1elbn9u">
|
||||||
|
<di:waypoint x="298" y="117" />
|
||||||
|
<di:waypoint x="342" y="117" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
|
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
|
||||||
<dc:Bounds x="179" y="99" width="36" height="36" />
|
<dc:Bounds x="179" y="99" width="36" height="36" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNShape id="Activity_0tjl9dd_di" bpmnElement="Activity_1ybpou3">
|
|
||||||
<dc:Bounds x="260" y="77" width="100" height="80" />
|
|
||||||
</bpmndi:BPMNShape>
|
|
||||||
<bpmndi:BPMNShape id="Event_0bljn9v_di" bpmnElement="Event_0bxivgz">
|
<bpmndi:BPMNShape id="Event_0bljn9v_di" bpmnElement="Event_0bxivgz">
|
||||||
<dc:Bounds x="412" y="99" width="36" height="36" />
|
<dc:Bounds x="262" y="99" width="36" height="36" />
|
||||||
<bpmndi:BPMNLabel>
|
<bpmndi:BPMNLabel>
|
||||||
<dc:Bounds x="414" y="142" width="33" height="14" />
|
<dc:Bounds x="264" y="142" width="33" height="14" />
|
||||||
</bpmndi:BPMNLabel>
|
</bpmndi:BPMNLabel>
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNShape id="Activity_15zi5m4_di" bpmnElement="Activity_1rbj8j1">
|
|
||||||
<dc:Bounds x="530" y="77" width="100" height="80" />
|
|
||||||
</bpmndi:BPMNShape>
|
|
||||||
<bpmndi:BPMNShape id="Event_03w65sk_di" bpmnElement="Event_03w65sk">
|
<bpmndi:BPMNShape id="Event_03w65sk_di" bpmnElement="Event_03w65sk">
|
||||||
<dc:Bounds x="682" y="99" width="36" height="36" />
|
<dc:Bounds x="342" y="99" width="36" height="36" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNEdge id="Flow_1ekgt3x_di" bpmnElement="Flow_1ekgt3x">
|
|
||||||
<di:waypoint x="630" y="117" />
|
|
||||||
<di:waypoint x="682" y="117" />
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNEdge id="Flow_1elbn9u_di" bpmnElement="Flow_1elbn9u">
|
|
||||||
<di:waypoint x="448" y="117" />
|
|
||||||
<di:waypoint x="530" y="117" />
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNEdge id="Flow_1pvkgnu_di" bpmnElement="Flow_1pvkgnu">
|
|
||||||
<di:waypoint x="360" y="117" />
|
|
||||||
<di:waypoint x="412" y="117" />
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNEdge id="Flow_1pahvlr_di" bpmnElement="Flow_1pahvlr">
|
|
||||||
<di:waypoint x="215" y="117" />
|
|
||||||
<di:waypoint x="260" y="117" />
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
</bpmndi:BPMNPlane>
|
</bpmndi:BPMNPlane>
|
||||||
</bpmndi:BPMNDiagram>
|
</bpmndi:BPMNDiagram>
|
||||||
</bpmn:definitions>
|
</bpmn:definitions>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_d4f3442" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.10.0">
|
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_d4f3442" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.11.1">
|
||||||
<bpmn:process id="loops" isExecutable="true">
|
<bpmn:process id="loops" isExecutable="true">
|
||||||
<bpmn:scriptTask id="increment_counter" name="increment counter">
|
<bpmn:scriptTask id="increment_counter" name="increment counter">
|
||||||
<bpmn:incoming>Flow_1gb8wca</bpmn:incoming>
|
<bpmn:incoming>Flow_1gb8wca</bpmn:incoming>
|
||||||
|
@ -25,7 +25,7 @@ Days elapsed: {{days_delta }}</bpmn:documentation>
|
||||||
<bpmn:incoming>Flow_0op1a19</bpmn:incoming>
|
<bpmn:incoming>Flow_0op1a19</bpmn:incoming>
|
||||||
<bpmn:outgoing>Flow_1gb8wca</bpmn:outgoing>
|
<bpmn:outgoing>Flow_1gb8wca</bpmn:outgoing>
|
||||||
<bpmn:timerEventDefinition id="TimerEventDefinition_0x6divu">
|
<bpmn:timerEventDefinition id="TimerEventDefinition_0x6divu">
|
||||||
<bpmn:timeDuration xsi:type="bpmn:tFormalExpression">timedelta(milliseconds=10)</bpmn:timeDuration>
|
<bpmn:timeDuration xsi:type="bpmn:tFormalExpression">"PT.01S"</bpmn:timeDuration>
|
||||||
</bpmn:timerEventDefinition>
|
</bpmn:timerEventDefinition>
|
||||||
</bpmn:intermediateCatchEvent>
|
</bpmn:intermediateCatchEvent>
|
||||||
<bpmn:exclusiveGateway id="Gateway_over_20" name="is > 20">
|
<bpmn:exclusiveGateway id="Gateway_over_20" name="is > 20">
|
||||||
|
@ -57,6 +57,14 @@ Days elapsed: {{days_delta }}</bpmn:documentation>
|
||||||
</bpmn:process>
|
</bpmn:process>
|
||||||
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
||||||
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="loops">
|
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="loops">
|
||||||
|
<bpmndi:BPMNEdge id="Flow_0q7fkb7_di" bpmnElement="Flow_0q7fkb7">
|
||||||
|
<di:waypoint x="188" y="177" />
|
||||||
|
<di:waypoint x="250" y="177" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_0mxlkif_di" bpmnElement="Flow_0mxlkif">
|
||||||
|
<di:waypoint x="720" y="177" />
|
||||||
|
<di:waypoint x="755" y="177" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge id="Flow_15jw6a4_di" bpmnElement="Flow_15jw6a4">
|
<bpmndi:BPMNEdge id="Flow_15jw6a4_di" bpmnElement="Flow_15jw6a4">
|
||||||
<di:waypoint x="350" y="177" />
|
<di:waypoint x="350" y="177" />
|
||||||
<di:waypoint x="412" y="177" />
|
<di:waypoint x="412" y="177" />
|
||||||
|
@ -85,16 +93,8 @@ Days elapsed: {{days_delta }}</bpmn:documentation>
|
||||||
<di:waypoint x="580" y="177" />
|
<di:waypoint x="580" y="177" />
|
||||||
<di:waypoint x="620" y="177" />
|
<di:waypoint x="620" y="177" />
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge id="Flow_0q7fkb7_di" bpmnElement="Flow_0q7fkb7">
|
<bpmndi:BPMNShape id="Activity_1fgfg5d_di" bpmnElement="increment_counter">
|
||||||
<di:waypoint x="188" y="177" />
|
<dc:Bounds x="480" y="137" width="100" height="80" />
|
||||||
<di:waypoint x="250" y="177" />
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNEdge id="Flow_0mxlkif_di" bpmnElement="Flow_0mxlkif">
|
|
||||||
<di:waypoint x="720" y="177" />
|
|
||||||
<di:waypoint x="755" y="177" />
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
|
|
||||||
<dc:Bounds x="152" y="159" width="36" height="36" />
|
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNShape id="Event_1tseamj_di" bpmnElement="end_event5">
|
<bpmndi:BPMNShape id="Event_1tseamj_di" bpmnElement="end_event5">
|
||||||
<dc:Bounds x="932" y="159" width="36" height="36" />
|
<dc:Bounds x="932" y="159" width="36" height="36" />
|
||||||
|
@ -114,12 +114,12 @@ Days elapsed: {{days_delta }}</bpmn:documentation>
|
||||||
<bpmndi:BPMNShape id="Activity_0whalo9_di" bpmnElement="initialize">
|
<bpmndi:BPMNShape id="Activity_0whalo9_di" bpmnElement="initialize">
|
||||||
<dc:Bounds x="250" y="137" width="100" height="80" />
|
<dc:Bounds x="250" y="137" width="100" height="80" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNShape id="Activity_1fgfg5d_di" bpmnElement="increment_counter">
|
|
||||||
<dc:Bounds x="480" y="137" width="100" height="80" />
|
|
||||||
</bpmndi:BPMNShape>
|
|
||||||
<bpmndi:BPMNShape id="Activity_0mmgsiw_di" bpmnElement="Activity_0w5u4k4">
|
<bpmndi:BPMNShape id="Activity_0mmgsiw_di" bpmnElement="Activity_0w5u4k4">
|
||||||
<dc:Bounds x="620" y="137" width="100" height="80" />
|
<dc:Bounds x="620" y="137" width="100" height="80" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
|
||||||
|
<dc:Bounds x="152" y="159" width="36" height="36" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
</bpmndi:BPMNPlane>
|
</bpmndi:BPMNPlane>
|
||||||
</bpmndi:BPMNDiagram>
|
</bpmndi:BPMNDiagram>
|
||||||
</bpmn:definitions>
|
</bpmn:definitions>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_d4f3442" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.10.0">
|
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_d4f3442" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.11.1">
|
||||||
<bpmn:process id="loops_sub" isExecutable="true">
|
<bpmn:process id="loops_sub" isExecutable="true">
|
||||||
<bpmn:startEvent id="StartEvent_1">
|
<bpmn:startEvent id="StartEvent_1">
|
||||||
<bpmn:outgoing>Flow_0q7fkb7</bpmn:outgoing>
|
<bpmn:outgoing>Flow_0q7fkb7</bpmn:outgoing>
|
||||||
|
@ -29,7 +29,7 @@ Days elapsed: {{days_delta }}</bpmn:documentation>
|
||||||
<bpmn:incoming>Flow_1ivr6d7</bpmn:incoming>
|
<bpmn:incoming>Flow_1ivr6d7</bpmn:incoming>
|
||||||
<bpmn:outgoing>Flow_1gb8wca</bpmn:outgoing>
|
<bpmn:outgoing>Flow_1gb8wca</bpmn:outgoing>
|
||||||
<bpmn:timerEventDefinition id="TimerEventDefinition_0x6divu">
|
<bpmn:timerEventDefinition id="TimerEventDefinition_0x6divu">
|
||||||
<bpmn:timeDuration xsi:type="bpmn:tFormalExpression">timedelta(milliseconds=10)</bpmn:timeDuration>
|
<bpmn:timeDuration xsi:type="bpmn:tFormalExpression">"PT0.01S"</bpmn:timeDuration>
|
||||||
</bpmn:timerEventDefinition>
|
</bpmn:timerEventDefinition>
|
||||||
</bpmn:intermediateCatchEvent>
|
</bpmn:intermediateCatchEvent>
|
||||||
<bpmn:exclusiveGateway id="Gateway_over_20" name="is > 20">
|
<bpmn:exclusiveGateway id="Gateway_over_20" name="is > 20">
|
||||||
|
|
|
@ -15,7 +15,7 @@ class ActionManagementTest(BpmnWorkflowTestCase):
|
||||||
FINISH_TIME_DELTA=0.10
|
FINISH_TIME_DELTA=0.10
|
||||||
|
|
||||||
def now_plus_seconds(self, seconds):
|
def now_plus_seconds(self, seconds):
|
||||||
return datetime.datetime.now() + datetime.timedelta(seconds=seconds)
|
return (datetime.datetime.now() + datetime.timedelta(seconds=seconds)).isoformat()
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.spec, self.subprocesses = self.load_workflow_spec('Test-Workflows/Action-Management.bpmn20.xml', 'Action Management')
|
self.spec, self.subprocesses = self.load_workflow_spec('Test-Workflows/Action-Management.bpmn20.xml', 'Action Management')
|
||||||
|
|
|
@ -0,0 +1,60 @@
|
||||||
|
import unittest
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
from SpiffWorkflow.bpmn.specs.events.event_definitions import TimerEventDefinition
|
||||||
|
|
||||||
|
class TimeDurationParseTest(unittest.TestCase):
|
||||||
|
"Non-exhaustive ISO durations, but hopefully covers basic support"
|
||||||
|
|
||||||
|
def test_parse_duration(self):
|
||||||
|
|
||||||
|
valid = [
|
||||||
|
("P1Y6M1DT1H1M1S", {'years': 1, 'months': 6, 'days': 1, 'hours': 1, 'minutes': 1, 'seconds': 1 }), # everything
|
||||||
|
("P1Y6M1DT1H1M1.5S", {'years': 1, 'months': 6, 'days': 1, 'hours': 1, 'minutes': 1, 'seconds': 1.5 }), # fractional seconds
|
||||||
|
("P1YT1H1M1S", {'years': 1, 'hours': 1, 'minutes': 1, 'seconds': 1 }), # minutes but no month
|
||||||
|
("P1MT1H", {'months': 1, 'hours':1}), # months but no minutes
|
||||||
|
("P4W", {'weeks': 4}), # weeks
|
||||||
|
("P1Y6M1D", {'years': 1, 'months': 6, 'days': 1}), # no time
|
||||||
|
("PT1H1M1S", {'hours': 1,'minutes': 1,'seconds': 1}), # time only
|
||||||
|
("PT1.5H", {'hours': 1.5}), # alt fractional
|
||||||
|
("T1,5H", {'hours': 1.5}), # fractional with comma
|
||||||
|
("PDT1H1M1S", {'hours': 1, 'minutes': 1, 'seconds': 1}), # empty spec
|
||||||
|
("PYMDT1H1M1S", {'hours': 1, 'minutes': 1, 'seconds': 1}), # multiple empty
|
||||||
|
]
|
||||||
|
for duration, parsed_duration in valid:
|
||||||
|
result = TimerEventDefinition.parse_iso_duration(duration)
|
||||||
|
self.assertDictEqual(result, parsed_duration)
|
||||||
|
|
||||||
|
invalid = [
|
||||||
|
"PT1.5H30S", # fractional duration with subsequent non-fractional
|
||||||
|
"PT1,5H30S", # with comma
|
||||||
|
"P1H1M1S", # missing 't'
|
||||||
|
"P1DT", # 't' without time spec
|
||||||
|
"P1W1D", # conflicting day specs
|
||||||
|
"PT1H1M1", # trailing values
|
||||||
|
]
|
||||||
|
for duration in invalid:
|
||||||
|
self.assertRaises(Exception, TimerEventDefinition.parse_iso_duration, duration)
|
||||||
|
|
||||||
|
def test_calculate_timedelta_from_start(self):
|
||||||
|
|
||||||
|
start, one_day = datetime.fromisoformat("2023-01-01"), 24 * 3600
|
||||||
|
# Leap years
|
||||||
|
self.assertEqual(TimerEventDefinition.get_timedelta_from_start({'years': 1}, start).total_seconds(), 365 * one_day)
|
||||||
|
self.assertEqual(TimerEventDefinition.get_timedelta_from_start({'years': 2}, start).total_seconds(), (365 + 366) * one_day)
|
||||||
|
# Increment by month does not change day
|
||||||
|
for month in range(1, 13):
|
||||||
|
dt = start + TimerEventDefinition.get_timedelta_from_start({'months': month}, start)
|
||||||
|
self.assertEqual(dt.day, 1)
|
||||||
|
|
||||||
|
def test_calculate_timedelta_from_end(self):
|
||||||
|
end, one_day = datetime.fromisoformat("2025-01-01"), 24 * 3600
|
||||||
|
# Leap years
|
||||||
|
self.assertEqual(TimerEventDefinition.get_timedelta_from_end({'years': 1}, end).total_seconds(), 366 * one_day)
|
||||||
|
self.assertEqual(TimerEventDefinition.get_timedelta_from_end({'years': 2}, end).total_seconds(), (365 + 366) * one_day)
|
||||||
|
|
||||||
|
dt = end - TimerEventDefinition.get_timedelta_from_end({'months': 11}, end)
|
||||||
|
# Decrement by month does not change day
|
||||||
|
for month in range(1, 13):
|
||||||
|
dt = end - TimerEventDefinition.get_timedelta_from_end({'months': month}, end)
|
||||||
|
self.assertEqual(dt.day, 1)
|
|
@ -5,12 +5,14 @@ import unittest
|
||||||
import time
|
import time
|
||||||
|
|
||||||
from SpiffWorkflow.bpmn.PythonScriptEngine import PythonScriptEngine
|
from SpiffWorkflow.bpmn.PythonScriptEngine import PythonScriptEngine
|
||||||
from SpiffWorkflow.task import TaskState
|
|
||||||
from SpiffWorkflow.bpmn.workflow import BpmnWorkflow
|
from SpiffWorkflow.bpmn.workflow import BpmnWorkflow
|
||||||
from tests.SpiffWorkflow.bpmn.BpmnWorkflowTestCase import BpmnWorkflowTestCase
|
from tests.SpiffWorkflow.bpmn.BpmnWorkflowTestCase import BpmnWorkflowTestCase
|
||||||
|
|
||||||
__author__ = 'kellym'
|
__author__ = 'kellym'
|
||||||
|
|
||||||
|
# the data doesn't really propagate to the end as in a 'normal' workflow, so I call a
|
||||||
|
# custom function that records the number of times this got called so that
|
||||||
|
# we can keep track of how many times the triggered item gets called.
|
||||||
counter = 0
|
counter = 0
|
||||||
def my_custom_function():
|
def my_custom_function():
|
||||||
global counter
|
global counter
|
||||||
|
@ -41,31 +43,24 @@ class TimerCycleStartTest(BpmnWorkflowTestCase):
|
||||||
def testThroughSaveRestore(self):
|
def testThroughSaveRestore(self):
|
||||||
self.actual_test(save_restore=True)
|
self.actual_test(save_restore=True)
|
||||||
|
|
||||||
|
|
||||||
def actual_test(self,save_restore = False):
|
def actual_test(self,save_restore = False):
|
||||||
global counter
|
global counter
|
||||||
ready_tasks = self.workflow.get_tasks(TaskState.READY)
|
|
||||||
self.assertEqual(1, len(ready_tasks)) # Start Event
|
|
||||||
self.workflow.complete_task_from_id(ready_tasks[0].id)
|
|
||||||
self.workflow.do_engine_steps()
|
|
||||||
|
|
||||||
# the data doesn't really propagate to the end as in a 'normal' workflow, so I call a
|
|
||||||
# custom function that records the number of times this got called so that
|
|
||||||
# we can keep track of how many times the triggered item gets called.
|
|
||||||
counter = 0
|
counter = 0
|
||||||
|
|
||||||
# We have a loop so we can continue to execute waiting tasks when
|
# We have a loop so we can continue to execute waiting tasks when
|
||||||
# timers expire. The test workflow has a wait timer that pauses long enough to
|
# timers expire. The test workflow has a wait timer that pauses long enough to
|
||||||
# allow the cycle to complete twice -- otherwise the first iteration through the
|
# allow the cycle to complete three times before being cancelled by the terminate
|
||||||
# cycle process causes the remaining tasks to be cancelled.
|
# event (the timer should only run twice, we want to make sure it doesn't keep
|
||||||
for loopcount in range(5):
|
# executing)
|
||||||
|
for loopcount in range(6):
|
||||||
|
self.workflow.do_engine_steps()
|
||||||
if save_restore:
|
if save_restore:
|
||||||
self.save_restore()
|
self.save_restore()
|
||||||
self.workflow.script_engine = CustomScriptEngine()
|
self.workflow.script_engine = CustomScriptEngine()
|
||||||
time.sleep(0.1)
|
time.sleep(0.1)
|
||||||
self.workflow.refresh_waiting_tasks()
|
self.workflow.refresh_waiting_tasks()
|
||||||
self.workflow.do_engine_steps()
|
|
||||||
self.assertEqual(counter, 2)
|
self.assertEqual(counter, 2)
|
||||||
|
self.assertTrue(self.workflow.is_completed())
|
||||||
|
|
||||||
|
|
||||||
def suite():
|
def suite():
|
||||||
|
|
|
@ -30,7 +30,7 @@ class CustomScriptEngine(PythonScriptEngine):
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class TimerDurationTest(BpmnWorkflowTestCase):
|
class TimerCycleTest(BpmnWorkflowTestCase):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.spec, self.subprocesses = self.load_workflow_spec('timer-cycle.bpmn', 'timer')
|
self.spec, self.subprocesses = self.load_workflow_spec('timer-cycle.bpmn', 'timer')
|
||||||
|
@ -42,31 +42,34 @@ class TimerDurationTest(BpmnWorkflowTestCase):
|
||||||
def testThroughSaveRestore(self):
|
def testThroughSaveRestore(self):
|
||||||
self.actual_test(save_restore=True)
|
self.actual_test(save_restore=True)
|
||||||
|
|
||||||
|
|
||||||
def actual_test(self,save_restore = False):
|
def actual_test(self,save_restore = False):
|
||||||
global counter
|
global counter
|
||||||
ready_tasks = self.workflow.get_tasks(TaskState.READY)
|
|
||||||
self.assertEqual(1, len(ready_tasks)) # Start Event
|
|
||||||
self.workflow.complete_task_from_id(ready_tasks[0].id)
|
|
||||||
self.workflow.do_engine_steps()
|
|
||||||
ready_tasks = self.workflow.get_tasks(TaskState.READY)
|
|
||||||
self.assertEqual(1, len(ready_tasks)) # GetCoffee
|
|
||||||
|
|
||||||
# See comments in timer cycle test for more context
|
|
||||||
counter = 0
|
counter = 0
|
||||||
|
# See comments in timer cycle test start for more context
|
||||||
for loopcount in range(5):
|
for loopcount in range(5):
|
||||||
|
self.workflow.do_engine_steps()
|
||||||
if save_restore:
|
if save_restore:
|
||||||
self.save_restore()
|
self.save_restore()
|
||||||
self.workflow.script_engine = CustomScriptEngine()
|
self.workflow.script_engine = CustomScriptEngine()
|
||||||
time.sleep(0.01)
|
time.sleep(0.05)
|
||||||
self.workflow.refresh_waiting_tasks()
|
self.workflow.refresh_waiting_tasks()
|
||||||
self.workflow.do_engine_steps()
|
events = self.workflow.waiting_events()
|
||||||
|
if loopcount == 0:
|
||||||
pass
|
# Wait time is 0.1s, so the first time through, there should still be a waiting event
|
||||||
#self.assertEqual(counter, 2)
|
self.assertEqual(len(events), 1)
|
||||||
|
else:
|
||||||
|
# By the second iteration, both should be complete
|
||||||
|
self.assertEqual(len(events), 0)
|
||||||
|
|
||||||
|
# Get coffee still ready
|
||||||
|
coffee = self.workflow.get_tasks_from_spec_name('Get_Coffee')[0]
|
||||||
|
self.assertEqual(coffee.state, TaskState.READY)
|
||||||
|
# Timer completed
|
||||||
|
timer = self.workflow.get_tasks_from_spec_name('CatchMessage')[0]
|
||||||
|
self.assertEqual(timer.state, TaskState.COMPLETED)
|
||||||
|
self.assertEqual(counter, 2)
|
||||||
|
|
||||||
def suite():
|
def suite():
|
||||||
return unittest.TestLoader().loadTestsFromTestCase(TimerDurationTest)
|
return unittest.TestLoader().loadTestsFromTestCase(TimerCycleTest)
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.TextTestRunner(verbosity=2).run(suite())
|
unittest.TextTestRunner(verbosity=2).run(suite())
|
||||||
|
|
|
@ -4,7 +4,6 @@ import unittest
|
||||||
import datetime
|
import datetime
|
||||||
import time
|
import time
|
||||||
|
|
||||||
from SpiffWorkflow.task import TaskState
|
|
||||||
from SpiffWorkflow.bpmn.workflow import BpmnWorkflow
|
from SpiffWorkflow.bpmn.workflow import BpmnWorkflow
|
||||||
from SpiffWorkflow.bpmn.PythonScriptEngine import PythonScriptEngine
|
from SpiffWorkflow.bpmn.PythonScriptEngine import PythonScriptEngine
|
||||||
from tests.SpiffWorkflow.bpmn.BpmnWorkflowTestCase import BpmnWorkflowTestCase
|
from tests.SpiffWorkflow.bpmn.BpmnWorkflowTestCase import BpmnWorkflowTestCase
|
||||||
|
@ -28,37 +27,22 @@ class TimerDateTest(BpmnWorkflowTestCase):
|
||||||
def testThroughSaveRestore(self):
|
def testThroughSaveRestore(self):
|
||||||
self.actual_test(save_restore=True)
|
self.actual_test(save_restore=True)
|
||||||
|
|
||||||
|
|
||||||
def actual_test(self,save_restore = False):
|
def actual_test(self,save_restore = False):
|
||||||
global counter
|
|
||||||
ready_tasks = self.workflow.get_tasks(TaskState.READY)
|
|
||||||
self.assertEqual(1, len(ready_tasks)) # Start Event
|
|
||||||
self.workflow.complete_task_from_id(ready_tasks[0].id)
|
|
||||||
self.workflow.do_engine_steps()
|
self.workflow.do_engine_steps()
|
||||||
|
self.assertEqual(len(self.workflow.waiting_events()), 1)
|
||||||
loopcount = 0
|
loopcount = 0
|
||||||
# test bpmn has a timeout of .05s
|
|
||||||
# we should terminate loop before that.
|
|
||||||
starttime = datetime.datetime.now()
|
starttime = datetime.datetime.now()
|
||||||
counter = 0
|
# test bpmn has a timeout of .05s; we should terminate loop before that.
|
||||||
while loopcount < 8:
|
while len(self.workflow.get_waiting_tasks()) > 0 and loopcount < 8:
|
||||||
if len(self.workflow.get_tasks(TaskState.READY)) >= 1:
|
|
||||||
break
|
|
||||||
if save_restore:
|
if save_restore:
|
||||||
self.save_restore()
|
self.save_restore()
|
||||||
self.workflow.script_engine = self.script_engine
|
self.workflow.script_engine = self.script_engine
|
||||||
|
|
||||||
|
|
||||||
waiting_tasks = self.workflow.get_tasks(TaskState.WAITING)
|
|
||||||
time.sleep(0.01)
|
time.sleep(0.01)
|
||||||
self.workflow.refresh_waiting_tasks()
|
self.workflow.refresh_waiting_tasks()
|
||||||
loopcount = loopcount +1
|
loopcount += 1
|
||||||
endtime = datetime.datetime.now()
|
endtime = datetime.datetime.now()
|
||||||
self.workflow.do_engine_steps()
|
self.workflow.do_engine_steps()
|
||||||
testdate = datetime.datetime.strptime('2021-09-01 10:00','%Y-%m-%d %H:%M')
|
self.assertTrue(self.workflow.is_completed())
|
||||||
self.assertEqual(self.workflow.last_task.data['futuredate2'],testdate)
|
|
||||||
self.assertTrue('completed' in self.workflow.last_task.data)
|
|
||||||
self.assertTrue(self.workflow.last_task.data['completed'])
|
|
||||||
self.assertTrue((endtime-starttime) > datetime.timedelta(seconds=.02))
|
self.assertTrue((endtime-starttime) > datetime.timedelta(seconds=.02))
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,9 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
import unittest
|
import unittest
|
||||||
import datetime
|
|
||||||
import time
|
import time
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
|
|
||||||
from SpiffWorkflow.bpmn.specs.events.EndEvent import EndEvent
|
|
||||||
from SpiffWorkflow.task import TaskState
|
|
||||||
from SpiffWorkflow.bpmn.workflow import BpmnWorkflow
|
from SpiffWorkflow.bpmn.workflow import BpmnWorkflow
|
||||||
from SpiffWorkflow.bpmn.PythonScriptEngine import PythonScriptEngine
|
from SpiffWorkflow.bpmn.PythonScriptEngine import PythonScriptEngine
|
||||||
from tests.SpiffWorkflow.bpmn.BpmnWorkflowTestCase import BpmnWorkflowTestCase
|
from tests.SpiffWorkflow.bpmn.BpmnWorkflowTestCase import BpmnWorkflowTestCase
|
||||||
|
@ -27,45 +24,23 @@ class TimerDurationTest(BpmnWorkflowTestCase):
|
||||||
self.actual_test(save_restore=True)
|
self.actual_test(save_restore=True)
|
||||||
|
|
||||||
def actual_test(self,save_restore = False):
|
def actual_test(self,save_restore = False):
|
||||||
# In the normal flow of things, the final end event should be the last task
|
|
||||||
self.workflow.do_engine_steps()
|
|
||||||
ready_tasks = self.workflow.get_tasks(TaskState.READY)
|
|
||||||
self.assertEqual(1, len(ready_tasks))
|
|
||||||
self.workflow.complete_task_from_id(ready_tasks[0].id)
|
|
||||||
self.workflow.do_engine_steps()
|
|
||||||
self.assertTrue(self.workflow.is_completed())
|
|
||||||
end_events = []
|
|
||||||
|
|
||||||
for task in self.workflow.get_tasks():
|
|
||||||
if isinstance(task.task_spec, EndEvent):
|
|
||||||
end_events.append(task)
|
|
||||||
self.assertEqual(1, len(end_events))
|
|
||||||
|
|
||||||
# In the event of a timer firing, the last task should STILL
|
|
||||||
# be the final end event.
|
|
||||||
|
|
||||||
starttime = datetime.datetime.now()
|
|
||||||
self.workflow = BpmnWorkflow(self.spec)
|
|
||||||
self.workflow.script_engine = self.script_engine
|
|
||||||
self.workflow.do_engine_steps()
|
self.workflow.do_engine_steps()
|
||||||
if save_restore:
|
if save_restore:
|
||||||
self.save_restore()
|
self.save_restore()
|
||||||
self.workflow.script_engine = self.script_engine
|
self.workflow.script_engine = self.script_engine
|
||||||
time.sleep(0.1)
|
time.sleep(1)
|
||||||
self.workflow.refresh_waiting_tasks()
|
self.workflow.refresh_waiting_tasks()
|
||||||
self.workflow.do_engine_steps()
|
self.workflow.do_engine_steps()
|
||||||
|
|
||||||
|
# Make sure the timer got called
|
||||||
|
self.assertEqual(self.workflow.last_task.data['timer_called'],True)
|
||||||
|
|
||||||
|
# Make sure the task can still be called.
|
||||||
task = self.workflow.get_ready_user_tasks()[0]
|
task = self.workflow.get_ready_user_tasks()[0]
|
||||||
self.workflow.complete_task_from_id(task.id)
|
task.complete()
|
||||||
self.workflow.do_engine_steps()
|
self.workflow.do_engine_steps()
|
||||||
|
|
||||||
self.assertTrue(self.workflow.is_completed())
|
self.assertTrue(self.workflow.is_completed())
|
||||||
end_events = []
|
|
||||||
|
|
||||||
for task in self.workflow.get_tasks():
|
|
||||||
if isinstance(task.task_spec, EndEvent):
|
|
||||||
end_events.append(task)
|
|
||||||
self.assertEqual(1, len(end_events))
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def suite():
|
def suite():
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
import unittest
|
import unittest
|
||||||
import time
|
import time
|
||||||
|
|
||||||
from SpiffWorkflow.bpmn.FeelLikeScriptEngine import FeelLikeScriptEngine
|
|
||||||
from SpiffWorkflow.task import TaskState
|
from SpiffWorkflow.task import TaskState
|
||||||
from SpiffWorkflow.bpmn.workflow import BpmnWorkflow
|
from SpiffWorkflow.bpmn.workflow import BpmnWorkflow
|
||||||
from tests.SpiffWorkflow.bpmn.BpmnWorkflowTestCase import BpmnWorkflowTestCase
|
from tests.SpiffWorkflow.bpmn.BpmnWorkflowTestCase import BpmnWorkflowTestCase
|
||||||
|
@ -23,35 +22,31 @@ class TimerDurationTest(BpmnWorkflowTestCase):
|
||||||
self.actual_test(save_restore=True)
|
self.actual_test(save_restore=True)
|
||||||
|
|
||||||
def actual_test(self,save_restore = False):
|
def actual_test(self,save_restore = False):
|
||||||
self.workflow.script_engine = FeelLikeScriptEngine()
|
|
||||||
ready_tasks = self.workflow.get_tasks(TaskState.READY)
|
|
||||||
self.assertEqual(1, len(ready_tasks))
|
|
||||||
self.workflow.complete_task_from_id(ready_tasks[0].id)
|
|
||||||
self.workflow.do_engine_steps()
|
self.workflow.do_engine_steps()
|
||||||
ready_tasks = self.workflow.get_tasks(TaskState.READY)
|
ready_tasks = self.workflow.get_tasks(TaskState.READY)
|
||||||
self.assertEqual(1, len(ready_tasks))
|
ready_tasks[0].complete()
|
||||||
ready_tasks[0].data['answer']='No'
|
|
||||||
self.workflow.complete_task_from_id(ready_tasks[0].id)
|
|
||||||
self.workflow.do_engine_steps()
|
self.workflow.do_engine_steps()
|
||||||
|
|
||||||
loopcount = 0
|
loopcount = 0
|
||||||
# test bpmn has a timeout of .03s
|
# test bpmn has a timeout of .03s; we should terminate loop before that.
|
||||||
# we should terminate loop before that.
|
while len(self.workflow.get_waiting_tasks()) == 2 and loopcount < 11:
|
||||||
|
|
||||||
while loopcount < 11:
|
|
||||||
ready_tasks = self.workflow.get_tasks(TaskState.READY)
|
|
||||||
if len(ready_tasks) < 1:
|
|
||||||
break
|
|
||||||
if save_restore:
|
if save_restore:
|
||||||
self.save_restore()
|
self.save_restore()
|
||||||
self.workflow.script_engine = FeelLikeScriptEngine()
|
|
||||||
#self.assertEqual(1, len(self.workflow.get_tasks(Task.WAITING)))
|
|
||||||
time.sleep(0.01)
|
time.sleep(0.01)
|
||||||
self.workflow.complete_task_from_id(ready_tasks[0].id)
|
self.assertEqual(len(self.workflow.get_tasks(TaskState.READY)), 1)
|
||||||
self.workflow.refresh_waiting_tasks()
|
self.workflow.refresh_waiting_tasks()
|
||||||
self.workflow.do_engine_steps()
|
self.workflow.do_engine_steps()
|
||||||
loopcount = loopcount +1
|
loopcount += 1
|
||||||
|
|
||||||
|
self.workflow.do_engine_steps()
|
||||||
|
subworkflow = self.workflow.get_tasks_from_spec_name('Subworkflow')[0]
|
||||||
|
self.assertEqual(subworkflow.state, TaskState.CANCELLED)
|
||||||
|
ready_tasks = self.workflow.get_ready_user_tasks()
|
||||||
|
while len(ready_tasks) > 0:
|
||||||
|
ready_tasks[0].complete()
|
||||||
|
ready_tasks = self.workflow.get_ready_user_tasks()
|
||||||
|
self.workflow.do_engine_steps()
|
||||||
|
self.assertTrue(self.workflow.is_completed())
|
||||||
# Assure that the loopcount is less than 10, and the timer interrupt fired, rather
|
# Assure that the loopcount is less than 10, and the timer interrupt fired, rather
|
||||||
# than allowing us to continue to loop the full 10 times.
|
# than allowing us to continue to loop the full 10 times.
|
||||||
self.assertTrue(loopcount < 10)
|
self.assertTrue(loopcount < 10)
|
||||||
|
|
|
@ -1,10 +1,8 @@
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
import unittest
|
import unittest
|
||||||
import datetime
|
|
||||||
import time
|
import time
|
||||||
from datetime import timedelta
|
from datetime import datetime, timedelta
|
||||||
from SpiffWorkflow.task import TaskState
|
|
||||||
from SpiffWorkflow.bpmn.workflow import BpmnWorkflow
|
from SpiffWorkflow.bpmn.workflow import BpmnWorkflow
|
||||||
from SpiffWorkflow.bpmn.PythonScriptEngine import PythonScriptEngine
|
from SpiffWorkflow.bpmn.PythonScriptEngine import PythonScriptEngine
|
||||||
from tests.SpiffWorkflow.bpmn.BpmnWorkflowTestCase import BpmnWorkflowTestCase
|
from tests.SpiffWorkflow.bpmn.BpmnWorkflowTestCase import BpmnWorkflowTestCase
|
||||||
|
@ -25,35 +23,25 @@ class TimerDurationTest(BpmnWorkflowTestCase):
|
||||||
def testThroughSaveRestore(self):
|
def testThroughSaveRestore(self):
|
||||||
self.actual_test(save_restore=True)
|
self.actual_test(save_restore=True)
|
||||||
|
|
||||||
|
|
||||||
def actual_test(self,save_restore = False):
|
def actual_test(self,save_restore = False):
|
||||||
ready_tasks = self.workflow.get_tasks(TaskState.READY)
|
|
||||||
self.assertEqual(1, len(ready_tasks))
|
|
||||||
self.workflow.complete_task_from_id(ready_tasks[0].id)
|
|
||||||
self.workflow.do_engine_steps()
|
|
||||||
ready_tasks = self.workflow.get_tasks(TaskState.READY)
|
|
||||||
self.assertEqual(1, len(ready_tasks))
|
|
||||||
self.workflow.complete_task_from_id(ready_tasks[0].id)
|
|
||||||
self.workflow.do_engine_steps()
|
self.workflow.do_engine_steps()
|
||||||
|
self.assertEqual(len(self.workflow.waiting_events()), 1)
|
||||||
|
|
||||||
loopcount = 0
|
loopcount = 0
|
||||||
# test bpmn has a timeout of .25s
|
starttime = datetime.now()
|
||||||
# we should terminate loop before that.
|
# test bpmn has a timeout of .25s; we should terminate loop before that.
|
||||||
starttime = datetime.datetime.now()
|
while len(self.workflow.get_waiting_tasks()) > 0 and loopcount < 10:
|
||||||
while loopcount < 10:
|
|
||||||
if len(self.workflow.get_tasks(TaskState.READY)) >= 1:
|
|
||||||
break
|
|
||||||
if save_restore:
|
if save_restore:
|
||||||
self.save_restore()
|
self.save_restore()
|
||||||
self.workflow.script_engine = self.script_engine
|
self.workflow.script_engine = self.script_engine
|
||||||
self.assertEqual(1, len(self.workflow.get_tasks(TaskState.WAITING)))
|
|
||||||
time.sleep(0.1)
|
time.sleep(0.1)
|
||||||
self.workflow.refresh_waiting_tasks()
|
self.workflow.refresh_waiting_tasks()
|
||||||
loopcount = loopcount +1
|
loopcount += 1
|
||||||
endtime = datetime.datetime.now()
|
endtime = datetime.now()
|
||||||
duration = endtime-starttime
|
duration = endtime - starttime
|
||||||
self.assertEqual(duration<datetime.timedelta(seconds=.5),True)
|
self.assertEqual(duration < timedelta(seconds=.5), True)
|
||||||
self.assertEqual(duration>datetime.timedelta(seconds=.2),True)
|
self.assertEqual(duration > timedelta(seconds=.2), True)
|
||||||
|
self.assertEqual(len(self.workflow.waiting_events()), 0)
|
||||||
|
|
||||||
|
|
||||||
def suite():
|
def suite():
|
||||||
|
|
|
@ -18,7 +18,7 @@ class TimerIntermediateTest(BpmnWorkflowTestCase):
|
||||||
|
|
||||||
def testRunThroughHappy(self):
|
def testRunThroughHappy(self):
|
||||||
|
|
||||||
due_time = datetime.datetime.now() + datetime.timedelta(seconds=0.01)
|
due_time = (datetime.datetime.now() + datetime.timedelta(seconds=0.01)).isoformat()
|
||||||
|
|
||||||
self.assertEqual(1, len(self.workflow.get_tasks(TaskState.READY)))
|
self.assertEqual(1, len(self.workflow.get_tasks(TaskState.READY)))
|
||||||
self.workflow.get_tasks(TaskState.READY)[0].set_data(due_time=due_time)
|
self.workflow.get_tasks(TaskState.READY)[0].set_data(due_time=due_time)
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
import unittest
|
||||||
|
import os
|
||||||
|
|
||||||
|
from SpiffWorkflow.bpmn.workflow import BpmnWorkflow
|
||||||
|
from SpiffWorkflow.bpmn.parser.BpmnParser import BpmnParser
|
||||||
|
from SpiffWorkflow.bpmn.serializer.workflow import BpmnWorkflowSerializer
|
||||||
|
from tests.SpiffWorkflow.bpmn.BpmnLoaderForTests import TestUserTaskConverter
|
||||||
|
|
||||||
|
|
||||||
|
class BaseTestCase(unittest.TestCase):
|
||||||
|
|
||||||
|
SERIALIZER_VERSION = "100.1.ANY"
|
||||||
|
DATA_DIR = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'data')
|
||||||
|
|
||||||
|
def load_workflow_spec(self, filename, process_name):
|
||||||
|
parser = BpmnParser()
|
||||||
|
parser.add_bpmn_files_by_glob(os.path.join(self.DATA_DIR, filename))
|
||||||
|
top_level_spec = parser.get_spec(process_name)
|
||||||
|
subprocesses = parser.get_subprocess_specs(process_name)
|
||||||
|
return top_level_spec, subprocesses
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
super(BaseTestCase, self).setUp()
|
||||||
|
wf_spec_converter = BpmnWorkflowSerializer.configure_workflow_spec_converter([TestUserTaskConverter])
|
||||||
|
self.serializer = BpmnWorkflowSerializer(wf_spec_converter, version=self.SERIALIZER_VERSION)
|
||||||
|
spec, subprocesses = self.load_workflow_spec('random_fact.bpmn', 'random_fact')
|
||||||
|
self.workflow = BpmnWorkflow(spec, subprocesses)
|
|
@ -1,33 +1,18 @@
|
||||||
import os
|
|
||||||
import unittest
|
import unittest
|
||||||
|
import os
|
||||||
import json
|
import json
|
||||||
|
|
||||||
from SpiffWorkflow.task import TaskState
|
|
||||||
from SpiffWorkflow.bpmn.PythonScriptEngine import PythonScriptEngine
|
from SpiffWorkflow.bpmn.PythonScriptEngine import PythonScriptEngine
|
||||||
from SpiffWorkflow.bpmn.parser.BpmnParser import BpmnParser
|
|
||||||
from SpiffWorkflow.bpmn.serializer.workflow import BpmnWorkflowSerializer
|
from SpiffWorkflow.bpmn.serializer.workflow import BpmnWorkflowSerializer
|
||||||
from SpiffWorkflow.bpmn.workflow import BpmnWorkflow
|
from SpiffWorkflow.bpmn.workflow import BpmnWorkflow
|
||||||
from tests.SpiffWorkflow.bpmn.BpmnLoaderForTests import TestUserTaskConverter
|
from tests.SpiffWorkflow.bpmn.BpmnLoaderForTests import TestUserTaskConverter
|
||||||
|
|
||||||
|
from .BaseTestCase import BaseTestCase
|
||||||
|
|
||||||
|
class BpmnWorkflowSerializerTest(BaseTestCase):
|
||||||
|
|
||||||
class BpmnWorkflowSerializerTest(unittest.TestCase):
|
|
||||||
"""Please note that the BpmnSerializer is Deprecated."""
|
|
||||||
SERIALIZER_VERSION = "100.1.ANY"
|
SERIALIZER_VERSION = "100.1.ANY"
|
||||||
|
DATA_DIR = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'data')
|
||||||
def load_workflow_spec(self, filename, process_name):
|
|
||||||
f = os.path.join(os.path.dirname(__file__), 'data', filename)
|
|
||||||
parser = BpmnParser()
|
|
||||||
parser.add_bpmn_files_by_glob(f)
|
|
||||||
top_level_spec = parser.get_spec(process_name)
|
|
||||||
subprocesses = parser.get_subprocess_specs(process_name)
|
|
||||||
return top_level_spec, subprocesses
|
|
||||||
|
|
||||||
def setUp(self):
|
|
||||||
super(BpmnWorkflowSerializerTest, self).setUp()
|
|
||||||
wf_spec_converter = BpmnWorkflowSerializer.configure_workflow_spec_converter([TestUserTaskConverter])
|
|
||||||
self.serializer = BpmnWorkflowSerializer(wf_spec_converter, version=self.SERIALIZER_VERSION)
|
|
||||||
spec, subprocesses = self.load_workflow_spec('random_fact.bpmn', 'random_fact')
|
|
||||||
self.workflow = BpmnWorkflow(spec, subprocesses)
|
|
||||||
|
|
||||||
def testSerializeWorkflowSpec(self):
|
def testSerializeWorkflowSpec(self):
|
||||||
spec_serialized = self.serializer.serialize_json(self.workflow)
|
spec_serialized = self.serializer.serialize_json(self.workflow)
|
||||||
|
@ -102,12 +87,6 @@ class BpmnWorkflowSerializerTest(unittest.TestCase):
|
||||||
def testDeserializeWorkflow(self):
|
def testDeserializeWorkflow(self):
|
||||||
self._compare_with_deserialized_copy(self.workflow)
|
self._compare_with_deserialized_copy(self.workflow)
|
||||||
|
|
||||||
def testSerializeTask(self):
|
|
||||||
self.serializer.serialize_json(self.workflow)
|
|
||||||
|
|
||||||
def testDeserializeTask(self):
|
|
||||||
self._compare_with_deserialized_copy(self.workflow)
|
|
||||||
|
|
||||||
def testDeserializeActiveWorkflow(self):
|
def testDeserializeActiveWorkflow(self):
|
||||||
self.workflow.do_engine_steps()
|
self.workflow.do_engine_steps()
|
||||||
self._compare_with_deserialized_copy(self.workflow)
|
self._compare_with_deserialized_copy(self.workflow)
|
||||||
|
@ -161,17 +140,6 @@ class BpmnWorkflowSerializerTest(unittest.TestCase):
|
||||||
self.assertIsNotNone(wf2.last_task)
|
self.assertIsNotNone(wf2.last_task)
|
||||||
self._compare_workflows(self.workflow, wf2)
|
self._compare_workflows(self.workflow, wf2)
|
||||||
|
|
||||||
def test_convert_1_0_to_1_1(self):
|
|
||||||
# The serialization used here comes from NestedSubprocessTest saved at line 25 with version 1.0
|
|
||||||
fn = os.path.join(os.path.dirname(__file__), 'data', 'serialization', 'v1.0.json')
|
|
||||||
wf = self.serializer.deserialize_json(open(fn).read())
|
|
||||||
# We should be able to finish the workflow from this point
|
|
||||||
ready_tasks = wf.get_tasks(TaskState.READY)
|
|
||||||
self.assertEqual('Action3', ready_tasks[0].task_spec.description)
|
|
||||||
ready_tasks[0].complete()
|
|
||||||
wf.do_engine_steps()
|
|
||||||
self.assertEqual(True, wf.is_completed())
|
|
||||||
|
|
||||||
def test_serialize_workflow_where_script_task_includes_function(self):
|
def test_serialize_workflow_where_script_task_includes_function(self):
|
||||||
self.workflow.do_engine_steps()
|
self.workflow.do_engine_steps()
|
||||||
ready_tasks = self.workflow.get_ready_user_tasks()
|
ready_tasks = self.workflow.get_ready_user_tasks()
|
|
@ -0,0 +1,30 @@
|
||||||
|
import os
|
||||||
|
import time
|
||||||
|
|
||||||
|
from SpiffWorkflow.task import TaskState
|
||||||
|
from SpiffWorkflow.bpmn.PythonScriptEngine import PythonScriptEngine
|
||||||
|
|
||||||
|
from .BaseTestCase import BaseTestCase
|
||||||
|
|
||||||
|
class VersionMigrationTest(BaseTestCase):
|
||||||
|
|
||||||
|
SERIALIZER_VERSION = "1.2"
|
||||||
|
|
||||||
|
def test_convert_1_0_to_1_1(self):
|
||||||
|
# The serialization used here comes from NestedSubprocessTest saved at line 25 with version 1.0
|
||||||
|
fn = os.path.join(self.DATA_DIR, 'serialization', 'v1.0.json')
|
||||||
|
wf = self.serializer.deserialize_json(open(fn).read())
|
||||||
|
# We should be able to finish the workflow from this point
|
||||||
|
ready_tasks = wf.get_tasks(TaskState.READY)
|
||||||
|
self.assertEqual('Action3', ready_tasks[0].task_spec.description)
|
||||||
|
ready_tasks[0].complete()
|
||||||
|
wf.do_engine_steps()
|
||||||
|
self.assertEqual(True, wf.is_completed())
|
||||||
|
|
||||||
|
def test_convert_1_1_to_1_2(self):
|
||||||
|
fn = os.path.join(self.DATA_DIR, 'serialization', 'v1-1.json')
|
||||||
|
wf = self.serializer.deserialize_json(open(fn).read())
|
||||||
|
wf.script_engine = PythonScriptEngine(default_globals={"time": time})
|
||||||
|
wf.refresh_waiting_tasks()
|
||||||
|
wf.do_engine_steps()
|
||||||
|
self.assertTrue(wf.is_completed())
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_0ucc3vj" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.7.0">
|
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_0ucc3vj" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.11.1">
|
||||||
<bpmn:collaboration id="Collaboration_0fh00ao">
|
<bpmn:collaboration id="Collaboration_0fh00ao">
|
||||||
<bpmn:participant id="Participant_1p8gtyd" name="Sample Process " processRef="Process_1kjyavs" />
|
<bpmn:participant id="Participant_1p8gtyd" name="Sample Process " processRef="Process_1kjyavs" />
|
||||||
</bpmn:collaboration>
|
</bpmn:collaboration>
|
||||||
|
@ -78,7 +78,7 @@
|
||||||
<bpmn:incoming>Flow_11u0pgk</bpmn:incoming>
|
<bpmn:incoming>Flow_11u0pgk</bpmn:incoming>
|
||||||
<bpmn:outgoing>Flow_1rqk2v9</bpmn:outgoing>
|
<bpmn:outgoing>Flow_1rqk2v9</bpmn:outgoing>
|
||||||
<bpmn:timerEventDefinition id="TimerEventDefinition_0bct7zl">
|
<bpmn:timerEventDefinition id="TimerEventDefinition_0bct7zl">
|
||||||
<bpmn:timeDuration xsi:type="bpmn:tFormalExpression">timedelta(seconds=.01)</bpmn:timeDuration>
|
<bpmn:timeDuration xsi:type="bpmn:tFormalExpression">"PT0.01S"</bpmn:timeDuration>
|
||||||
</bpmn:timerEventDefinition>
|
</bpmn:timerEventDefinition>
|
||||||
</bpmn:intermediateCatchEvent>
|
</bpmn:intermediateCatchEvent>
|
||||||
<bpmn:sequenceFlow id="Flow_1gs89vo" sourceRef="Event_0akpdke" targetRef="Activity_106f08z" />
|
<bpmn:sequenceFlow id="Flow_1gs89vo" sourceRef="Event_0akpdke" targetRef="Activity_106f08z" />
|
||||||
|
@ -107,48 +107,29 @@
|
||||||
<bpmndi:BPMNShape id="Participant_1p8gtyd_di" bpmnElement="Participant_1p8gtyd" isHorizontal="true">
|
<bpmndi:BPMNShape id="Participant_1p8gtyd_di" bpmnElement="Participant_1p8gtyd" isHorizontal="true">
|
||||||
<dc:Bounds x="190" y="70" width="978" height="638" />
|
<dc:Bounds x="190" y="70" width="978" height="638" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNShape id="Lane_0rpib5y_di" bpmnElement="Lane_0rpib5y" isHorizontal="true">
|
|
||||||
<dc:Bounds x="220" y="70" width="948" height="202" />
|
|
||||||
</bpmndi:BPMNShape>
|
|
||||||
<bpmndi:BPMNShape id="Lane_0gfw5kf_di" bpmnElement="Lane_0gfw5kf" isHorizontal="true">
|
<bpmndi:BPMNShape id="Lane_0gfw5kf_di" bpmnElement="Lane_0gfw5kf" isHorizontal="true">
|
||||||
<dc:Bounds x="220" y="272" width="948" height="436" />
|
<dc:Bounds x="220" y="272" width="948" height="436" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNShape id="Event_0d3xq5q_di" bpmnElement="Event_0d3xq5q">
|
<bpmndi:BPMNShape id="Lane_0rpib5y_di" bpmnElement="Lane_0rpib5y" isHorizontal="true">
|
||||||
<dc:Bounds x="292" y="152" width="36" height="36" />
|
<dc:Bounds x="220" y="70" width="948" height="202" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNEdge id="Flow_0bvln2b_di" bpmnElement="Flow_0bvln2b">
|
<bpmndi:BPMNEdge id="Flow_093roev_di" bpmnElement="Flow_093roev">
|
||||||
<di:waypoint x="328" y="170" />
|
<di:waypoint x="645" y="360" />
|
||||||
<di:waypoint x="380" y="170" />
|
<di:waypoint x="645" y="310" />
|
||||||
|
<di:waypoint x="1050" y="310" />
|
||||||
|
<di:waypoint x="1050" y="442" />
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNShape id="Activity_1ugbw2a_di" bpmnElement="Activity_Interrupt">
|
<bpmndi:BPMNEdge id="Flow_0o0l113_di" bpmnElement="Flow_0o0l113">
|
||||||
<dc:Bounds x="380" y="130" width="100" height="80" />
|
<di:waypoint x="797" y="578" />
|
||||||
</bpmndi:BPMNShape>
|
<di:waypoint x="797" y="630" />
|
||||||
<bpmndi:BPMNShape id="Gateway_0ncff13_di" bpmnElement="Gateway_0ncff13" isMarkerVisible="true">
|
<di:waypoint x="1050" y="630" />
|
||||||
<dc:Bounds x="535" y="145" width="50" height="50" />
|
<di:waypoint x="1050" y="478" />
|
||||||
</bpmndi:BPMNShape>
|
|
||||||
<bpmndi:BPMNEdge id="Flow_1ya6ran_di" bpmnElement="Flow_1ya6ran">
|
|
||||||
<di:waypoint x="480" y="170" />
|
|
||||||
<di:waypoint x="535" y="170" />
|
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge id="Flow_0saykw5_di" bpmnElement="Flow_0saykw5">
|
<bpmndi:BPMNEdge id="Flow_1gd7a2h_di" bpmnElement="Flow_1gd7a2h">
|
||||||
<di:waypoint x="585" y="170" />
|
<di:waypoint x="328" y="430" />
|
||||||
<di:waypoint x="642" y="170" />
|
<di:waypoint x="339" y="430" />
|
||||||
<bpmndi:BPMNLabel>
|
<di:waypoint x="339" y="460" />
|
||||||
<dc:Bounds x="604" y="152" width="19" height="14" />
|
<di:waypoint x="350" y="460" />
|
||||||
</bpmndi:BPMNLabel>
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNShape id="Event_15z0u0c_di" bpmnElement="Event_0g8w85g">
|
|
||||||
<dc:Bounds x="642" y="152" width="36" height="36" />
|
|
||||||
<bpmndi:BPMNLabel>
|
|
||||||
<dc:Bounds x="625" y="195" width="70" height="27" />
|
|
||||||
</bpmndi:BPMNLabel>
|
|
||||||
</bpmndi:BPMNShape>
|
|
||||||
<bpmndi:BPMNShape id="Event_0l8sadb_di" bpmnElement="Event_0l8sadb">
|
|
||||||
<dc:Bounds x="742" y="152" width="36" height="36" />
|
|
||||||
</bpmndi:BPMNShape>
|
|
||||||
<bpmndi:BPMNEdge id="Flow_0lekhj5_di" bpmnElement="Flow_0lekhj5">
|
|
||||||
<di:waypoint x="678" y="170" />
|
|
||||||
<di:waypoint x="742" y="170" />
|
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge id="Flow_1t2ocwk_di" bpmnElement="Flow_1t2ocwk">
|
<bpmndi:BPMNEdge id="Flow_1t2ocwk_di" bpmnElement="Flow_1t2ocwk">
|
||||||
<di:waypoint x="560" y="195" />
|
<di:waypoint x="560" y="195" />
|
||||||
|
@ -159,76 +140,52 @@
|
||||||
<dc:Bounds x="488" y="232" width="15" height="40" />
|
<dc:Bounds x="488" y="232" width="15" height="40" />
|
||||||
</bpmndi:BPMNLabel>
|
</bpmndi:BPMNLabel>
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_0lekhj5_di" bpmnElement="Flow_0lekhj5">
|
||||||
|
<di:waypoint x="678" y="170" />
|
||||||
|
<di:waypoint x="742" y="170" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_0saykw5_di" bpmnElement="Flow_0saykw5">
|
||||||
|
<di:waypoint x="585" y="170" />
|
||||||
|
<di:waypoint x="642" y="170" />
|
||||||
|
<bpmndi:BPMNLabel>
|
||||||
|
<dc:Bounds x="604" y="152" width="19" height="14" />
|
||||||
|
</bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_1ya6ran_di" bpmnElement="Flow_1ya6ran">
|
||||||
|
<di:waypoint x="480" y="170" />
|
||||||
|
<di:waypoint x="535" y="170" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_0bvln2b_di" bpmnElement="Flow_0bvln2b">
|
||||||
|
<di:waypoint x="328" y="170" />
|
||||||
|
<di:waypoint x="380" y="170" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNShape id="Event_0d3xq5q_di" bpmnElement="Event_0d3xq5q">
|
||||||
|
<dc:Bounds x="292" y="152" width="36" height="36" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="Activity_1ugbw2a_di" bpmnElement="Activity_Interrupt">
|
||||||
|
<dc:Bounds x="380" y="130" width="100" height="80" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="Gateway_0ncff13_di" bpmnElement="Gateway_0ncff13" isMarkerVisible="true">
|
||||||
|
<dc:Bounds x="535" y="145" width="50" height="50" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="Event_15z0u0c_di" bpmnElement="Event_0g8w85g">
|
||||||
|
<dc:Bounds x="642" y="152" width="36" height="36" />
|
||||||
|
<bpmndi:BPMNLabel>
|
||||||
|
<dc:Bounds x="625" y="195" width="70" height="27" />
|
||||||
|
</bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="Event_0l8sadb_di" bpmnElement="Event_0l8sadb">
|
||||||
|
<dc:Bounds x="742" y="152" width="36" height="36" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNShape id="Event_12moz8m_di" bpmnElement="Event_12moz8m">
|
<bpmndi:BPMNShape id="Event_12moz8m_di" bpmnElement="Event_12moz8m">
|
||||||
<dc:Bounds x="292" y="412" width="36" height="36" />
|
<dc:Bounds x="292" y="412" width="36" height="36" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNShape id="Activity_1m4766l_di" bpmnElement="Activity_1m4766l" isExpanded="true">
|
|
||||||
<dc:Bounds x="350" y="360" width="590" height="200" />
|
|
||||||
</bpmndi:BPMNShape>
|
|
||||||
<bpmndi:BPMNShape id="Event_0akpdke_di" bpmnElement="Event_0akpdke">
|
|
||||||
<dc:Bounds x="390" y="442" width="36" height="36" />
|
|
||||||
</bpmndi:BPMNShape>
|
|
||||||
<bpmndi:BPMNEdge id="Flow_1gd7a2h_di" bpmnElement="Flow_1gd7a2h">
|
|
||||||
<di:waypoint x="328" y="430" />
|
|
||||||
<di:waypoint x="339" y="430" />
|
|
||||||
<di:waypoint x="339" y="460" />
|
|
||||||
<di:waypoint x="350" y="460" />
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNShape id="Event_0ib6pbh_di" bpmnElement="Event_InterruptBoundary">
|
|
||||||
<dc:Bounds x="779" y="542" width="36" height="36" />
|
|
||||||
<bpmndi:BPMNLabel>
|
|
||||||
<dc:Bounds x="782" y="585" width="32" height="14" />
|
|
||||||
</bpmndi:BPMNLabel>
|
|
||||||
</bpmndi:BPMNShape>
|
|
||||||
<bpmndi:BPMNShape id="Event_0j702hl_di" bpmnElement="Event_0j702hl">
|
<bpmndi:BPMNShape id="Event_0j702hl_di" bpmnElement="Event_0j702hl">
|
||||||
<dc:Bounds x="1032" y="442" width="36" height="36" />
|
<dc:Bounds x="1032" y="442" width="36" height="36" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNEdge id="Flow_0o0l113_di" bpmnElement="Flow_0o0l113">
|
<bpmndi:BPMNShape id="Activity_1m4766l_di" bpmnElement="Activity_1m4766l" isExpanded="true">
|
||||||
<di:waypoint x="797" y="578" />
|
<dc:Bounds x="350" y="360" width="590" height="200" />
|
||||||
<di:waypoint x="797" y="630" />
|
|
||||||
<di:waypoint x="1050" y="630" />
|
|
||||||
<di:waypoint x="1050" y="478" />
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNEdge id="Flow_093roev_di" bpmnElement="Flow_093roev">
|
|
||||||
<di:waypoint x="645" y="360" />
|
|
||||||
<di:waypoint x="645" y="310" />
|
|
||||||
<di:waypoint x="1050" y="310" />
|
|
||||||
<di:waypoint x="1050" y="442" />
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNShape id="Activity_1s4pw7g_di" bpmnElement="Activity_106f08z">
|
|
||||||
<dc:Bounds x="475" y="420" width="100" height="80" />
|
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNEdge id="Flow_11u0pgk_di" bpmnElement="Flow_11u0pgk">
|
|
||||||
<di:waypoint x="575" y="460" />
|
|
||||||
<di:waypoint x="627" y="460" />
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNShape id="Event_0ulu4mx_di" bpmnElement="Event_0aqmn5y">
|
|
||||||
<dc:Bounds x="627" y="442" width="36" height="36" />
|
|
||||||
<bpmndi:BPMNLabel>
|
|
||||||
<dc:Bounds x="618" y="412" width="56" height="14" />
|
|
||||||
</bpmndi:BPMNLabel>
|
|
||||||
</bpmndi:BPMNShape>
|
|
||||||
<bpmndi:BPMNEdge id="Flow_1gs89vo_di" bpmnElement="Flow_1gs89vo">
|
|
||||||
<di:waypoint x="426" y="460" />
|
|
||||||
<di:waypoint x="475" y="460" />
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNShape id="Gateway_0u34qof_di" bpmnElement="Gateway_0u34qof" isMarkerVisible="true">
|
|
||||||
<dc:Bounds x="695" y="435" width="50" height="50" />
|
|
||||||
</bpmndi:BPMNShape>
|
|
||||||
<bpmndi:BPMNShape id="Event_0pjkpp2_di" bpmnElement="Event_0pjkpp2">
|
|
||||||
<dc:Bounds x="802" y="442" width="36" height="36" />
|
|
||||||
</bpmndi:BPMNShape>
|
|
||||||
<bpmndi:BPMNEdge id="Flow_18d90uu_di" bpmnElement="Flow_18d90uu">
|
|
||||||
<di:waypoint x="745" y="460" />
|
|
||||||
<di:waypoint x="802" y="460" />
|
|
||||||
<bpmndi:BPMNLabel>
|
|
||||||
<dc:Bounds x="750" y="442" width="49" height="27" />
|
|
||||||
</bpmndi:BPMNLabel>
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNEdge id="Flow_1rqk2v9_di" bpmnElement="Flow_1rqk2v9">
|
|
||||||
<di:waypoint x="663" y="460" />
|
|
||||||
<di:waypoint x="695" y="460" />
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNEdge id="Flow_0wuxluk_di" bpmnElement="Flow_0wuxluk">
|
<bpmndi:BPMNEdge id="Flow_0wuxluk_di" bpmnElement="Flow_0wuxluk">
|
||||||
<di:waypoint x="720" y="485" />
|
<di:waypoint x="720" y="485" />
|
||||||
<di:waypoint x="720" y="540" />
|
<di:waypoint x="720" y="540" />
|
||||||
|
@ -238,6 +195,49 @@
|
||||||
<dc:Bounds x="580" y="522" width="85" height="14" />
|
<dc:Bounds x="580" y="522" width="85" height="14" />
|
||||||
</bpmndi:BPMNLabel>
|
</bpmndi:BPMNLabel>
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_1rqk2v9_di" bpmnElement="Flow_1rqk2v9">
|
||||||
|
<di:waypoint x="663" y="460" />
|
||||||
|
<di:waypoint x="695" y="460" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_18d90uu_di" bpmnElement="Flow_18d90uu">
|
||||||
|
<di:waypoint x="745" y="460" />
|
||||||
|
<di:waypoint x="802" y="460" />
|
||||||
|
<bpmndi:BPMNLabel>
|
||||||
|
<dc:Bounds x="750" y="442" width="49" height="27" />
|
||||||
|
</bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_1gs89vo_di" bpmnElement="Flow_1gs89vo">
|
||||||
|
<di:waypoint x="426" y="460" />
|
||||||
|
<di:waypoint x="475" y="460" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_11u0pgk_di" bpmnElement="Flow_11u0pgk">
|
||||||
|
<di:waypoint x="575" y="460" />
|
||||||
|
<di:waypoint x="627" y="460" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNShape id="Event_0akpdke_di" bpmnElement="Event_0akpdke">
|
||||||
|
<dc:Bounds x="390" y="442" width="36" height="36" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="Activity_1s4pw7g_di" bpmnElement="Activity_106f08z">
|
||||||
|
<dc:Bounds x="475" y="420" width="100" height="80" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="Event_0ulu4mx_di" bpmnElement="Event_0aqmn5y">
|
||||||
|
<dc:Bounds x="627" y="442" width="36" height="36" />
|
||||||
|
<bpmndi:BPMNLabel>
|
||||||
|
<dc:Bounds x="618" y="412" width="56" height="14" />
|
||||||
|
</bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="Gateway_0u34qof_di" bpmnElement="Gateway_0u34qof" isMarkerVisible="true">
|
||||||
|
<dc:Bounds x="695" y="435" width="50" height="50" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="Event_0pjkpp2_di" bpmnElement="Event_0pjkpp2">
|
||||||
|
<dc:Bounds x="802" y="442" width="36" height="36" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="Event_0ib6pbh_di" bpmnElement="Event_InterruptBoundary">
|
||||||
|
<dc:Bounds x="779" y="542" width="36" height="36" />
|
||||||
|
<bpmndi:BPMNLabel>
|
||||||
|
<dc:Bounds x="782" y="585" width="32" height="14" />
|
||||||
|
</bpmndi:BPMNLabel>
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
</bpmndi:BPMNPlane>
|
</bpmndi:BPMNPlane>
|
||||||
</bpmndi:BPMNDiagram>
|
</bpmndi:BPMNDiagram>
|
||||||
</bpmn:definitions>
|
</bpmn:definitions>
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_1nsvcwb" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.7.0">
|
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_1nsvcwb" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.11.1">
|
||||||
<bpmn:process id="token" isExecutable="true">
|
<bpmn:process id="token" isExecutable="true">
|
||||||
<bpmn:startEvent id="StartEvent_1">
|
<bpmn:startEvent id="StartEvent_1">
|
||||||
<bpmn:outgoing>Flow_03vnrmv</bpmn:outgoing>
|
<bpmn:outgoing>Flow_03vnrmv</bpmn:outgoing>
|
||||||
</bpmn:startEvent>
|
</bpmn:startEvent>
|
||||||
<bpmn:exclusiveGateway id="Gateway_1w9u16f">
|
<bpmn:exclusiveGateway id="Gateway_1w9u16f" default="Flow_1qgke9w">
|
||||||
<bpmn:incoming>Flow_0g2wjhu</bpmn:incoming>
|
<bpmn:incoming>Flow_0g2wjhu</bpmn:incoming>
|
||||||
<bpmn:incoming>Flow_0ya87hl</bpmn:incoming>
|
<bpmn:incoming>Flow_0ya87hl</bpmn:incoming>
|
||||||
<bpmn:outgoing>Flow_1qgke9w</bpmn:outgoing>
|
<bpmn:outgoing>Flow_1qgke9w</bpmn:outgoing>
|
||||||
|
@ -75,28 +75,25 @@
|
||||||
</bpmn:process>
|
</bpmn:process>
|
||||||
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
||||||
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="token">
|
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="token">
|
||||||
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
|
<bpmndi:BPMNEdge id="Flow_039y4lk_di" bpmnElement="Flow_039y4lk">
|
||||||
<dc:Bounds x="179" y="99" width="36" height="36" />
|
<di:waypoint x="1240" y="117" />
|
||||||
</bpmndi:BPMNShape>
|
<di:waypoint x="1322" y="117" />
|
||||||
<bpmndi:BPMNShape id="Gateway_1w9u16f_di" bpmnElement="Gateway_1w9u16f" isMarkerVisible="true">
|
|
||||||
<dc:Bounds x="1015" y="92" width="50" height="50" />
|
|
||||||
</bpmndi:BPMNShape>
|
|
||||||
<bpmndi:BPMNShape id="Activity_1oyfku7_di" bpmnElement="First">
|
|
||||||
<dc:Bounds x="270" y="77" width="100" height="80" />
|
|
||||||
</bpmndi:BPMNShape>
|
|
||||||
<bpmndi:BPMNEdge id="Flow_13qpm6f_di" bpmnElement="Flow_13qpm6f">
|
|
||||||
<di:waypoint x="370" y="117" />
|
|
||||||
<di:waypoint x="465" y="117" />
|
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNShape id="Gateway_0nr9vpb_di" bpmnElement="Gateway_0yirqzr" isMarkerVisible="true">
|
<bpmndi:BPMNEdge id="Flow_03vnrmv_di" bpmnElement="Flow_03vnrmv">
|
||||||
<dc:Bounds x="465" y="92" width="50" height="50" />
|
<di:waypoint x="215" y="117" />
|
||||||
</bpmndi:BPMNShape>
|
<di:waypoint x="270" y="117" />
|
||||||
<bpmndi:BPMNEdge id="Flow_04bpvfu_di" bpmnElement="Flow_04bpvfu">
|
</bpmndi:BPMNEdge>
|
||||||
<di:waypoint x="515" y="117" />
|
<bpmndi:BPMNEdge id="Flow_0ahlz50_di" bpmnElement="Flow_0ahlz50">
|
||||||
<di:waypoint x="610" y="117" />
|
<di:waypoint x="710" y="117" />
|
||||||
<bpmndi:BPMNLabel>
|
<di:waypoint x="840" y="117" />
|
||||||
<dc:Bounds x="553" y="99" width="19" height="14" />
|
</bpmndi:BPMNEdge>
|
||||||
</bpmndi:BPMNLabel>
|
<bpmndi:BPMNEdge id="Flow_0ya87hl_di" bpmnElement="Flow_0ya87hl">
|
||||||
|
<di:waypoint x="940" y="117" />
|
||||||
|
<di:waypoint x="1015" y="117" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_1qgke9w_di" bpmnElement="Flow_1qgke9w">
|
||||||
|
<di:waypoint x="1065" y="117" />
|
||||||
|
<di:waypoint x="1140" y="117" />
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge id="Flow_0g2wjhu_di" bpmnElement="Flow_0g2wjhu">
|
<bpmndi:BPMNEdge id="Flow_0g2wjhu_di" bpmnElement="Flow_0g2wjhu">
|
||||||
<di:waypoint x="490" y="142" />
|
<di:waypoint x="490" y="142" />
|
||||||
|
@ -107,18 +104,29 @@
|
||||||
<dc:Bounds x="758" y="322" width="15" height="14" />
|
<dc:Bounds x="758" y="322" width="15" height="14" />
|
||||||
</bpmndi:BPMNLabel>
|
</bpmndi:BPMNLabel>
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge id="Flow_1qgke9w_di" bpmnElement="Flow_1qgke9w">
|
<bpmndi:BPMNEdge id="Flow_04bpvfu_di" bpmnElement="Flow_04bpvfu">
|
||||||
<di:waypoint x="1065" y="117" />
|
<di:waypoint x="515" y="117" />
|
||||||
<di:waypoint x="1140" y="117" />
|
<di:waypoint x="610" y="117" />
|
||||||
|
<bpmndi:BPMNLabel>
|
||||||
|
<dc:Bounds x="553" y="99" width="19" height="14" />
|
||||||
|
</bpmndi:BPMNLabel>
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge id="Flow_0ya87hl_di" bpmnElement="Flow_0ya87hl">
|
<bpmndi:BPMNEdge id="Flow_13qpm6f_di" bpmnElement="Flow_13qpm6f">
|
||||||
<di:waypoint x="940" y="117" />
|
<di:waypoint x="370" y="117" />
|
||||||
<di:waypoint x="1015" y="117" />
|
<di:waypoint x="465" y="117" />
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNEdge id="Flow_0ahlz50_di" bpmnElement="Flow_0ahlz50">
|
|
||||||
<di:waypoint x="710" y="117" />
|
|
||||||
<di:waypoint x="840" y="117" />
|
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
|
||||||
|
<dc:Bounds x="179" y="99" width="36" height="36" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="Gateway_1w9u16f_di" bpmnElement="Gateway_1w9u16f" isMarkerVisible="true">
|
||||||
|
<dc:Bounds x="1015" y="92" width="50" height="50" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="Activity_1oyfku7_di" bpmnElement="First">
|
||||||
|
<dc:Bounds x="270" y="77" width="100" height="80" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="Gateway_0nr9vpb_di" bpmnElement="Gateway_0yirqzr" isMarkerVisible="true">
|
||||||
|
<dc:Bounds x="465" y="92" width="50" height="50" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNShape id="Activity_18dz45e_di" bpmnElement="FormA">
|
<bpmndi:BPMNShape id="Activity_18dz45e_di" bpmnElement="FormA">
|
||||||
<dc:Bounds x="610" y="77" width="100" height="80" />
|
<dc:Bounds x="610" y="77" width="100" height="80" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
|
@ -128,17 +136,9 @@
|
||||||
<bpmndi:BPMNShape id="Activity_1byzp7w_di" bpmnElement="FormC">
|
<bpmndi:BPMNShape id="Activity_1byzp7w_di" bpmnElement="FormC">
|
||||||
<dc:Bounds x="1140" y="77" width="100" height="80" />
|
<dc:Bounds x="1140" y="77" width="100" height="80" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNEdge id="Flow_03vnrmv_di" bpmnElement="Flow_03vnrmv">
|
|
||||||
<di:waypoint x="215" y="117" />
|
|
||||||
<di:waypoint x="270" y="117" />
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNShape id="Event_0xfwzm8_di" bpmnElement="Event_0xfwzm8">
|
<bpmndi:BPMNShape id="Event_0xfwzm8_di" bpmnElement="Event_0xfwzm8">
|
||||||
<dc:Bounds x="1322" y="99" width="36" height="36" />
|
<dc:Bounds x="1322" y="99" width="36" height="36" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNEdge id="Flow_039y4lk_di" bpmnElement="Flow_039y4lk">
|
|
||||||
<di:waypoint x="1240" y="117" />
|
|
||||||
<di:waypoint x="1322" y="117" />
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
</bpmndi:BPMNPlane>
|
</bpmndi:BPMNPlane>
|
||||||
</bpmndi:BPMNDiagram>
|
</bpmndi:BPMNDiagram>
|
||||||
</bpmn:definitions>
|
</bpmn:definitions>
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_1nsvcwb" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.7.0">
|
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" id="Definitions_1nsvcwb" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.11.1">
|
||||||
<bpmn:process id="token" isExecutable="true">
|
<bpmn:process id="token" isExecutable="true">
|
||||||
<bpmn:startEvent id="StartEvent_1">
|
<bpmn:startEvent id="StartEvent_1">
|
||||||
<bpmn:outgoing>Flow_03vnrmv</bpmn:outgoing>
|
<bpmn:outgoing>Flow_03vnrmv</bpmn:outgoing>
|
||||||
</bpmn:startEvent>
|
</bpmn:startEvent>
|
||||||
<bpmn:exclusiveGateway id="Gateway_1w9u16f">
|
<bpmn:exclusiveGateway id="Gateway_1w9u16f" default="Flow_1qgke9w">
|
||||||
<bpmn:incoming>Flow_0g2wjhu</bpmn:incoming>
|
<bpmn:incoming>Flow_0g2wjhu</bpmn:incoming>
|
||||||
<bpmn:incoming>Flow_0ya87hl</bpmn:incoming>
|
<bpmn:incoming>Flow_0ya87hl</bpmn:incoming>
|
||||||
<bpmn:outgoing>Flow_1qgke9w</bpmn:outgoing>
|
<bpmn:outgoing>Flow_1qgke9w</bpmn:outgoing>
|
||||||
|
@ -73,28 +73,25 @@
|
||||||
</bpmn:process>
|
</bpmn:process>
|
||||||
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
||||||
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="token">
|
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="token">
|
||||||
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
|
<bpmndi:BPMNEdge id="Flow_039y4lk_di" bpmnElement="Flow_039y4lk">
|
||||||
<dc:Bounds x="179" y="99" width="36" height="36" />
|
<di:waypoint x="1240" y="117" />
|
||||||
</bpmndi:BPMNShape>
|
<di:waypoint x="1322" y="117" />
|
||||||
<bpmndi:BPMNShape id="Gateway_1w9u16f_di" bpmnElement="Gateway_1w9u16f" isMarkerVisible="true">
|
|
||||||
<dc:Bounds x="1015" y="92" width="50" height="50" />
|
|
||||||
</bpmndi:BPMNShape>
|
|
||||||
<bpmndi:BPMNShape id="Activity_1oyfku7_di" bpmnElement="First">
|
|
||||||
<dc:Bounds x="270" y="77" width="100" height="80" />
|
|
||||||
</bpmndi:BPMNShape>
|
|
||||||
<bpmndi:BPMNEdge id="Flow_13qpm6f_di" bpmnElement="Flow_13qpm6f">
|
|
||||||
<di:waypoint x="370" y="117" />
|
|
||||||
<di:waypoint x="465" y="117" />
|
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNShape id="Gateway_0nr9vpb_di" bpmnElement="Gateway_0yirqzr" isMarkerVisible="true">
|
<bpmndi:BPMNEdge id="Flow_03vnrmv_di" bpmnElement="Flow_03vnrmv">
|
||||||
<dc:Bounds x="465" y="92" width="50" height="50" />
|
<di:waypoint x="215" y="117" />
|
||||||
</bpmndi:BPMNShape>
|
<di:waypoint x="270" y="117" />
|
||||||
<bpmndi:BPMNEdge id="Flow_04bpvfu_di" bpmnElement="Flow_04bpvfu">
|
</bpmndi:BPMNEdge>
|
||||||
<di:waypoint x="515" y="117" />
|
<bpmndi:BPMNEdge id="Flow_0ahlz50_di" bpmnElement="Flow_0ahlz50">
|
||||||
<di:waypoint x="610" y="117" />
|
<di:waypoint x="710" y="117" />
|
||||||
<bpmndi:BPMNLabel>
|
<di:waypoint x="840" y="117" />
|
||||||
<dc:Bounds x="553" y="99" width="19" height="14" />
|
</bpmndi:BPMNEdge>
|
||||||
</bpmndi:BPMNLabel>
|
<bpmndi:BPMNEdge id="Flow_0ya87hl_di" bpmnElement="Flow_0ya87hl">
|
||||||
|
<di:waypoint x="940" y="117" />
|
||||||
|
<di:waypoint x="1015" y="117" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_1qgke9w_di" bpmnElement="Flow_1qgke9w">
|
||||||
|
<di:waypoint x="1065" y="117" />
|
||||||
|
<di:waypoint x="1140" y="117" />
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge id="Flow_0g2wjhu_di" bpmnElement="Flow_0g2wjhu">
|
<bpmndi:BPMNEdge id="Flow_0g2wjhu_di" bpmnElement="Flow_0g2wjhu">
|
||||||
<di:waypoint x="490" y="142" />
|
<di:waypoint x="490" y="142" />
|
||||||
|
@ -105,18 +102,29 @@
|
||||||
<dc:Bounds x="758" y="322" width="15" height="14" />
|
<dc:Bounds x="758" y="322" width="15" height="14" />
|
||||||
</bpmndi:BPMNLabel>
|
</bpmndi:BPMNLabel>
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge id="Flow_1qgke9w_di" bpmnElement="Flow_1qgke9w">
|
<bpmndi:BPMNEdge id="Flow_04bpvfu_di" bpmnElement="Flow_04bpvfu">
|
||||||
<di:waypoint x="1065" y="117" />
|
<di:waypoint x="515" y="117" />
|
||||||
<di:waypoint x="1140" y="117" />
|
<di:waypoint x="610" y="117" />
|
||||||
|
<bpmndi:BPMNLabel>
|
||||||
|
<dc:Bounds x="553" y="99" width="19" height="14" />
|
||||||
|
</bpmndi:BPMNLabel>
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge id="Flow_0ya87hl_di" bpmnElement="Flow_0ya87hl">
|
<bpmndi:BPMNEdge id="Flow_13qpm6f_di" bpmnElement="Flow_13qpm6f">
|
||||||
<di:waypoint x="940" y="117" />
|
<di:waypoint x="370" y="117" />
|
||||||
<di:waypoint x="1015" y="117" />
|
<di:waypoint x="465" y="117" />
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNEdge id="Flow_0ahlz50_di" bpmnElement="Flow_0ahlz50">
|
|
||||||
<di:waypoint x="710" y="117" />
|
|
||||||
<di:waypoint x="840" y="117" />
|
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
|
||||||
|
<dc:Bounds x="179" y="99" width="36" height="36" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="Gateway_1w9u16f_di" bpmnElement="Gateway_1w9u16f" isMarkerVisible="true">
|
||||||
|
<dc:Bounds x="1015" y="92" width="50" height="50" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="Activity_1oyfku7_di" bpmnElement="First">
|
||||||
|
<dc:Bounds x="270" y="77" width="100" height="80" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
|
<bpmndi:BPMNShape id="Gateway_0nr9vpb_di" bpmnElement="Gateway_0yirqzr" isMarkerVisible="true">
|
||||||
|
<dc:Bounds x="465" y="92" width="50" height="50" />
|
||||||
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNShape id="Activity_18dz45e_di" bpmnElement="FormA">
|
<bpmndi:BPMNShape id="Activity_18dz45e_di" bpmnElement="FormA">
|
||||||
<dc:Bounds x="610" y="77" width="100" height="80" />
|
<dc:Bounds x="610" y="77" width="100" height="80" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
|
@ -126,17 +134,9 @@
|
||||||
<bpmndi:BPMNShape id="Activity_1byzp7w_di" bpmnElement="FormC">
|
<bpmndi:BPMNShape id="Activity_1byzp7w_di" bpmnElement="FormC">
|
||||||
<dc:Bounds x="1140" y="77" width="100" height="80" />
|
<dc:Bounds x="1140" y="77" width="100" height="80" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNEdge id="Flow_03vnrmv_di" bpmnElement="Flow_03vnrmv">
|
|
||||||
<di:waypoint x="215" y="117" />
|
|
||||||
<di:waypoint x="270" y="117" />
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNShape id="Event_0xfwzm8_di" bpmnElement="Event_0xfwzm8">
|
<bpmndi:BPMNShape id="Event_0xfwzm8_di" bpmnElement="Event_0xfwzm8">
|
||||||
<dc:Bounds x="1322" y="99" width="36" height="36" />
|
<dc:Bounds x="1322" y="99" width="36" height="36" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNEdge id="Flow_039y4lk_di" bpmnElement="Flow_039y4lk">
|
|
||||||
<di:waypoint x="1240" y="117" />
|
|
||||||
<di:waypoint x="1322" y="117" />
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
</bpmndi:BPMNPlane>
|
</bpmndi:BPMNPlane>
|
||||||
</bpmndi:BPMNDiagram>
|
</bpmndi:BPMNDiagram>
|
||||||
</bpmn:definitions>
|
</bpmn:definitions>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1oogn9j" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.7.3">
|
<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1oogn9j" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.11.1">
|
||||||
<bpmn:process id="token_trial_parallel_simple" isExecutable="true">
|
<bpmn:process id="token_trial_parallel_simple" isExecutable="true">
|
||||||
<bpmn:startEvent id="StartEvent_1">
|
<bpmn:startEvent id="StartEvent_1">
|
||||||
<bpmn:outgoing>Flow_1w2tcdp</bpmn:outgoing>
|
<bpmn:outgoing>Flow_1w2tcdp</bpmn:outgoing>
|
||||||
|
@ -100,7 +100,7 @@
|
||||||
<bpmn:sequenceFlow id="SequenceFlow_09c4dnr" sourceRef="UserTask_0fd3nql" targetRef="ExclusiveGateway_1knbrs3" />
|
<bpmn:sequenceFlow id="SequenceFlow_09c4dnr" sourceRef="UserTask_0fd3nql" targetRef="ExclusiveGateway_1knbrs3" />
|
||||||
<bpmn:sequenceFlow id="SequenceFlow_0rwnquq" sourceRef="UserTask_1k9gxsc" targetRef="ExclusiveGateway_1knbrs3" />
|
<bpmn:sequenceFlow id="SequenceFlow_0rwnquq" sourceRef="UserTask_1k9gxsc" targetRef="ExclusiveGateway_1knbrs3" />
|
||||||
<bpmn:sequenceFlow id="SequenceFlow_00fpfhi" sourceRef="ExclusiveGateway_1knbrs3" targetRef="Gateway_191l7i1" />
|
<bpmn:sequenceFlow id="SequenceFlow_00fpfhi" sourceRef="ExclusiveGateway_1knbrs3" targetRef="Gateway_191l7i1" />
|
||||||
<bpmn:exclusiveGateway id="Gateway_191l7i1">
|
<bpmn:exclusiveGateway id="Gateway_191l7i1" default="Flow_1vtdwmy">
|
||||||
<bpmn:incoming>SequenceFlow_00fpfhi</bpmn:incoming>
|
<bpmn:incoming>SequenceFlow_00fpfhi</bpmn:incoming>
|
||||||
<bpmn:incoming>Flow_0wycgzo</bpmn:incoming>
|
<bpmn:incoming>Flow_0wycgzo</bpmn:incoming>
|
||||||
<bpmn:outgoing>Flow_1vtdwmy</bpmn:outgoing>
|
<bpmn:outgoing>Flow_1vtdwmy</bpmn:outgoing>
|
||||||
|
@ -126,6 +126,18 @@
|
||||||
</bpmn:process>
|
</bpmn:process>
|
||||||
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
||||||
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="token_trial_parallel_simple">
|
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="token_trial_parallel_simple">
|
||||||
|
<bpmndi:BPMNEdge id="Flow_1vtdwmy_di" bpmnElement="Flow_1vtdwmy">
|
||||||
|
<di:waypoint x="985" y="247" />
|
||||||
|
<di:waypoint x="1062" y="247" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_00zjlx7_di" bpmnElement="Flow_00zjlx7">
|
||||||
|
<di:waypoint x="360" y="247" />
|
||||||
|
<di:waypoint x="455" y="247" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
|
<bpmndi:BPMNEdge id="Flow_1w2tcdp_di" bpmnElement="Flow_1w2tcdp">
|
||||||
|
<di:waypoint x="188" y="247" />
|
||||||
|
<di:waypoint x="260" y="247" />
|
||||||
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge id="Flow_0wycgzo_di" bpmnElement="Flow_0wycgzo">
|
<bpmndi:BPMNEdge id="Flow_0wycgzo_di" bpmnElement="Flow_0wycgzo">
|
||||||
<di:waypoint x="480" y="222" />
|
<di:waypoint x="480" y="222" />
|
||||||
<di:waypoint x="480" y="100" />
|
<di:waypoint x="480" y="100" />
|
||||||
|
@ -166,18 +178,12 @@
|
||||||
<di:waypoint x="600" y="190" />
|
<di:waypoint x="600" y="190" />
|
||||||
<di:waypoint x="680" y="190" />
|
<di:waypoint x="680" y="190" />
|
||||||
</bpmndi:BPMNEdge>
|
</bpmndi:BPMNEdge>
|
||||||
<bpmndi:BPMNEdge id="Flow_1w2tcdp_di" bpmnElement="Flow_1w2tcdp">
|
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
|
||||||
<di:waypoint x="188" y="247" />
|
<dc:Bounds x="152" y="229" width="36" height="36" />
|
||||||
<di:waypoint x="260" y="247" />
|
</bpmndi:BPMNShape>
|
||||||
</bpmndi:BPMNEdge>
|
<bpmndi:BPMNShape id="EndEvent_09wp7av_di" bpmnElement="EndEvent_09wp7av">
|
||||||
<bpmndi:BPMNEdge id="Flow_00zjlx7_di" bpmnElement="Flow_00zjlx7">
|
<dc:Bounds x="1062" y="229" width="36" height="36" />
|
||||||
<di:waypoint x="360" y="247" />
|
</bpmndi:BPMNShape>
|
||||||
<di:waypoint x="455" y="247" />
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNEdge id="Flow_1vtdwmy_di" bpmnElement="Flow_1vtdwmy">
|
|
||||||
<di:waypoint x="985" y="247" />
|
|
||||||
<di:waypoint x="1062" y="247" />
|
|
||||||
</bpmndi:BPMNEdge>
|
|
||||||
<bpmndi:BPMNShape id="UserTask_0fd3nql_di" bpmnElement="UserTask_0fd3nql">
|
<bpmndi:BPMNShape id="UserTask_0fd3nql_di" bpmnElement="UserTask_0fd3nql">
|
||||||
<dc:Bounds x="680" y="150" width="100" height="80" />
|
<dc:Bounds x="680" y="150" width="100" height="80" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
|
@ -202,15 +208,9 @@
|
||||||
<dc:Bounds x="451" y="279" width="60" height="14" />
|
<dc:Bounds x="451" y="279" width="60" height="14" />
|
||||||
</bpmndi:BPMNLabel>
|
</bpmndi:BPMNLabel>
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
|
|
||||||
<dc:Bounds x="152" y="229" width="36" height="36" />
|
|
||||||
</bpmndi:BPMNShape>
|
|
||||||
<bpmndi:BPMNShape id="Activity_0n0v1lt_di" bpmnElement="Activity_1ghr6kd">
|
<bpmndi:BPMNShape id="Activity_0n0v1lt_di" bpmnElement="Activity_1ghr6kd">
|
||||||
<dc:Bounds x="260" y="207" width="100" height="80" />
|
<dc:Bounds x="260" y="207" width="100" height="80" />
|
||||||
</bpmndi:BPMNShape>
|
</bpmndi:BPMNShape>
|
||||||
<bpmndi:BPMNShape id="EndEvent_09wp7av_di" bpmnElement="EndEvent_09wp7av">
|
|
||||||
<dc:Bounds x="1062" y="229" width="36" height="36" />
|
|
||||||
</bpmndi:BPMNShape>
|
|
||||||
</bpmndi:BPMNPlane>
|
</bpmndi:BPMNPlane>
|
||||||
</bpmndi:BPMNDiagram>
|
</bpmndi:BPMNDiagram>
|
||||||
</bpmn:definitions>
|
</bpmn:definitions>
|
||||||
|
|
Loading…
Reference in New Issue