Squashed 'SpiffWorkflow/' changes from 12f81480a..d27519a36

d27519a36 Merge pull request #259 from sartography/bugfix/spiff-postscript-execution
21aa8a12c update execution order for postscripts
d83fd3d81 Merge pull request #256 from sartography/feature/xml-validation
8303aaab5 uping the sleep time in a test slightly to see if we can get this test to pass consistently in CI.
1d251d55d determine whether to validate by passing in a validator instead of a parameter
2d3daad2d add spiff schema
f8c65dc60 Minor changes to BPMN diagrams to assure all tests are run against valid BPMN Diagrams. Changes required:
9e06b25bf add DMN validation
1b7cbeba0 set parser to validate by default
53fdbba52 add schemas & validation option
a212d9c5d general cleanup

git-subtree-dir: SpiffWorkflow
git-subtree-split: d27519a3631b9772094e5f24dba2f478b0c47135
This commit is contained in:
jasquat 2022-10-27 10:50:48 -04:00
parent 6524778a76
commit 69e814758e
31 changed files with 107 additions and 569 deletions

View File

@ -3,6 +3,7 @@
import json import json
import os import os
import unittest import unittest
from SpiffWorkflow.bpmn.parser.BpmnParser import BpmnValidator
from SpiffWorkflow.task import TaskState from SpiffWorkflow.task import TaskState
@ -18,9 +19,10 @@ class BpmnWorkflowTestCase(unittest.TestCase):
serializer = BpmnWorkflowSerializer(wf_spec_converter) serializer = BpmnWorkflowSerializer(wf_spec_converter)
def load_workflow_spec(self, filename, process_name): def load_workflow_spec(self, filename, process_name, validate=True):
f = os.path.join(os.path.dirname(__file__), 'data', filename) f = os.path.join(os.path.dirname(__file__), 'data', filename)
parser = TestBpmnParser() validator = BpmnValidator() if validate else None
parser = TestBpmnParser(validator=validator)
parser.add_bpmn_files_by_glob(f) parser.add_bpmn_files_by_glob(f)
top_level_spec = parser.get_spec(process_name) top_level_spec = parser.get_spec(process_name)
subprocesses = parser.get_subprocess_specs(process_name) subprocesses = parser.get_subprocess_specs(process_name)

View File

@ -1,36 +0,0 @@
# -*- coding: utf-8 -*-
import sys
import os
import unittest
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', '..', '..'))
from tests.SpiffWorkflow.bpmn.BpmnWorkflowTestCase import BpmnWorkflowTestCase
from SpiffWorkflow.bpmn.parser.ValidationException import ValidationException
__author__ = 'kellym'
class ClashingNameTest2(BpmnWorkflowTestCase):
"""The example bpmn diagram tests both a set cardinality from user input
as well as looping over an existing array."""
def setUp(self):
pass
def loadWorkflow(self):
self.load_workflow_spec('Approvals_bad.bpmn', 'Approvals')
def testRunThroughHappy(self):
# make sure we raise an exception
# when validating a workflow with multiple
# same IDs in the BPMN workspace
self.assertRaises(ValidationException,self.loadWorkflow)
def suite():
return unittest.TestLoader().loadTestsFromTestCase(ClashingNameTest2)
if __name__ == '__main__':
unittest.TextTestRunner(verbosity=2).run(suite())

View File

@ -1,18 +1,10 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import sys
import os import os
import unittest import unittest
from SpiffWorkflow.camunda.parser.CamundaParser import CamundaParser from SpiffWorkflow.camunda.parser.CamundaParser import CamundaParser
from SpiffWorkflow.dmn.parser.BpmnDmnParser import BpmnDmnParser
from SpiffWorkflow.spiff.parser import SpiffBpmnParser from SpiffWorkflow.spiff.parser import SpiffBpmnParser
from tests.SpiffWorkflow.bpmn.BpmnLoaderForTests import TestBpmnParser
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..', '..', '..'))
from SpiffWorkflow.bpmn.workflow import BpmnWorkflow
from tests.SpiffWorkflow.bpmn.BpmnWorkflowTestCase import BpmnWorkflowTestCase from tests.SpiffWorkflow.bpmn.BpmnWorkflowTestCase import BpmnWorkflowTestCase
__author__ = 'danfunk' __author__ = 'danfunk'
@ -34,6 +26,7 @@ class ProcessDependencyTest(BpmnWorkflowTestCase):
self.actual_test(SpiffBpmnParser()) self.actual_test(SpiffBpmnParser())
def actual_test(self, parser): def actual_test(self, parser):
# We ought to test the parsers in the packages they belong to, not here.
filename = 'call_activity_nested' filename = 'call_activity_nested'
process_name = 'Level1' process_name = 'Level1'
base_dir = os.path.join(os.path.dirname(__file__), 'data', filename) base_dir = os.path.join(os.path.dirname(__file__), 'data', filename)

View File

@ -102,7 +102,7 @@
</model:process> </model:process>
<model:process id="First_Approval_Wins" name="First Approval Wins"> <model:process id="First_Approval_Wins" name="First Approval Wins">
<model:documentation></model:documentation> <model:documentation></model:documentation>
<model:laneSet id="First_Approval_Wins.First Approval Wins_laneSet"> <model:laneSet id="First_Approval_Wins.First_Approval_Wins_laneSet">
<model:lane id="First_Approval_Wins.Supervisor" name="Supervisor"> <model:lane id="First_Approval_Wins.Supervisor" name="Supervisor">
<model:documentation></model:documentation> <model:documentation></model:documentation>
<model:flowNodeRef>Supervisor_Approval</model:flowNodeRef> <model:flowNodeRef>Supervisor_Approval</model:flowNodeRef>
@ -147,7 +147,7 @@
</model:process> </model:process>
<model:process id="Parallel_Approvals_SP" name="Parallel Approvals SP"> <model:process id="Parallel_Approvals_SP" name="Parallel Approvals SP">
<model:documentation></model:documentation> <model:documentation></model:documentation>
<model:laneSet id="Parallel_Approvals_SP.Parallel Approvals SP_laneSet"> <model:laneSet id="Parallel_Approvals_SP.Parallel_Approvals_SP_laneSet">
<model:lane id="Parallel_Approvals_SP.Supervisor" name="Supervisor"> <model:lane id="Parallel_Approvals_SP.Supervisor" name="Supervisor">
<model:documentation></model:documentation> <model:documentation></model:documentation>
<model:flowNodeRef>Start3</model:flowNodeRef> <model:flowNodeRef>Start3</model:flowNodeRef>

View File

@ -1,403 +0,0 @@
<?xml version="1.0" encoding="ASCII"?>
<model:definitions xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di_1="http://www.omg.org/spec/DD/20100524/DI" xmlns:model="http://www.omg.org/spec/BPMN/20100524/MODEL" exporter="BonitaSoft" exporterVersion="5.7" expressionLanguage="http://groovy.codehaus.org/" targetNamespace="http://bonitasoft.com/Approvals">
<model:collaboration id="Approvals">
<model:documentation></model:documentation>
<model:participant id="Initiator">
<model:documentation>Person who takes the first action to start the process</model:documentation>
</model:participant>
<model:participant id="_auWnIO-1EeG6ILSEFG-uBA" name="Approvals" processRef="Approvals"/>
<model:participant id="_auX1QO-1EeG6ILSEFG-uBA" name="First Approval Wins" processRef="First_Approval_Wins"/>
<model:participant id="_auYcUO-1EeG6ILSEFG-uBA" name="Parallel Approvals SP" processRef="Parallel_Approvals_SP"/>
</model:collaboration>
<model:process id="Approvals" name="Approvals">
<model:documentation></model:documentation>
<model:laneSet id="Approvals_laneSet">
<model:lane id="Approvals.Test" name="Test">
<model:documentation></model:documentation>
<model:flowNodeRef>Start1</model:flowNodeRef>
<model:flowNodeRef>First_Approval_Wins</model:flowNodeRef>
<model:flowNodeRef>End1</model:flowNodeRef>
<model:flowNodeRef>First_Approval_Wins_Done</model:flowNodeRef>
<model:flowNodeRef>Parallel_Approvals_Done</model:flowNodeRef>
<model:flowNodeRef>Parallel_SP</model:flowNodeRef>
<model:flowNodeRef>Parallel_SP_Done</model:flowNodeRef>
</model:lane>
<model:lane id="Approvals.Supervisor" name="Supervisor">
<model:documentation></model:documentation>
<model:flowNodeRef>Supervisor_Approval__P_</model:flowNodeRef>
<model:flowNodeRef>Gateway4</model:flowNodeRef>
<model:flowNodeRef>Gateway5</model:flowNodeRef>
</model:lane>
<model:lane id="Approvals.Manager" name="Manager">
<model:documentation></model:documentation>
<model:flowNodeRef>Manager_Approval__P_</model:flowNodeRef>
</model:lane>
</model:laneSet>
<model:startEvent id="Approvals.Start1" name="Start1">
<model:documentation></model:documentation>
</model:startEvent>
<model:callActivity id="Approvals.First_Approval_Wins" name="First Approval Wins" calledElement="First_Approval_Wins">
<model:documentation></model:documentation>
</model:callActivity>
<model:endEvent id="Approvals.End1" name="End1">
<model:documentation></model:documentation>
</model:endEvent>
<model:manualTask id="Approvals.First_Approval_Wins_Done" name="First Approval Wins Done">
<model:documentation></model:documentation>
</model:manualTask>
<model:manualTask id="Approvals.Parallel_Approvals_Done" name="Parallel Approvals Done">
<model:documentation></model:documentation>
</model:manualTask>
<model:callActivity id="Approvals.Parallel_SP" name="Parallel SP" calledElement="Parallel_Approvals_SP">
<model:documentation></model:documentation>
</model:callActivity>
<model:manualTask id="Approvals.Parallel_SP_Done" name="Parallel SP Done">
<model:documentation></model:documentation>
</model:manualTask>
<model:manualTask id="Approvals.Supervisor_Approval__P_" name="Supervisor Approval (P)">
<model:documentation></model:documentation>
</model:manualTask>
<model:parallelGateway id="Approvals.Gateway4" name="Gateway4">
<model:documentation></model:documentation>
</model:parallelGateway>
<model:parallelGateway id="Approvals.Gateway5" name="Gateway5">
<model:documentation></model:documentation>
</model:parallelGateway>
<model:manualTask id="Approvals.Manager_Approval__P_" name="Manager Approval (P)">
<model:documentation></model:documentation>
</model:manualTask>
<model:sequenceFlow id="_IcV3AO4CEeG6ILSEFG-uBA" sourceRef="Approvals.Start1" targetRef="Approvals.First_Approval_Wins">
<model:documentation></model:documentation>
</model:sequenceFlow>
<model:sequenceFlow id="_vVCwgO4DEeG6ILSEFG-uBA" sourceRef="Approvals.First_Approval_Wins" targetRef="Approvals.First_Approval_Wins_Done">
<model:documentation></model:documentation>
</model:sequenceFlow>
<model:sequenceFlow id="On_to_Parallel_Approvals1" name="On to Parallel Approvals" sourceRef="Approvals.First_Approval_Wins_Done" targetRef="Approvals.Gateway4">
<model:documentation></model:documentation>
</model:sequenceFlow>
<model:sequenceFlow id="_dceXwO6YEeG6ILSEFG-uBA" sourceRef="Approvals.Gateway4" targetRef="Approvals.Manager_Approval__P_">
<model:documentation></model:documentation>
</model:sequenceFlow>
<model:sequenceFlow id="_d_Hx0O6YEeG6ILSEFG-uBA" sourceRef="Approvals.Gateway4" targetRef="Approvals.Supervisor_Approval__P_">
<model:documentation></model:documentation>
</model:sequenceFlow>
<model:sequenceFlow id="Approve2" name="Approve" sourceRef="Approvals.Supervisor_Approval__P_" targetRef="Approvals.Gateway5">
<model:documentation></model:documentation>
</model:sequenceFlow>
<model:sequenceFlow id="On_To_Parallel_SP3" name="On To Parallel SP" sourceRef="Approvals.Parallel_Approvals_Done" targetRef="Approvals.Parallel_SP">
<model:documentation></model:documentation>
</model:sequenceFlow>
<model:sequenceFlow id="Approve4" name="Approve" sourceRef="Approvals.Manager_Approval__P_" targetRef="Approvals.Gateway5">
<model:documentation></model:documentation>
</model:sequenceFlow>
<model:sequenceFlow id="OK5" name="OK" sourceRef="Approvals.Parallel_SP_Done" targetRef="Approvals.End1">
<model:documentation></model:documentation>
</model:sequenceFlow>
<model:sequenceFlow id="_76Vy8O6ZEeG6ILSEFG-uBA" sourceRef="Approvals.Parallel_SP" targetRef="Approvals.Parallel_SP_Done">
<model:documentation></model:documentation>
</model:sequenceFlow>
<model:sequenceFlow id="_E8AnwO6aEeG6ILSEFG-uBA" sourceRef="Approvals.Gateway5" targetRef="Approvals.Parallel_Approvals_Done">
<model:documentation></model:documentation>
</model:sequenceFlow>
</model:process>
<model:process id="First_Approval_Wins" name="First Approval Wins">
<model:documentation></model:documentation>
<model:laneSet id="First_Approval_Wins.First Approval Wins_laneSet">
<model:lane id="First_Approval_Wins.Supervisor" name="Supervisor">
<model:documentation></model:documentation>
<model:flowNodeRef>Supervisor_Approval</model:flowNodeRef>
<model:flowNodeRef>Start2</model:flowNodeRef>
<model:flowNodeRef>Supervisor_Approved</model:flowNodeRef>
</model:lane>
<model:lane id="First_Approval_Wins.Manager" name="Manager">
<model:documentation></model:documentation>
<model:flowNodeRef>Manager_Approval</model:flowNodeRef>
<model:flowNodeRef>Manager_Approved</model:flowNodeRef>
</model:lane>
</model:laneSet>
<model:manualTask id="First_Approval_Wins.Supervisor_Approval" name="Supervisor Approval">
<model:documentation></model:documentation>
</model:manualTask>
<model:startEvent id="First_Approval_Wins.Start2" name="Start2">
<model:documentation></model:documentation>
</model:startEvent>
<model:endEvent id="First_Approval_Wins.Supervisor_Approved" name="Supervisor Approved">
<model:documentation></model:documentation>
<model:terminateEventDefinition id="_auX1Qe-1EeG6ILSEFG-uBA"/>
</model:endEvent>
<model:manualTask id="First_Approval_Wins.Manager_Approval" name="Manager Approval">
<model:documentation></model:documentation>
</model:manualTask>
<model:endEvent id="First_Approval_Wins.Manager_Approved" name="Manager Approved">
<model:documentation></model:documentation>
<model:terminateEventDefinition id="_auX1Qu-1EeG6ILSEFG-uBA"/>
</model:endEvent>
<model:sequenceFlow id="Approve6" name="Approve" sourceRef="First_Approval_Wins.Supervisor_Approval" targetRef="First_Approval_Wins.Supervisor_Approved">
<model:documentation></model:documentation>
</model:sequenceFlow>
<model:sequenceFlow id="Approve7" name="Approve" sourceRef="First_Approval_Wins.Manager_Approval" targetRef="First_Approval_Wins.Manager_Approved">
<model:documentation></model:documentation>
</model:sequenceFlow>
<model:sequenceFlow id="_CtMukO7hEeG6ILSEFG-uBA" sourceRef="First_Approval_Wins.Start2" targetRef="First_Approval_Wins.Supervisor_Approval">
<model:documentation></model:documentation>
</model:sequenceFlow>
<model:sequenceFlow id="_DBwCQO7hEeG6ILSEFG-uBA" sourceRef="First_Approval_Wins.Start2" targetRef="First_Approval_Wins.Manager_Approval">
<model:documentation></model:documentation>
</model:sequenceFlow>
</model:process>
<model:process id="Parallel_Approvals_SP" name="Parallel Approvals SP">
<model:documentation></model:documentation>
<model:laneSet id="Parallel_Approvals_SP.Parallel Approvals SP_laneSet">
<model:lane id="Parallel_Approvals_SP.Supervisor" name="Supervisor">
<model:documentation></model:documentation>
<model:flowNodeRef>Start3</model:flowNodeRef>
<model:flowNodeRef>Supervisor_Approval</model:flowNodeRef>
<model:flowNodeRef>End2</model:flowNodeRef>
</model:lane>
<model:lane id="Parallel_Approvals_SP.Manager" name="Manager">
<model:documentation></model:documentation>
<model:flowNodeRef>Manager_Approval</model:flowNodeRef>
</model:lane>
<model:lane id="Parallel_Approvals_SP.Operator" name="Operator">
<model:documentation></model:documentation>
<model:flowNodeRef>Step1</model:flowNodeRef>
</model:lane>
</model:laneSet>
<model:startEvent id="Parallel_Approvals_SP.Start3" name="Start3">
<model:documentation></model:documentation>
</model:startEvent>
<model:manualTask id="Parallel_Approvals_SP.Supervisor_Approval" name="Supervisor Approval">
<model:documentation></model:documentation>
</model:manualTask>
<model:endEvent id="Parallel_Approvals_SP.End2" name="End2">
<model:documentation></model:documentation>
</model:endEvent>
<model:manualTask id="Parallel_Approvals_SP.Manager_Approval" name="Manager Approval">
<model:documentation></model:documentation>
</model:manualTask>
<model:manualTask id="Parallel_Approvals_SP.Step1" name="Operator Approval">
<model:documentation></model:documentation>
</model:manualTask>
<model:sequenceFlow id="Approve8" name="Approve" sourceRef="Parallel_Approvals_SP.Supervisor_Approval" targetRef="Parallel_Approvals_SP.End2">
<model:documentation></model:documentation>
</model:sequenceFlow>
<model:sequenceFlow id="Approve9" name="Approve" sourceRef="Parallel_Approvals_SP.Manager_Approval" targetRef="Parallel_Approvals_SP.End2">
<model:documentation></model:documentation>
</model:sequenceFlow>
<model:sequenceFlow id="_InMVgO6ZEeG6ILSEFG-uBA" sourceRef="Parallel_Approvals_SP.Start3" targetRef="Parallel_Approvals_SP.Step1">
<model:documentation></model:documentation>
</model:sequenceFlow>
<model:sequenceFlow id="_JEeucO6ZEeG6ILSEFG-uBA" sourceRef="Parallel_Approvals_SP.Start3" targetRef="Parallel_Approvals_SP.Manager_Approval">
<model:documentation></model:documentation>
</model:sequenceFlow>
<model:sequenceFlow id="Approve10" name="Approve" sourceRef="Parallel_Approvals_SP.Step1" targetRef="Parallel_Approvals_SP.Supervisor_Approval">
<model:documentation></model:documentation>
</model:sequenceFlow>
</model:process>
<di:BPMNDiagram name="Approvals">
<di:BPMNPlane id="plane_Approvals" bpmnElement="Approvals">
<di:BPMNShape id="_Ib2u0O4CEeG6ILSEFG-uBA" bpmnElement="Approvals" isHorizontal="true">
<dc:Bounds height="724.0" width="1352.0" x="30.0" y="30.0"/>
</di:BPMNShape>
<di:BPMNShape id="_H6ddQO6XEeG6ILSEFG-uBA" bpmnElement="Test" isHorizontal="true">
<dc:Bounds height="329.0" width="1330.0" x="52.0" y="30.0"/>
</di:BPMNShape>
<di:BPMNShape id="_IcCVAO4CEeG6ILSEFG-uBA" bpmnElement="Start1">
<dc:Bounds height="34.0" width="30.0" x="92.0" y="95.0"/>
</di:BPMNShape>
<di:BPMNShape id="_R6kE8O4CEeG6ILSEFG-uBA" bpmnElement="First_Approval_Wins">
<dc:Bounds height="74.0" width="148.0" x="206.0" y="95.0"/>
</di:BPMNShape>
<di:BPMNShape id="_FRlL8O6WEeG6ILSEFG-uBA" bpmnElement="End1">
<dc:Bounds height="34.0" width="30.0" x="1045.0" y="170.0"/>
</di:BPMNShape>
<di:BPMNShape id="_8wLWIO6WEeG6ILSEFG-uBA" bpmnElement="First_Approval_Wins_Done">
<dc:Bounds height="84.0" width="168.0" x="192.0" y="190.0"/>
</di:BPMNShape>
<di:BPMNShape id="_oV8bsO6YEeG6ILSEFG-uBA" bpmnElement="Parallel_Approvals_Done">
<dc:Bounds height="74.0" width="148.0" x="522.0" y="190.0"/>
</di:BPMNShape>
<di:BPMNShape id="_Q-TKYO6ZEeG6ILSEFG-uBA" bpmnElement="Parallel_SP">
<dc:Bounds height="50.0" width="100.0" x="735.0" y="107.0"/>
</di:BPMNShape>
<di:BPMNShape id="_4T7s8O6ZEeG6ILSEFG-uBA" bpmnElement="Parallel_SP_Done">
<dc:Bounds height="74.0" width="148.0" x="865.0" y="117.0"/>
</di:BPMNShape>
<di:BPMNShape id="_rvrNEO6XEeG6ILSEFG-uBA" bpmnElement="Supervisor" isHorizontal="true">
<dc:Bounds height="250.0" width="1330.0" x="52.0" y="359.0"/>
</di:BPMNShape>
<di:BPMNShape id="_8zU7UO6XEeG6ILSEFG-uBA" bpmnElement="Supervisor_Approval__P_">
<dc:Bounds height="83.0" width="166.0" x="403.0" y="459.0"/>
</di:BPMNShape>
<di:BPMNShape id="_aVYD8O6YEeG6ILSEFG-uBA" bpmnElement="Gateway4">
<dc:Bounds height="43.0" width="43.0" x="211.0" y="408.0"/>
</di:BPMNShape>
<di:BPMNShape id="_CesQwO6aEeG6ILSEFG-uBA" bpmnElement="Gateway5">
<dc:Bounds height="43.0" width="43.0" x="613.0" y="479.0"/>
</di:BPMNShape>
<di:BPMNShape id="_vgLDMO6XEeG6ILSEFG-uBA" bpmnElement="Manager" isHorizontal="true">
<dc:Bounds height="145.0" width="1330.0" x="52.0" y="609.0"/>
</di:BPMNShape>
<di:BPMNShape id="_JXN5sO6YEeG6ILSEFG-uBA" bpmnElement="Manager_Approval__P_">
<dc:Bounds height="60.0" width="120.0" x="419.0" y="639.0"/>
</di:BPMNShape>
<di:BPMNEdge id="_IcWeEO4CEeG6ILSEFG-uBA" bpmnElement="_IcV3AO4CEeG6ILSEFG-uBA">
<di_1:waypoint x="122.0" y="122.0"/>
<di_1:waypoint x="206.0" y="122.0"/>
</di:BPMNEdge>
<di:BPMNEdge id="_vVDXkO4DEeG6ILSEFG-uBA" bpmnElement="_vVCwgO4DEeG6ILSEFG-uBA">
<di_1:waypoint x="311.0" y="169.0"/>
<di_1:waypoint x="311.0" y="190.0"/>
</di:BPMNEdge>
<di:BPMNEdge id="_DYxlUO6YEeG6ILSEFG-uBA" bpmnElement="On_to_Parallel_Approvals">
<di_1:waypoint x="240.0" y="274.0"/>
<di_1:waypoint x="240.0" y="415.0"/>
</di:BPMNEdge>
<di:BPMNEdge id="_dcfl4O6YEeG6ILSEFG-uBA" bpmnElement="_dceXwO6YEeG6ILSEFG-uBA">
<di_1:waypoint x="236.0" y="447.0"/>
<di_1:waypoint x="236.0" y="668.0"/>
<di_1:waypoint x="419.0" y="668.0"/>
</di:BPMNEdge>
<di:BPMNEdge id="_d_I_8O6YEeG6ILSEFG-uBA" bpmnElement="_d_Hx0O6YEeG6ILSEFG-uBA">
<di_1:waypoint x="248.0" y="434.0"/>
<di_1:waypoint x="325.0" y="434.0"/>
<di_1:waypoint x="325.0" y="480.0"/>
<di_1:waypoint x="403.0" y="480.0"/>
</di:BPMNEdge>
<di:BPMNEdge id="_vsd9UO6YEeG6ILSEFG-uBA" bpmnElement="Approve">
<di_1:waypoint x="569.0" y="487.0"/>
<di_1:waypoint x="592.0" y="487.0"/>
<di_1:waypoint x="592.0" y="496.0"/>
<di_1:waypoint x="616.0" y="496.0"/>
</di:BPMNEdge>
<di:BPMNEdge id="_yTd0wO6YEeG6ILSEFG-uBA" bpmnElement="On_To_Parallel_SP">
<di_1:waypoint x="670.0" y="194.0"/>
<di_1:waypoint x="720.0" y="194.0"/>
<di_1:waypoint x="720.0" y="173.0"/>
<di_1:waypoint x="745.0" y="173.0"/>
<di_1:waypoint x="745.0" y="157.0"/>
</di:BPMNEdge>
<di:BPMNEdge id="_34HwIO6YEeG6ILSEFG-uBA" bpmnElement="Approve">
<di_1:waypoint x="539.0" y="668.0"/>
<di_1:waypoint x="626.0" y="668.0"/>
<di_1:waypoint x="626.0" y="514.0"/>
</di:BPMNEdge>
<di:BPMNEdge id="_UUS10O6ZEeG6ILSEFG-uBA" bpmnElement="OK">
<di_1:waypoint x="1013.0" y="180.0"/>
<di_1:waypoint x="1045.0" y="180.0"/>
</di:BPMNEdge>
<di:BPMNEdge id="_76XBEO6ZEeG6ILSEFG-uBA" bpmnElement="_76Vy8O6ZEeG6ILSEFG-uBA">
<di_1:waypoint x="835.0" y="135.0"/>
<di_1:waypoint x="850.0" y="135.0"/>
<di_1:waypoint x="850.0" y="137.0"/>
<di_1:waypoint x="865.0" y="137.0"/>
</di:BPMNEdge>
<di:BPMNEdge id="_E8B14O6aEeG6ILSEFG-uBA" bpmnElement="_E8AnwO6aEeG6ILSEFG-uBA">
<di_1:waypoint x="628.0" y="485.0"/>
<di_1:waypoint x="628.0" y="264.0"/>
</di:BPMNEdge>
<di:BPMNShape id="_R6hBoO4CEeG6ILSEFG-uBA" bpmnElement="First_Approval_Wins" isHorizontal="true">
<dc:Bounds height="500.0" width="1352.0" x="30.0" y="774.0"/>
</di:BPMNShape>
<di:BPMNShape id="_sDQsIO4CEeG6ILSEFG-uBA" bpmnElement="Supervisor" isHorizontal="true">
<dc:Bounds height="250.0" width="1330.0" x="52.0" y="774.0"/>
</di:BPMNShape>
<di:BPMNShape id="_R6vrIe4CEeG6ILSEFG-uBA" bpmnElement="Supervisor_Approval">
<dc:Bounds height="50.0" width="100.0" x="320.0" y="858.0"/>
</di:BPMNShape>
<di:BPMNShape id="_VgS1gO4CEeG6ILSEFG-uBA" bpmnElement="Start2">
<dc:Bounds height="34.0" width="30.0" x="134.0" y="843.0"/>
</di:BPMNShape>
<di:BPMNShape id="_jja8kO4DEeG6ILSEFG-uBA" bpmnElement="Supervisor_Approved">
<dc:Bounds height="34.0" width="30.0" x="538.0" y="876.0"/>
</di:BPMNShape>
<di:BPMNShape id="_ttNsgO4CEeG6ILSEFG-uBA" bpmnElement="Manager" isHorizontal="true">
<dc:Bounds height="250.0" width="1330.0" x="52.0" y="1024.0"/>
</di:BPMNShape>
<di:BPMNShape id="_jf_DgO4CEeG6ILSEFG-uBA" bpmnElement="Manager_Approval">
<dc:Bounds height="50.0" width="100.0" x="304.0" y="1124.0"/>
</di:BPMNShape>
<di:BPMNShape id="_oUPnQO4DEeG6ILSEFG-uBA" bpmnElement="Manager_Approved">
<dc:Bounds height="34.0" width="30.0" x="522.0" y="1134.0"/>
</di:BPMNShape>
<di:BPMNEdge id="_mAyW4O4DEeG6ILSEFG-uBA" bpmnElement="Approve">
<di_1:waypoint x="420.0" y="886.0"/>
<di_1:waypoint x="479.0" y="886.0"/>
<di_1:waypoint x="479.0" y="892.0"/>
<di_1:waypoint x="538.0" y="892.0"/>
</di:BPMNEdge>
<di:BPMNEdge id="_qIrZUO4DEeG6ILSEFG-uBA" bpmnElement="Approve">
<di_1:waypoint x="404.0" y="1153.0"/>
<di_1:waypoint x="463.0" y="1153.0"/>
<di_1:waypoint x="463.0" y="1147.0"/>
<di_1:waypoint x="522.0" y="1147.0"/>
</di:BPMNEdge>
<di:BPMNEdge id="_CtMuku7hEeG6ILSEFG-uBA" bpmnElement="_CtMukO7hEeG6ILSEFG-uBA">
<di_1:waypoint x="164.0" y="872.0"/>
<di_1:waypoint x="242.0" y="872.0"/>
<di_1:waypoint x="242.0" y="880.0"/>
<di_1:waypoint x="320.0" y="880.0"/>
</di:BPMNEdge>
<di:BPMNEdge id="_DBxQYO7hEeG6ILSEFG-uBA" bpmnElement="_DBwCQO7hEeG6ILSEFG-uBA">
<di_1:waypoint x="149.0" y="877.0"/>
<di_1:waypoint x="149.0" y="1149.0"/>
<di_1:waypoint x="304.0" y="1149.0"/>
</di:BPMNEdge>
<di:BPMNShape id="_Zk-u8O4uEeG6ILSEFG-uBA" bpmnElement="Parallel_Approvals_SP" isHorizontal="true">
<dc:Bounds height="630.0" width="1352.0" x="30.0" y="1294.0"/>
</di:BPMNShape>
<di:BPMNShape id="_f_FroO4uEeG6ILSEFG-uBA" bpmnElement="Supervisor" isHorizontal="true">
<dc:Bounds height="280.0" width="1330.0" x="52.0" y="1394.0"/>
</di:BPMNShape>
<di:BPMNShape id="_uEKI4O4uEeG6ILSEFG-uBA" bpmnElement="Start3">
<dc:Bounds height="34.0" width="30.0" x="134.0" y="1530.0"/>
</di:BPMNShape>
<di:BPMNShape id="_vTJEgO4uEeG6ILSEFG-uBA" bpmnElement="Supervisor_Approval">
<dc:Bounds height="50.0" width="100.0" x="493.0" y="1522.0"/>
</di:BPMNShape>
<di:BPMNShape id="_K4QgkO6WEeG6ILSEFG-uBA" bpmnElement="End2">
<dc:Bounds height="34.0" width="30.0" x="799.0" y="1530.0"/>
</di:BPMNShape>
<di:BPMNShape id="_j4eYAO4uEeG6ILSEFG-uBA" bpmnElement="Manager" isHorizontal="true">
<dc:Bounds height="250.0" width="1330.0" x="52.0" y="1674.0"/>
</di:BPMNShape>
<di:BPMNShape id="_y4gBoO4uEeG6ILSEFG-uBA" bpmnElement="Manager_Approval">
<dc:Bounds height="50.0" width="100.0" x="364.0" y="1795.0"/>
</di:BPMNShape>
<di:BPMNShape id="_RkTswO7hEeG6ILSEFG-uBA" bpmnElement="Operator" isHorizontal="true">
<dc:Bounds height="100.0" width="1330.0" x="52.0" y="1294.0"/>
</di:BPMNShape>
<di:BPMNShape id="_VVzBYO7hEeG6ILSEFG-uBA" bpmnElement="Step1">
<dc:Bounds height="50.0" width="100.0" x="364.0" y="1324.0"/>
</di:BPMNShape>
<di:BPMNEdge id="_-dnqoO4uEeG6ILSEFG-uBA" bpmnElement="Approve">
<di_1:waypoint x="593.0" y="1554.0"/>
<di_1:waypoint x="799.0" y="1554.0"/>
</di:BPMNEdge>
<di:BPMNEdge id="__RQHAO4uEeG6ILSEFG-uBA" bpmnElement="Approve">
<di_1:waypoint x="464.0" y="1825.0"/>
<di_1:waypoint x="631.0" y="1825.0"/>
<di_1:waypoint x="631.0" y="1558.0"/>
<di_1:waypoint x="799.0" y="1558.0"/>
</di:BPMNEdge>
<di:BPMNEdge id="_InOKsO6ZEeG6ILSEFG-uBA" bpmnElement="_InMVgO6ZEeG6ILSEFG-uBA">
<di_1:waypoint x="164.0" y="1558.0"/>
<di_1:waypoint x="264.0" y="1558.0"/>
<di_1:waypoint x="264.0" y="1365.0"/>
<di_1:waypoint x="364.0" y="1365.0"/>
</di:BPMNEdge>
<di:BPMNEdge id="_JEgjoO6ZEeG6ILSEFG-uBA" bpmnElement="_JEeucO6ZEeG6ILSEFG-uBA">
<di_1:waypoint x="149.0" y="1564.0"/>
<di_1:waypoint x="149.0" y="1634.0"/>
<di_1:waypoint x="307.0" y="1634.0"/>
<di_1:waypoint x="307.0" y="1812.0"/>
<di_1:waypoint x="364.0" y="1812.0"/>
</di:BPMNEdge>
<di:BPMNEdge id="_W9jpYO7hEeG6ILSEFG-uBA" bpmnElement="Approve">
<di_1:waypoint x="464.0" y="1356.0"/>
<di_1:waypoint x="532.0" y="1356.0"/>
<di_1:waypoint x="532.0" y="1522.0"/>
</di:BPMNEdge>
</di:BPMNPlane>
</di:BPMNDiagram>
</model:definitions>

View File

@ -20,10 +20,10 @@
<bpmn:correlationProperty id="lover_name" name="Lover&#39;s Name"> <bpmn:correlationProperty id="lover_name" name="Lover&#39;s Name">
<bpmn:correlationPropertyRetrievalExpression messageRef="love_letter"> <bpmn:correlationPropertyRetrievalExpression messageRef="love_letter">
<bpmn:formalExpression>lover_name</bpmn:formalExpression> <bpmn:messagePath>lover_name</bpmn:messagePath>
</bpmn:correlationPropertyRetrievalExpression> </bpmn:correlationPropertyRetrievalExpression>
<bpmn:correlationPropertyRetrievalExpression messageRef="love_letter_response"> <bpmn:correlationPropertyRetrievalExpression messageRef="love_letter_response">
<bpmn:formalExpression>from_name</bpmn:formalExpression> <bpmn:messagePath>from_name</bpmn:messagePath>
</bpmn:correlationPropertyRetrievalExpression> </bpmn:correlationPropertyRetrievalExpression>
</bpmn:correlationProperty> </bpmn:correlationProperty>

View File

@ -9,10 +9,10 @@
</bpmn:collaboration> </bpmn:collaboration>
<bpmn:correlationProperty id="process_id" name="Test Correlation"> <bpmn:correlationProperty id="process_id" name="Test Correlation">
<bpmn:correlationPropertyRetrievalExpression messageRef="Message_19nm5f5"> <bpmn:correlationPropertyRetrievalExpression messageRef="Message_19nm5f5">
<bpmn:formalExpression>task_num</bpmn:formalExpression> <bpmn:messagePath>task_num</bpmn:messagePath>
</bpmn:correlationPropertyRetrievalExpression> </bpmn:correlationPropertyRetrievalExpression>
<bpmn:correlationPropertyRetrievalExpression messageRef="Message_0fc1gu7"> <bpmn:correlationPropertyRetrievalExpression messageRef="Message_0fc1gu7">
<bpmn:formalExpression>init_id</bpmn:formalExpression> <bpmn:messagePath>init_id</bpmn:messagePath>
</bpmn:correlationPropertyRetrievalExpression> </bpmn:correlationPropertyRetrievalExpression>
</bpmn:correlationProperty> </bpmn:correlationProperty>
<bpmn:process id="proc_1" name="Process 1" isExecutable="true"> <bpmn:process id="proc_1" name="Process 1" isExecutable="true">

View File

@ -13,18 +13,18 @@
</bpmn:collaboration> </bpmn:collaboration>
<bpmn:correlationProperty id="process_id" name="Test Correlation"> <bpmn:correlationProperty id="process_id" name="Test Correlation">
<bpmn:correlationPropertyRetrievalExpression messageRef="Message_19nm5f5"> <bpmn:correlationPropertyRetrievalExpression messageRef="Message_19nm5f5">
<bpmn:formalExpression>task_num</bpmn:formalExpression> <bpmn:messagePath>task_num</bpmn:messagePath>
</bpmn:correlationPropertyRetrievalExpression> </bpmn:correlationPropertyRetrievalExpression>
<bpmn:correlationPropertyRetrievalExpression messageRef="Message_0fc1gu7"> <bpmn:correlationPropertyRetrievalExpression messageRef="Message_0fc1gu7">
<bpmn:formalExpression>init_id</bpmn:formalExpression> <bpmn:messagePath>init_id</bpmn:messagePath>
</bpmn:correlationPropertyRetrievalExpression> </bpmn:correlationPropertyRetrievalExpression>
</bpmn:correlationProperty> </bpmn:correlationProperty>
<bpmn:correlationProperty id="task_id" name="Test Correlation"> <bpmn:correlationProperty id="task_id" name="Test Correlation">
<bpmn:correlationPropertyRetrievalExpression messageRef="Message_0hr1xdn"> <bpmn:correlationPropertyRetrievalExpression messageRef="Message_0hr1xdn">
<bpmn:formalExpression>task_num</bpmn:formalExpression> <bpmn:messagePath>task_num</bpmn:messagePath>
</bpmn:correlationPropertyRetrievalExpression> </bpmn:correlationPropertyRetrievalExpression>
<bpmn:correlationPropertyRetrievalExpression messageRef="Message_0z3cr5h"> <bpmn:correlationPropertyRetrievalExpression messageRef="Message_0z3cr5h">
<bpmn:formalExpression>subprocess</bpmn:formalExpression> <bpmn:messagePath>subprocess</bpmn:messagePath>
</bpmn:correlationPropertyRetrievalExpression> </bpmn:correlationPropertyRetrievalExpression>
</bpmn:correlationProperty> </bpmn:correlationProperty>
<bpmn:process id="proc_1" name="Process 1" isExecutable="true"> <bpmn:process id="proc_1" name="Process 1" isExecutable="true">

View File

@ -1,7 +1,6 @@
<?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:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_19o7vxg" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.11.1" modeler:executionPlatform="Camunda Platform" modeler:executionPlatformVersion="7.17.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:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_19o7vxg" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.11.1" modeler:executionPlatform="Camunda Platform" modeler:executionPlatformVersion="7.17.0">
<bpmn:process id="Process" isExecutable="true"> <bpmn:process id="Process" isExecutable="true">
<bpmn:ioSpecification />
<bpmn:dataObject id="obj_1" /> <bpmn:dataObject id="obj_1" />
<bpmn:startEvent id="Event_0kmwi7u"> <bpmn:startEvent id="Event_0kmwi7u">
<bpmn:outgoing>Flow_18858hr</bpmn:outgoing> <bpmn:outgoing>Flow_18858hr</bpmn:outgoing>

View File

@ -9,6 +9,18 @@
<dataInput id="in_2" name="input 2" /> <dataInput id="in_2" name="input 2" />
<dataOutput id="out_1" name="output 1" /> <dataOutput id="out_1" name="output 1" />
<dataOutput id="out_2" name="output 2" /> <dataOutput id="out_2" name="output 2" />
<!-- creating input sets and output sets is way to define these
as a required set of inputs or outputs that must all
appear together -->
<inputSet name="Inputs" id="INS_1">
<dataInputRefs>id_1</dataInputRefs>
<dataInputRefs>id_2</dataInputRefs>
</inputSet>
<outputSet name="Outputs" id="OUTS_1">
<dataOutputRefs>out_1</dataOutputRefs>
<dataOutputRefs>out_2</dataOutputRefs>
</outputSet>
<outputSet name="Outputs" id="ID_8"/>
</ioSpecification> </ioSpecification>
<startEvent id="Event_1rtivo5"> <startEvent id="Event_1rtivo5">
<outgoing>Flow_0n038fc</outgoing> <outgoing>Flow_0n038fc</outgoing>

View File

@ -11,8 +11,8 @@ __author__ = 'matth'
class ActionManagementTest(BpmnWorkflowTestCase): class ActionManagementTest(BpmnWorkflowTestCase):
START_TIME_DELTA=0.01 START_TIME_DELTA=0.05
FINISH_TIME_DELTA=0.02 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)

View File

@ -41,7 +41,7 @@ def track_workflow(wf_spec, completed_set):
class CallActivityEscalationTest(BpmnWorkflowTestCase): class CallActivityEscalationTest(BpmnWorkflowTestCase):
def setUp(self): def setUp(self):
self.spec, subprocesses = self.load_workflow_spec('Test-Workflows/*.bpmn20.xml', 'CallActivity-Escalation-Test') self.spec, subprocesses = self.load_workflow_spec('Test-Workflows/*.bpmn20.xml', 'CallActivity-Escalation-Test', False)
self.workflow = BpmnWorkflow(self.spec, subprocesses) self.workflow = BpmnWorkflow(self.spec, subprocesses)
def testShouldEscalate(self): def testShouldEscalate(self):

View File

@ -13,7 +13,7 @@ __author__ = 'matth'
class MessageInterruptsSpTest(BpmnWorkflowTestCase): class MessageInterruptsSpTest(BpmnWorkflowTestCase):
def setUp(self): def setUp(self):
self.spec, self.subprocesses = self.load_workflow_spec('Test-Workflows/*.bpmn20.xml', 'Message Interrupts SP') self.spec, self.subprocesses = self.load_workflow_spec('Test-Workflows/*.bpmn20.xml', 'Message Interrupts SP', False)
def testRunThroughHappySaveAndRestore(self): def testRunThroughHappySaveAndRestore(self):

View File

@ -13,7 +13,7 @@ __author__ = 'matth'
class MessageInterruptsTest(BpmnWorkflowTestCase): class MessageInterruptsTest(BpmnWorkflowTestCase):
def setUp(self): def setUp(self):
self.spec, self.subprocesses = self.load_workflow_spec('Test-Workflows/*.bpmn20.xml', 'Test Workflows') self.spec, self.subprocesses = self.load_workflow_spec('Test-Workflows/*.bpmn20.xml', 'Test Workflows', False)
def testRunThroughHappySaveAndRestore(self): def testRunThroughHappySaveAndRestore(self):

View File

@ -13,7 +13,7 @@ __author__ = 'matth'
class MessageNonInterruptTest(BpmnWorkflowTestCase): class MessageNonInterruptTest(BpmnWorkflowTestCase):
def setUp(self): def setUp(self):
self.spec, self.subprocesses = self.load_workflow_spec('Test-Workflows/*.bpmn20.xml', 'Test Workflows') self.spec, self.subprocesses = self.load_workflow_spec('Test-Workflows/*.bpmn20.xml', 'Test Workflows', False)
def testRunThroughHappySaveAndRestore(self): def testRunThroughHappySaveAndRestore(self):

View File

@ -13,7 +13,7 @@ __author__ = 'matth'
class MessageNonInterruptsSpTest(BpmnWorkflowTestCase): class MessageNonInterruptsSpTest(BpmnWorkflowTestCase):
def setUp(self): def setUp(self):
self.spec, self.subprocesses = self.load_workflow_spec('Test-Workflows/*.bpmn20.xml', 'Message Non Interrupt SP') self.spec, self.subprocesses = self.load_workflow_spec('Test-Workflows/*.bpmn20.xml', 'Message Non Interrupt SP', False)
def testRunThroughHappySaveAndRestore(self): def testRunThroughHappySaveAndRestore(self):

View File

@ -13,7 +13,7 @@ __author__ = 'matth'
class MessagesTest(BpmnWorkflowTestCase): class MessagesTest(BpmnWorkflowTestCase):
def setUp(self): def setUp(self):
self.spec, self.subprocesses = self.load_workflow_spec('Test-Workflows/*.bpmn20.xml', 'Test Workflows') self.spec, self.subprocesses = self.load_workflow_spec('Test-Workflows/*.bpmn20.xml', 'Test Workflows', False)
def testRunThroughHappy(self): def testRunThroughHappy(self):

View File

@ -1,8 +1,7 @@
from SpiffWorkflow.bpmn.parser.util import full_tag from SpiffWorkflow.bpmn.parser.util import full_tag
from SpiffWorkflow.camunda.specs.UserTask import UserTask from SpiffWorkflow.camunda.specs.UserTask import UserTask
from SpiffWorkflow.camunda.parser.CamundaParser import CamundaParser from SpiffWorkflow.camunda.parser.CamundaParser import CamundaParser
from SpiffWorkflow.camunda.parser.UserTaskParser import UserTaskParser from SpiffWorkflow.camunda.parser.task_spec import UserTaskParser, BusinessRuleTaskParser
from SpiffWorkflow.camunda.parser.business_rule_task import BusinessRuleTaskParser
from SpiffWorkflow.dmn.specs.BusinessRuleTask import BusinessRuleTask from SpiffWorkflow.dmn.specs.BusinessRuleTask import BusinessRuleTask
from .BaseTestCase import BaseTestCase from .BaseTestCase import BaseTestCase

View File

@ -1,6 +1,6 @@
import unittest import unittest
from SpiffWorkflow.camunda.parser.UserTaskParser import UserTaskParser from SpiffWorkflow.camunda.parser.task_spec import UserTaskParser
from tests.SpiffWorkflow.camunda.BaseTestCase import BaseTestCase from tests.SpiffWorkflow.camunda.BaseTestCase import BaseTestCase

View File

@ -1,28 +0,0 @@
import unittest
from SpiffWorkflow.camunda.parser.UserTaskParser import UserTaskParser
from SpiffWorkflow.camunda.specs.UserTask import UserTask
from SpiffWorkflow.camunda.parser.CamundaParser import CamundaParser
class CamundaParserTest(unittest.TestCase):
CORRELATE = CamundaParser
def setUp(self):
self.parser = CamundaParser()
def test_overrides(self):
expected_key = "{http://www.omg.org/spec/BPMN/20100524/MODEL}userTask"
self.assertIn(expected_key,
self.parser.OVERRIDE_PARSER_CLASSES)
self.assertEqual((UserTaskParser, UserTask),
self.parser.OVERRIDE_PARSER_CLASSES.get(expected_key))
def suite():
return unittest.TestLoader().loadTestsFromTestCase(CamundaParserTest)
if __name__ == '__main__':
unittest.TextTestRunner(verbosity=2).run(suite())

View File

@ -4,7 +4,7 @@ from lxml import etree
from SpiffWorkflow.bpmn.PythonScriptEngine import Box from SpiffWorkflow.bpmn.PythonScriptEngine import Box
from SpiffWorkflow.dmn.engine.DMNEngine import DMNEngine from SpiffWorkflow.dmn.engine.DMNEngine import DMNEngine
from SpiffWorkflow.dmn.parser.DMNParser import DMNParser from SpiffWorkflow.dmn.parser.DMNParser import DMNParser, get_dmn_ns
class Workflow: class Workflow:
@ -33,7 +33,7 @@ class DecisionRunner:
with open(fn) as fh: with open(fn) as fh:
node = etree.parse(fh) node = etree.parse(fh)
self.dmnParser = DMNParser(None, node.getroot()) self.dmnParser = DMNParser(None, node.getroot(), get_dmn_ns(node.getroot()))
self.dmnParser.parse() self.dmnParser.parse()
decision = self.dmnParser.decision decision = self.dmnParser.decision

View File

@ -12,7 +12,7 @@ class DmnVersionTest(BpmnWorkflowTestCase):
def testLoad(self): def testLoad(self):
dmn = os.path.join(os.path.dirname(__file__), 'data', dmn = os.path.join(os.path.dirname(__file__), 'data',
'dmn_version_20191111_test.dmn') 'dmn_version_20151101_test.dmn')
self.assertIsNone(self.parser.add_dmn_file(dmn)) self.assertIsNone(self.parser.add_dmn_file(dmn))

View File

@ -1,7 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import os import os
from SpiffWorkflow.spiff.parser import SpiffBpmnParser from SpiffWorkflow.spiff.parser import SpiffBpmnParser, VALIDATOR
from SpiffWorkflow.spiff.serializer import NoneTaskConverter, \ from SpiffWorkflow.spiff.serializer import NoneTaskConverter, \
ManualTaskConverter, UserTaskConverter, ScriptTaskConverter, \ ManualTaskConverter, UserTaskConverter, ScriptTaskConverter, \
SubWorkflowTaskConverter, TransactionSubprocessConverter, \ SubWorkflowTaskConverter, TransactionSubprocessConverter, \
@ -28,9 +28,9 @@ class BaseTestCase(BpmnWorkflowTestCase):
serializer = BpmnWorkflowSerializer(wf_spec_converter) serializer = BpmnWorkflowSerializer(wf_spec_converter)
def load_workflow_spec(self, filename, process_name, dmn_filename=None): def load_workflow_spec(self, filename, process_name, dmn_filename=None, validate=True):
bpmn = os.path.join(os.path.dirname(__file__), 'data', filename) bpmn = os.path.join(os.path.dirname(__file__), 'data', filename)
parser = SpiffBpmnParser() parser = SpiffBpmnParser(validator=VALIDATOR if validate else None)
parser.add_bpmn_files_by_glob(bpmn) parser.add_bpmn_files_by_glob(bpmn)
if dmn_filename is not None: if dmn_filename is not None:
dmn = os.path.join(os.path.dirname(__file__), 'data', 'dmn', dmn_filename) dmn = os.path.join(os.path.dirname(__file__), 'data', 'dmn', dmn_filename)

View File

@ -5,53 +5,51 @@
<bpmn:outgoing>Flow_0lrg65h</bpmn:outgoing> <bpmn:outgoing>Flow_0lrg65h</bpmn:outgoing>
</bpmn:startEvent> </bpmn:startEvent>
<bpmn:sequenceFlow id="Flow_0lrg65h" sourceRef="StartEvent_1" targetRef="Activity_10k4dgb" /> <bpmn:sequenceFlow id="Flow_0lrg65h" sourceRef="StartEvent_1" targetRef="Activity_10k4dgb" />
<bpmn:endEvent id="Event_184erzz">
<bpmn:incoming>Flow_0l8nhib</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="Flow_0l8nhib" sourceRef="Activity_0ux7vpx" targetRef="Event_184erzz" />
<bpmn:businessRuleTask id="Activity_0ux7vpx" name="Business Rules" scriptFormat="python" script="question = &#34;X&#34;">
<bpmn:extensionElements>
<spiffworkflow:calledDecisionId>decision_1</spiffworkflow:calledDecisionId>
<spiffworkflow:preScript />
<spiffworkflow:postScript />
</bpmn:extensionElements>
<bpmn:incoming>Flow_1109ldv</bpmn:incoming>
<bpmn:outgoing>Flow_0l8nhib</bpmn:outgoing>
</bpmn:businessRuleTask>
<bpmn:sequenceFlow id="Flow_1109ldv" sourceRef="Activity_10k4dgb" targetRef="Activity_0ux7vpx" />
<bpmn:scriptTask id="Activity_10k4dgb" name="Set BR Variable"> <bpmn:scriptTask id="Activity_10k4dgb" name="Set BR Variable">
<bpmn:incoming>Flow_0lrg65h</bpmn:incoming> <bpmn:incoming>Flow_0lrg65h</bpmn:incoming>
<bpmn:outgoing>Flow_1109ldv</bpmn:outgoing> <bpmn:outgoing>Flow_0m1tt51</bpmn:outgoing>
<bpmn:script>question = "X"</bpmn:script> <bpmn:script>question = "X"</bpmn:script>
</bpmn:scriptTask> </bpmn:scriptTask>
<bpmn:sequenceFlow id="Flow_0m1tt51" sourceRef="Activity_10k4dgb" targetRef="Activity_0diq2z1" />
<bpmn:businessRuleTask id="Activity_0diq2z1" name="Business Rules">
<bpmn:extensionElements>
<spiffworkflow:calledDecisionId>decision_1</spiffworkflow:calledDecisionId>
</bpmn:extensionElements>
<bpmn:incoming>Flow_0m1tt51</bpmn:incoming>
<bpmn:outgoing>Flow_19vr2vt</bpmn:outgoing>
</bpmn:businessRuleTask>
<bpmn:endEvent id="Event_0cqyhox">
<bpmn:incoming>Flow_19vr2vt</bpmn:incoming>
</bpmn:endEvent>
<bpmn:sequenceFlow id="Flow_19vr2vt" sourceRef="Activity_0diq2z1" targetRef="Event_0cqyhox" />
</bpmn:process> </bpmn:process>
<bpmndi:BPMNDiagram id="BPMNDiagram_1"> <bpmndi:BPMNDiagram id="BPMNDiagram_1">
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_bd2e724"> <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_bd2e724">
<bpmndi:BPMNEdge id="Flow_1109ldv_di" bpmnElement="Flow_1109ldv">
<di:waypoint x="370" y="177" />
<di:waypoint x="430" y="177" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0l8nhib_di" bpmnElement="Flow_0l8nhib">
<di:waypoint x="530" y="177" />
<di:waypoint x="612" y="177" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0lrg65h_di" bpmnElement="Flow_0lrg65h">
<di:waypoint x="215" y="177" />
<di:waypoint x="270" y="177" />
</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="159" width="36" height="36" /> <dc:Bounds x="179" y="159" width="36" height="36" />
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_184erzz_di" bpmnElement="Event_184erzz">
<dc:Bounds x="612" y="159" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_070a8q9_di" bpmnElement="Activity_0ux7vpx">
<dc:Bounds x="430" y="137" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_1emp7lc_di" bpmnElement="Activity_10k4dgb"> <bpmndi:BPMNShape id="Activity_1emp7lc_di" bpmnElement="Activity_10k4dgb">
<dc:Bounds x="270" y="137" width="100" height="80" /> <dc:Bounds x="270" y="137" width="100" height="80" />
</bpmndi:BPMNShape> </bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_08xsh1p_di" bpmnElement="Activity_0diq2z1">
<dc:Bounds x="430" y="137" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Event_0cqyhox_di" bpmnElement="Event_0cqyhox">
<dc:Bounds x="592" y="159" width="36" height="36" />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="Flow_0lrg65h_di" bpmnElement="Flow_0lrg65h">
<di:waypoint x="215" y="177" />
<di:waypoint x="270" y="177" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_0m1tt51_di" bpmnElement="Flow_0m1tt51">
<di:waypoint x="370" y="177" />
<di:waypoint x="430" y="177" />
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge id="Flow_19vr2vt_di" bpmnElement="Flow_19vr2vt">
<di:waypoint x="530" y="177" />
<di:waypoint x="592" y="177" />
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane> </bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram> </bpmndi:BPMNDiagram>
</bpmn:definitions> </bpmn:definitions>

View File

@ -9,10 +9,10 @@
</bpmn:collaboration> </bpmn:collaboration>
<bpmn:correlationProperty id="process_id" name="Test Correlation"> <bpmn:correlationProperty id="process_id" name="Test Correlation">
<bpmn:correlationPropertyRetrievalExpression messageRef="Message_19nm5f5"> <bpmn:correlationPropertyRetrievalExpression messageRef="Message_19nm5f5">
<bpmn:formalExpression>num</bpmn:formalExpression> <bpmn:messagePath>num</bpmn:messagePath>
</bpmn:correlationPropertyRetrievalExpression> </bpmn:correlationPropertyRetrievalExpression>
<bpmn:correlationPropertyRetrievalExpression messageRef="Message_0fc1gu7"> <bpmn:correlationPropertyRetrievalExpression messageRef="Message_0fc1gu7">
<bpmn:formalExpression>init_id</bpmn:formalExpression> <bpmn:messagePath>init_id</bpmn:messagePath>
</bpmn:correlationPropertyRetrievalExpression> </bpmn:correlationPropertyRetrievalExpression>
</bpmn:correlationProperty> </bpmn:correlationProperty>
<bpmn:message id="Message_19nm5f5" name="init_proc_2"> <bpmn:message id="Message_19nm5f5" name="init_proc_2">

View File

@ -1,6 +1,6 @@
<?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:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:spiffworkflow="http://spiffworkflow.org/bpmn/schema/1.0/core" id="Definitions_96f6665" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.0.0-dev"> <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:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:spiffworkflow="http://spiffworkflow.org/bpmn/schema/1.0/core" id="Definitions_96f6665" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.0.0-dev">
<bpmn:collaboration id="Collaboration_0oye1os" messages="[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]"> <bpmn:collaboration id="Collaboration_0oye1os">
<bpmn:participant id="message_initiator" name="Message Initiator" processRef="message_send_process" /> <bpmn:participant id="message_initiator" name="Message Initiator" processRef="message_send_process" />
<bpmn:participant id="message-receiver-one" name="Message Receiver One" /> <bpmn:participant id="message-receiver-one" name="Message Receiver One" />
<bpmn:participant id="message-receiver-two" name="Message Receiver Two" /> <bpmn:participant id="message-receiver-two" name="Message Receiver Two" />
@ -19,18 +19,18 @@
</bpmn:collaboration> </bpmn:collaboration>
<bpmn:correlationProperty id="mcp_topica_one" name="MCP TopicA One"> <bpmn:correlationProperty id="mcp_topica_one" name="MCP TopicA One">
<bpmn:correlationPropertyRetrievalExpression messageRef="message_send_one"> <bpmn:correlationPropertyRetrievalExpression messageRef="message_send_one">
<bpmn:formalExpression>topica_one</bpmn:formalExpression> <bpmn:messagePath>topica_one</bpmn:messagePath>
</bpmn:correlationPropertyRetrievalExpression> </bpmn:correlationPropertyRetrievalExpression>
<bpmn:correlationPropertyRetrievalExpression messageRef="message_response_one"> <bpmn:correlationPropertyRetrievalExpression messageRef="message_response_one">
<bpmn:formalExpression>payload_var_one.topica</bpmn:formalExpression> <bpmn:messagePath>payload_var_one.topica</bpmn:messagePath>
</bpmn:correlationPropertyRetrievalExpression> </bpmn:correlationPropertyRetrievalExpression>
</bpmn:correlationProperty> </bpmn:correlationProperty>
<bpmn:correlationProperty id="mcp_topicb_one" name="MCP TopicB_one"> <bpmn:correlationProperty id="mcp_topicb_one" name="MCP TopicB_one">
<bpmn:correlationPropertyRetrievalExpression messageRef="message_send_one"> <bpmn:correlationPropertyRetrievalExpression messageRef="message_send_one">
<bpmn:formalExpression>topicb_one</bpmn:formalExpression> <bpmn:messagePath>topicb_one</bpmn:messagePath>
</bpmn:correlationPropertyRetrievalExpression> </bpmn:correlationPropertyRetrievalExpression>
<bpmn:correlationPropertyRetrievalExpression messageRef="message_response_one"> <bpmn:correlationPropertyRetrievalExpression messageRef="message_response_one">
<bpmn:formalExpression>payload_var_one.topicb</bpmn:formalExpression> <bpmn:messagePath>payload_var_one.topicb</bpmn:messagePath>
</bpmn:correlationPropertyRetrievalExpression> </bpmn:correlationPropertyRetrievalExpression>
</bpmn:correlationProperty> </bpmn:correlationProperty>
<bpmn:process id="message_send_process" name="Message Send Process" isExecutable="true"> <bpmn:process id="message_send_process" name="Message Send Process" isExecutable="true">
@ -117,18 +117,18 @@ del time</bpmn:script>
</bpmn:message> </bpmn:message>
<bpmn:correlationProperty id="mcp_topica_two" name="MCP Topica Two"> <bpmn:correlationProperty id="mcp_topica_two" name="MCP Topica Two">
<bpmn:correlationPropertyRetrievalExpression messageRef="message_send_two"> <bpmn:correlationPropertyRetrievalExpression messageRef="message_send_two">
<bpmn:formalExpression>topica_two</bpmn:formalExpression> <bpmn:messagePath>topica_two</bpmn:messagePath>
</bpmn:correlationPropertyRetrievalExpression> </bpmn:correlationPropertyRetrievalExpression>
<bpmn:correlationPropertyRetrievalExpression messageRef="message_response_two"> <bpmn:correlationPropertyRetrievalExpression messageRef="message_response_two">
<bpmn:formalExpression>topica_two</bpmn:formalExpression> <bpmn:messagePath>topica_two</bpmn:messagePath>
</bpmn:correlationPropertyRetrievalExpression> </bpmn:correlationPropertyRetrievalExpression>
</bpmn:correlationProperty> </bpmn:correlationProperty>
<bpmn:correlationProperty id="mcp_topicb_two" name="MCP Topicb Two"> <bpmn:correlationProperty id="mcp_topicb_two" name="MCP Topicb Two">
<bpmn:correlationPropertyRetrievalExpression messageRef="message_send_two"> <bpmn:correlationPropertyRetrievalExpression messageRef="message_send_two">
<bpmn:formalExpression>topicb_two</bpmn:formalExpression> <bpmn:messagePath>topicb_two</bpmn:messagePath>
</bpmn:correlationPropertyRetrievalExpression> </bpmn:correlationPropertyRetrievalExpression>
<bpmn:correlationPropertyRetrievalExpression messageRef="message_response_two"> <bpmn:correlationPropertyRetrievalExpression messageRef="message_response_two">
<bpmn:formalExpression>topicb_two</bpmn:formalExpression> <bpmn:messagePath>topicb_two</bpmn:messagePath>
</bpmn:correlationPropertyRetrievalExpression> </bpmn:correlationPropertyRetrievalExpression>
</bpmn:correlationProperty> </bpmn:correlationProperty>
<bpmndi:BPMNDiagram id="BPMNDiagram_1"> <bpmndi:BPMNDiagram id="BPMNDiagram_1">

View File

@ -1,7 +1,6 @@
<?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:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:spiffworkflow="http://spiffworkflow.org/bpmn/schema/1.0/core" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_19o7vxg" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.0.0" modeler:executionPlatform="Camunda Platform" modeler:executionPlatformVersion="7.17.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:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:spiffworkflow="http://spiffworkflow.org/bpmn/schema/1.0/core" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_19o7vxg" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.0.0" modeler:executionPlatform="Camunda Platform" modeler:executionPlatformVersion="7.17.0">
<bpmn:process id="Process_1" isExecutable="true"> <bpmn:process id="Process_1" isExecutable="true">
<bpmn:ioSpecification />
<bpmn:startEvent id="Event_1ftsuzw"> <bpmn:startEvent id="Event_1ftsuzw">
<bpmn:outgoing>Flow_1hjrex4</bpmn:outgoing> <bpmn:outgoing>Flow_1hjrex4</bpmn:outgoing>
</bpmn:startEvent> </bpmn:startEvent>

View File

@ -4,6 +4,12 @@
<bpmn:ioSpecification> <bpmn:ioSpecification>
<bpmn:dataInput id="in_data" name="Input" /> <bpmn:dataInput id="in_data" name="Input" />
<bpmn:dataOutput id="out_data" name="Output" /> <bpmn:dataOutput id="out_data" name="Output" />
<bpmn:inputSet>
<bpmn:dataInputRefs>in_data</bpmn:dataInputRefs>
</bpmn:inputSet>
<bpmn:outputSet>
<bpmn:dataOutputRefs>out_data</bpmn:dataOutputRefs>
</bpmn:outputSet>
</bpmn:ioSpecification> </bpmn:ioSpecification>
<bpmn:startEvent id="Event_1ftsuzw"> <bpmn:startEvent id="Event_1ftsuzw">
<bpmn:outgoing>Flow_1a4nkhi</bpmn:outgoing> <bpmn:outgoing>Flow_1a4nkhi</bpmn:outgoing>

View File

@ -1,7 +1,6 @@
<?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:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:spiffworkflow="http://spiffworkflow.org/bpmn/schema/1.0/core" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_19o7vxg" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.0.0" modeler:executionPlatform="Camunda Platform" modeler:executionPlatformVersion="7.17.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:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:spiffworkflow="http://spiffworkflow.org/bpmn/schema/1.0/core" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_19o7vxg" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.0.0" modeler:executionPlatform="Camunda Platform" modeler:executionPlatformVersion="7.17.0">
<bpmn:process id="Process_1" isExecutable="true"> <bpmn:process id="Process_1" isExecutable="true">
<bpmn:ioSpecification />
<bpmn:startEvent id="Event_1ftsuzw"> <bpmn:startEvent id="Event_1ftsuzw">
<bpmn:outgoing>Flow_1hjrex4</bpmn:outgoing> <bpmn:outgoing>Flow_1hjrex4</bpmn:outgoing>
</bpmn:startEvent> </bpmn:startEvent>

View File

@ -1,7 +1,6 @@
<?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:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:spiffworkflow="http://spiffworkflow.org/bpmn/schema/1.0/core" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_19o7vxg" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.0.0" modeler:executionPlatform="Camunda Platform" modeler:executionPlatformVersion="7.17.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:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:spiffworkflow="http://spiffworkflow.org/bpmn/schema/1.0/core" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_19o7vxg" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.0.0" modeler:executionPlatform="Camunda Platform" modeler:executionPlatformVersion="7.17.0">
<bpmn:process id="parent" isExecutable="true"> <bpmn:process id="parent" isExecutable="true">
<bpmn:ioSpecification />
<bpmn:startEvent id="Event_1i37yhp"> <bpmn:startEvent id="Event_1i37yhp">
<bpmn:outgoing>Flow_1e5oj0e</bpmn:outgoing> <bpmn:outgoing>Flow_1e5oj0e</bpmn:outgoing>
</bpmn:startEvent> </bpmn:startEvent>

View File

@ -1,7 +1,6 @@
<?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:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:spiffworkflow="http://spiffworkflow.org/bpmn/schema/1.0/core" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_19o7vxg" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.0.0" modeler:executionPlatform="Camunda Platform" modeler:executionPlatformVersion="7.17.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:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:spiffworkflow="http://spiffworkflow.org/bpmn/schema/1.0/core" xmlns:modeler="http://camunda.org/schema/modeler/1.0" id="Definitions_19o7vxg" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="5.0.0" modeler:executionPlatform="Camunda Platform" modeler:executionPlatformVersion="7.17.0">
<bpmn:process id="Process_1" isExecutable="true"> <bpmn:process id="Process_1" isExecutable="true">
<bpmn:ioSpecification />
<bpmn:startEvent id="Event_1ftsuzw"> <bpmn:startEvent id="Event_1ftsuzw">
<bpmn:outgoing>Flow_1hjrex4</bpmn:outgoing> <bpmn:outgoing>Flow_1hjrex4</bpmn:outgoing>
</bpmn:startEvent> </bpmn:startEvent>
@ -16,7 +15,7 @@
<spiffworkflow:property name="formJsonSchemaFilename" value="my_json_jschema.json" /> <spiffworkflow:property name="formJsonSchemaFilename" value="my_json_jschema.json" />
<spiffworkflow:property name="formUiSchemaFilename" value="my_ui_jschema.json" /> <spiffworkflow:property name="formUiSchemaFilename" value="my_ui_jschema.json" />
</spiffworkflow:properties> </spiffworkflow:properties>
</bpmn:extensionElements>3 </bpmn:extensionElements>
<bpmn:incoming>Flow_1hjrex4</bpmn:incoming> <bpmn:incoming>Flow_1hjrex4</bpmn:incoming>
<bpmn:outgoing>Flow_1vlqqxh</bpmn:outgoing> <bpmn:outgoing>Flow_1vlqqxh</bpmn:outgoing>
</bpmn:userTask> </bpmn:userTask>