Squashed 'SpiffWorkflow/' changes from 98c6294f..0e61be85
0e61be85 Merge pull request #289 from sartography/improvement/execution-and-serialization-cleanup 527684da fix some typos in the class & method docs 0dff44a4 Merge branch 'main' into improvement/execution-and-serialization-cleanup 64737498 Allow for other PythonScriptEngine environments besides task data (#288) dd63e916 remove some unused tests & diagrams 24aae519 clean up various small stuff 3b2dc35d use context when opening files for parsing 69eec3eb update class/method docs 24528dfb move all spec conversion classes to top level 5af33b11 remove some unused methods related to old serializer 931b90fb reorganize serializer 4e81ed29 consolidate pointless serializer classes d62acf02 change task_spec._update_hook to return a boolean indicating whether the task is ready git-subtree-dir: SpiffWorkflow git-subtree-split: 0e61be85c47474a33037e6f398e64c96e02f13ad
This commit is contained in:
parent
b8d3d5d84b
commit
c237e218b2
|
@ -1,6 +1,6 @@
|
|||
import unittest
|
||||
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngine import Box
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngineEnvironment import Box
|
||||
|
||||
|
||||
class BoxDeepCopyTest(unittest.TestCase):
|
||||
|
|
|
@ -7,7 +7,7 @@ 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.serializer.bpmn_converters import BpmnTaskSpecConverter
|
||||
from SpiffWorkflow.bpmn.serializer.helpers.spec import TaskSpecConverter
|
||||
|
||||
# Many of our tests relied on the Packager to set the calledElement attribute on
|
||||
# Call Activities. I've moved that code to a customized parser.
|
||||
|
@ -35,9 +35,6 @@ class TestUserTask(UserTask):
|
|||
task.set_data(choice=choice)
|
||||
task.complete()
|
||||
|
||||
@classmethod
|
||||
def deserialize(self, serializer, wf_spec, s_state):
|
||||
return serializer.deserialize_generic(wf_spec, s_state, TestUserTask)
|
||||
|
||||
class TestExclusiveGatewayParser(ConditionalGatewayParser):
|
||||
|
||||
|
@ -47,7 +44,7 @@ class TestExclusiveGatewayParser(ConditionalGatewayParser):
|
|||
return cond
|
||||
return "choice == '%s'" % sequence_flow_node.get('name', None)
|
||||
|
||||
class TestUserTaskConverter(BpmnTaskSpecConverter):
|
||||
class TestUserTaskConverter(TaskSpecConverter):
|
||||
|
||||
def __init__(self, data_converter=None):
|
||||
super().__init__(TestUserTask, data_converter)
|
||||
|
|
|
@ -7,13 +7,16 @@ from SpiffWorkflow.bpmn.parser.BpmnParser import BpmnValidator
|
|||
|
||||
from SpiffWorkflow.task import TaskState
|
||||
|
||||
from SpiffWorkflow.bpmn.serializer.workflow import BpmnWorkflowSerializer
|
||||
from SpiffWorkflow.bpmn.serializer.workflow import BpmnWorkflowSerializer, DEFAULT_SPEC_CONFIG
|
||||
from SpiffWorkflow.bpmn.serializer.task_spec import UserTaskConverter
|
||||
from .BpmnLoaderForTests import TestUserTaskConverter, TestBpmnParser
|
||||
|
||||
__author__ = 'matth'
|
||||
|
||||
DEFAULT_SPEC_CONFIG['task_specs'].append(TestUserTaskConverter)
|
||||
|
||||
wf_spec_converter = BpmnWorkflowSerializer.configure_workflow_spec_converter([TestUserTaskConverter])
|
||||
|
||||
wf_spec_converter = BpmnWorkflowSerializer.configure_workflow_spec_converter(spec_config=DEFAULT_SPEC_CONFIG)
|
||||
|
||||
class BpmnWorkflowTestCase(unittest.TestCase):
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@ import unittest
|
|||
from SpiffWorkflow.exceptions import WorkflowTaskException
|
||||
from SpiffWorkflow.task import TaskState
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngine import PythonScriptEngine
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngineEnvironment import TaskDataEnvironment
|
||||
from SpiffWorkflow.bpmn.workflow import BpmnWorkflow
|
||||
from tests.SpiffWorkflow.bpmn.BpmnWorkflowTestCase import BpmnWorkflowTestCase
|
||||
|
||||
|
@ -17,8 +18,8 @@ class CustomBpmnScriptEngine(PythonScriptEngine):
|
|||
It will execute python code read in from the bpmn. It will also make any scripts in the
|
||||
scripts directory available for execution. """
|
||||
def __init__(self):
|
||||
augment_methods = {'custom_function': my_custom_function}
|
||||
super().__init__(scripting_additions=augment_methods)
|
||||
environment = TaskDataEnvironment({'custom_function': my_custom_function})
|
||||
super().__init__(environment=environment)
|
||||
|
||||
|
||||
class CustomInlineScriptTest(BpmnWorkflowTestCase):
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
import unittest
|
||||
|
||||
from SpiffWorkflow.bpmn.FeelLikeScriptEngine import FeelLikeScriptEngine, FeelInterval
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngineEnvironment import BoxedTaskDataEnvironment
|
||||
from tests.SpiffWorkflow.bpmn.BpmnWorkflowTestCase import BpmnWorkflowTestCase
|
||||
import datetime
|
||||
|
||||
|
@ -12,7 +13,7 @@ __author__ = 'matth'
|
|||
class FeelExpressionTest(BpmnWorkflowTestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.expressionEngine = FeelLikeScriptEngine()
|
||||
self.expressionEngine = FeelLikeScriptEngine(environment=BoxedTaskDataEnvironment())
|
||||
|
||||
def testRunThroughExpressions(self):
|
||||
tests = [("string length('abcd')", 4, {}),
|
||||
|
@ -62,7 +63,7 @@ class FeelExpressionTest(BpmnWorkflowTestCase):
|
|||
]
|
||||
}
|
||||
x = self.expressionEngine._evaluate(
|
||||
"""sum([1 for x in exclusive if x.get('ExclusiveSpaceAMComputingID',None)==None])""",
|
||||
"""sum([1 for x in exclusive if x.get('ExclusiveSpaceAMComputingID',None)==None])""",
|
||||
data
|
||||
)
|
||||
self.assertEqual(x, 1)
|
||||
|
|
|
@ -1,47 +0,0 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
|
||||
|
||||
import unittest
|
||||
from SpiffWorkflow.bpmn.workflow import BpmnWorkflow
|
||||
from tests.SpiffWorkflow.bpmn.BpmnWorkflowTestCase import BpmnWorkflowTestCase
|
||||
|
||||
__author__ = 'kellym'
|
||||
|
||||
|
||||
class NavListExclusiveGatewayTest(BpmnWorkflowTestCase):
|
||||
"""The example bpmn diagram looks roughly like this, a gateway
|
||||
that leads to two different end points
|
||||
|
||||
[Step 1] -> <x exclusive gateway x>
|
||||
-> 'False' -> [Alternate End] -> END A
|
||||
-> 'True' -> [Step 2] -> END B
|
||||
"""
|
||||
|
||||
def setUp(self):
|
||||
self.spec = self.load_workflow1_spec()
|
||||
|
||||
def load_workflow1_spec(self):
|
||||
return self.load_workflow_spec('ExclusiveGatewayMultipleEndNavigation.bpmn','ExclusiveGatewayMultipleEndNavigation')
|
||||
|
||||
def testRunThroughHappy(self):
|
||||
|
||||
self.workflow = BpmnWorkflow(self.spec)
|
||||
self.workflow.do_engine_steps()
|
||||
nav_list = self.workflow.get_nav_list()
|
||||
self.assertEqual(6, len(nav_list))
|
||||
|
||||
self.assertEqual("Step 1", nav_list[0]["description"])
|
||||
self.assertEqual("GatewayToEnd", nav_list[1]["description"])
|
||||
self.assertEqual("False", nav_list[2]["description"])
|
||||
self.assertEqual("Step End", nav_list[3]["description"])
|
||||
self.assertEqual("True", nav_list[4]["description"])
|
||||
self.assertEqual("Step 2", nav_list[5]["description"])
|
||||
|
||||
self.assertEqual(0, nav_list[0]["indent"])
|
||||
|
||||
|
||||
def suite():
|
||||
return unittest.TestLoader().loadTestsFromTestCase(NavListExclusiveGatewayTest)
|
||||
if __name__ == '__main__':
|
||||
unittest.TextTestRunner(verbosity=2).run(suite())
|
|
@ -0,0 +1,80 @@
|
|||
import json
|
||||
|
||||
from tests.SpiffWorkflow.bpmn.BpmnWorkflowTestCase import BpmnWorkflowTestCase
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngine import PythonScriptEngine
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngineEnvironment import BasePythonScriptEngineEnvironment
|
||||
from SpiffWorkflow.bpmn.workflow import BpmnWorkflow
|
||||
from SpiffWorkflow.task import TaskState
|
||||
|
||||
def example_global():
|
||||
pass
|
||||
|
||||
class NonTaskDataExampleEnvironment(BasePythonScriptEngineEnvironment):
|
||||
def __init__(self, environment_globals, environment):
|
||||
self.environment = environment
|
||||
self.environment.update(environment_globals)
|
||||
super().__init__(environment_globals)
|
||||
|
||||
def evaluate(self, expression, context, external_methods=None):
|
||||
pass
|
||||
|
||||
def execute(self, script, context, external_methods=None):
|
||||
self.environment.update(context)
|
||||
self.environment.update(external_methods or {})
|
||||
exec(script, self.environment)
|
||||
self.environment = {k: v for k, v in self.environment.items() if k not in external_methods}
|
||||
|
||||
def user_defined_values(self):
|
||||
return {k: v for k, v in self.environment.items() if k not in self.globals}
|
||||
|
||||
class PythonScriptEngineEnvironmentTest(BpmnWorkflowTestCase):
|
||||
|
||||
def setUp(self):
|
||||
spec, subprocesses = self.load_workflow_spec('task_data_size.bpmn', 'Process_ccz6oq2')
|
||||
self.workflow = BpmnWorkflow(spec, subprocesses)
|
||||
|
||||
def testTaskDataSizeWithDefaultPythonScriptEngine(self):
|
||||
self.workflow.do_engine_steps()
|
||||
|
||||
self.assertIn("a", self.workflow.data)
|
||||
self.assertIn("b", self.workflow.data)
|
||||
self.assertIn("c", self.workflow.data)
|
||||
self.assertIn("d", self.workflow.data)
|
||||
|
||||
task_data_len = self._get_task_data_len()
|
||||
d_uniques = set(self.workflow.data["d"])
|
||||
d_len = len(self.workflow.data["d"])
|
||||
|
||||
self.assertGreater(task_data_len, 15000)
|
||||
self.assertEqual(d_len, 512*3)
|
||||
self.assertEqual(d_uniques, {"a", "b", "c"})
|
||||
|
||||
def testTaskDataSizeWithNonTaskDataEnvironmentBasedPythonScriptEngine(self):
|
||||
script_engine_environment = NonTaskDataExampleEnvironment({"example_global": example_global}, {})
|
||||
script_engine = PythonScriptEngine(environment=script_engine_environment)
|
||||
self.workflow.script_engine = script_engine
|
||||
|
||||
self.workflow.do_engine_steps()
|
||||
self.workflow.data.update(script_engine.environment.user_defined_values())
|
||||
|
||||
self.assertIn("a", self.workflow.data)
|
||||
self.assertIn("b", self.workflow.data)
|
||||
self.assertIn("c", self.workflow.data)
|
||||
self.assertIn("d", self.workflow.data)
|
||||
self.assertNotIn("example_global", self.workflow.data)
|
||||
|
||||
task_data_len = self._get_task_data_len()
|
||||
d_uniques = set(self.workflow.data["d"])
|
||||
d_len = len(self.workflow.data["d"])
|
||||
|
||||
self.assertEqual(task_data_len, 2)
|
||||
self.assertEqual(d_len, 512*3)
|
||||
self.assertEqual(d_uniques, {"a", "b", "c"})
|
||||
|
||||
def _get_task_data_len(self):
|
||||
tasks_to_check = self.workflow.get_tasks(TaskState.FINISHED_MASK)
|
||||
task_data = [task.data for task in tasks_to_check]
|
||||
task_data_to_check = list(filter(len, task_data))
|
||||
task_data_len = len(json.dumps(task_data_to_check))
|
||||
return task_data_len
|
||||
|
|
@ -4,6 +4,7 @@ import datetime
|
|||
import unittest
|
||||
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngine import PythonScriptEngine
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngineEnvironment import TaskDataEnvironment
|
||||
from SpiffWorkflow.bpmn.workflow import BpmnWorkflow
|
||||
from tests.SpiffWorkflow.bpmn.BpmnWorkflowTestCase import BpmnWorkflowTestCase
|
||||
|
||||
|
@ -14,10 +15,10 @@ class CustomScriptEngine(PythonScriptEngine):
|
|||
It will execute python code read in from the bpmn. It will also make any scripts in the
|
||||
scripts directory available for execution. """
|
||||
def __init__(self):
|
||||
augment_methods = {
|
||||
environment = TaskDataEnvironment({
|
||||
'timedelta': datetime.timedelta,
|
||||
}
|
||||
super().__init__(scripting_additions=augment_methods)
|
||||
})
|
||||
super().__init__(environment=environment)
|
||||
|
||||
class TooManyLoopsTest(BpmnWorkflowTestCase):
|
||||
|
||||
|
|
|
@ -1,746 +0,0 @@
|
|||
<?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_06pyjz2" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.7.3">
|
||||
<bpmn:process id="ComplexNavigation" isExecutable="true">
|
||||
<bpmn:startEvent id="StartEvent_1">
|
||||
<bpmn:outgoing>Flow_0kcrx5l</bpmn:outgoing>
|
||||
</bpmn:startEvent>
|
||||
<bpmn:sequenceFlow id="Flow_0kcrx5l" sourceRef="StartEvent_1" targetRef="Step1" />
|
||||
<bpmn:userTask id="Step1" name="Step 1">
|
||||
<bpmn:incoming>Flow_0kcrx5l</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_1seuuie</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:userTask id="Activity_0obertf" name="Select RO Education Department" camunda:formKey="RO_EducationDept">
|
||||
<bpmn:documentation>The Study's Responsible Organization is needed in order to confirm the Department Chair. If it is the same as the Primary Investigator's Primary Department show below, we have all the information needed to determine the Department Chair.
|
||||
|
||||
|
||||
**Primary Investigator's Primary Appointment**
|
||||
***School:*** {{ pi.E0.schoolName }}
|
||||
***Department:*** {{ pi.E0.deptName }}</bpmn:documentation>
|
||||
<bpmn:extensionElements>
|
||||
<camunda:formData>
|
||||
<camunda:formField id="RO_StudyDeptEducation" label="PI's Study Responsible Organization Department" type="enum">
|
||||
<camunda:properties>
|
||||
<camunda:property id="spreadsheet.name" value="DepartmentList-Education.xlsx" />
|
||||
<camunda:property id="spreadsheet.value.column" value="Value" />
|
||||
<camunda:property id="spreadsheet.label.column" value="Label" />
|
||||
<camunda:property id="description" value="Type key words to find Education Department" />
|
||||
</camunda:properties>
|
||||
</camunda:formField>
|
||||
</camunda:formData>
|
||||
</bpmn:extensionElements>
|
||||
<bpmn:incoming>Flow_12obxbo</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_1y4gjsg</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:scriptTask id="Activity_0vmy33u" name="Update RO Data">
|
||||
<bpmn:incoming>Flow_02614fd</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0c4tt8e</bpmn:outgoing>
|
||||
<bpmn:script>ro.chair = {}
|
||||
ro.chair.uid = RO_Chair_CID
|
||||
ro.chair.name_degree = RO_Chair_Name_Degree
|
||||
ro.chair.title = RO_Chair_Title
|
||||
ro.chair.sig_block = RO_Chair_Sig_Block</bpmn:script>
|
||||
</bpmn:scriptTask>
|
||||
<bpmn:exclusiveGateway id="Gateway_0ubqopr" name="PI's Primary School / Department same as study's Responsible Organization?" default="Flow_1ni06mz">
|
||||
<bpmn:incoming>Flow_1seuuie</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_1ni06mz</bpmn:outgoing>
|
||||
<bpmn:outgoing>Flow_1y9edqt</bpmn:outgoing>
|
||||
</bpmn:exclusiveGateway>
|
||||
<bpmn:exclusiveGateway id="Gateway_13vtxns" default="Flow_1oriwwz">
|
||||
<bpmn:incoming>Flow_1y9edqt</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_1oriwwz</bpmn:outgoing>
|
||||
<bpmn:outgoing>Flow_185jvp3</bpmn:outgoing>
|
||||
</bpmn:exclusiveGateway>
|
||||
<bpmn:scriptTask id="Activity_08ldcxm" name="Build School List">
|
||||
<bpmn:incoming>Flow_185jvp3</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_1dh8c45</bpmn:outgoing>
|
||||
<bpmn:script>sch_enum = []
|
||||
if pi.E0.schoolAbbrv != "MD":
|
||||
sch_enum_md = [
|
||||
{
|
||||
"value": "MD",
|
||||
"label": "Medicine"
|
||||
},
|
||||
]
|
||||
else:
|
||||
sch_enum_md = []
|
||||
if pi.E0.schoolAbbrv != "AS":
|
||||
sch_enum_as = [
|
||||
{
|
||||
"value": "AS",
|
||||
"label": "Arts & Science"
|
||||
},
|
||||
]
|
||||
else:
|
||||
sch_enum_as = []
|
||||
if pi.E0.schoolAbbrv != "CU":
|
||||
sch_enum_cu = [
|
||||
{
|
||||
"value": "CU",
|
||||
"label": "Education"
|
||||
},
|
||||
]
|
||||
else:
|
||||
sch_enum_cu = []
|
||||
if pi.E0.schoolAbbrv != "NR":
|
||||
sch_enum_nr = [
|
||||
{
|
||||
"value": "NR",
|
||||
"label": "Nursing"
|
||||
},
|
||||
]
|
||||
else:
|
||||
sch_enum_nr = []
|
||||
sch_enum = sch_enum_md + sch_enum_as + sch_enum_cu + sch_enum_nr
|
||||
del(sch_enum_md)
|
||||
del(sch_enum_as)
|
||||
del(sch_enum_cu)
|
||||
del(sch_enum_nr)</bpmn:script>
|
||||
</bpmn:scriptTask>
|
||||
<bpmn:userTask id="Activity_08pywzy" name="Select RO School" camunda:formKey="RO_School">
|
||||
<bpmn:extensionElements>
|
||||
<camunda:formData>
|
||||
<camunda:formField id="RO_StudySchool" label="Select the Responsible Organization's School" type="enum">
|
||||
<camunda:properties>
|
||||
<camunda:property id="data.name" value="sch_enum" />
|
||||
<camunda:property id="data.value.column" value="value" />
|
||||
<camunda:property id="data.label.column" value="label" />
|
||||
</camunda:properties>
|
||||
</camunda:formField>
|
||||
</camunda:formData>
|
||||
</bpmn:extensionElements>
|
||||
<bpmn:incoming>Flow_1dh8c45</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0mf9npl</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:exclusiveGateway id="Gateway_12qlux1" name="School Have Departments?" default="Flow_0nzochy">
|
||||
<bpmn:incoming>Flow_1oriwwz</bpmn:incoming>
|
||||
<bpmn:incoming>Flow_0nmpxmc</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_12obxbo</bpmn:outgoing>
|
||||
<bpmn:outgoing>Flow_03s8gvx</bpmn:outgoing>
|
||||
<bpmn:outgoing>Flow_0nzochy</bpmn:outgoing>
|
||||
<bpmn:outgoing>Flow_0h955ao</bpmn:outgoing>
|
||||
</bpmn:exclusiveGateway>
|
||||
<bpmn:exclusiveGateway id="Gateway_02h27h5">
|
||||
<bpmn:incoming>Flow_1y4gjsg</bpmn:incoming>
|
||||
<bpmn:incoming>Flow_0lnb8jw</bpmn:incoming>
|
||||
<bpmn:incoming>Flow_1fqtd41</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0a626ba</bpmn:outgoing>
|
||||
</bpmn:exclusiveGateway>
|
||||
<bpmn:scriptTask id="Activity_0nkgcfg" name="Reset RO Department">
|
||||
<bpmn:incoming>Flow_0a626ba</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0ssrpqx</bpmn:outgoing>
|
||||
<bpmn:script>if PIsPrimaryDepartmentSameAsRO.value == "diffSchool":
|
||||
ro.schoolName = RO_StudySchool.label
|
||||
ro.schoolAbbrv = RO_StudySchool.value
|
||||
|
||||
if PIsPrimaryDepartmentSameAsRO.value != "yes":
|
||||
if ro.schoolAbbrv == "MD":
|
||||
ro.deptName = RO_StudyDeptMedicine.label
|
||||
ro.deptAbbrv = RO_StudyDeptMedicine.value
|
||||
elif ro.schoolAbbrv == "AS":
|
||||
ro.deptName = RO_StudyDeptArtsSciences.label
|
||||
ro.deptAbbrv = RO_StudyDeptArtsSciences.value
|
||||
elif ro.schoolAbbrv == "CU":
|
||||
ro.deptName = RO_StudyDeptEducation.label
|
||||
ro.deptAbbrv = RO_StudyDeptEducation.value
|
||||
else:
|
||||
ro.deptName = ""
|
||||
ro.deptAbbrv = ""</bpmn:script>
|
||||
</bpmn:scriptTask>
|
||||
<bpmn:userTask id="Activity_16q24p2" name="Select RO Medicine Department" camunda:formKey="RO_MedicineDept">
|
||||
<bpmn:documentation>The Study's Responsible Organization is needed in order to confirm the Department Chair. If it is the same as the Primary Investigator's Primary Department show below, we have all the information needed to determine the Department Chair.
|
||||
|
||||
|
||||
**Primary Investigator's Primary Appointment**
|
||||
***School:*** {{ pi.E0.schoolName }}
|
||||
***Department:*** {{ pi.E0.deptName }}</bpmn:documentation>
|
||||
<bpmn:extensionElements>
|
||||
<camunda:formData>
|
||||
<camunda:formField id="RO_StudyDeptMedicine" label="PI's Study Responsible Organization Department" type="enum">
|
||||
<camunda:properties>
|
||||
<camunda:property id="spreadsheet.name" value="DepartmentList-Medicine.xlsx" />
|
||||
<camunda:property id="spreadsheet.value.column" value="Value" />
|
||||
<camunda:property id="spreadsheet.label.column" value="Label" />
|
||||
<camunda:property id="description" value="Type key words to find Medicine Department" />
|
||||
</camunda:properties>
|
||||
</camunda:formField>
|
||||
</camunda:formData>
|
||||
</bpmn:extensionElements>
|
||||
<bpmn:incoming>Flow_0nzochy</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0lnb8jw</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:userTask id="Activity_0nv1s23" name="Select RO A&S Department" camunda:formKey="RO_AandS_Dept">
|
||||
<bpmn:documentation>The Study's Responsible Organization is needed in order to confirm the Department Chair. If it is the same as the Primary Investigator's Primary Department show below, we have all the information needed to determine the Department Chair.
|
||||
|
||||
|
||||
**Primary Investigator's Primary Appointment**
|
||||
***School:*** {{ pi.E0.schoolName }}
|
||||
***Department:*** {{ pi.E0.deptName }}</bpmn:documentation>
|
||||
<bpmn:extensionElements>
|
||||
<camunda:formData>
|
||||
<camunda:formField id="RO_StudyDeptArtsSciences" label="PI's Study Responsible Organization Department" type="enum">
|
||||
<camunda:properties>
|
||||
<camunda:property id="spreadsheet.name" value="DepartmentList-ArtsSciences.xlsx" />
|
||||
<camunda:property id="spreadsheet.value.column" value="Value" />
|
||||
<camunda:property id="spreadsheet.label.column" value="Label" />
|
||||
<camunda:property id="description" value="Type key words to find A&S Department" />
|
||||
</camunda:properties>
|
||||
</camunda:formField>
|
||||
</camunda:formData>
|
||||
</bpmn:extensionElements>
|
||||
<bpmn:incoming>Flow_0h955ao</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_1fqtd41</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:scriptTask id="Activity_0xa6vms" name="Reset RO School ">
|
||||
<bpmn:incoming>Flow_0mf9npl</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0nmpxmc</bpmn:outgoing>
|
||||
<bpmn:script>ro.schoolName = RO_StudySchool.label
|
||||
ro.schoolAbbrv = RO_StudySchool.value</bpmn:script>
|
||||
</bpmn:scriptTask>
|
||||
<bpmn:exclusiveGateway id="Gateway_12sb0pk">
|
||||
<bpmn:incoming>Flow_03s8gvx</bpmn:incoming>
|
||||
<bpmn:incoming>Flow_0ssrpqx</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0tnnt3b</bpmn:outgoing>
|
||||
</bpmn:exclusiveGateway>
|
||||
<bpmn:sequenceFlow id="Flow_12obxbo" name="Education" sourceRef="Gateway_12qlux1" targetRef="Activity_0obertf">
|
||||
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">ro.schoolAbbrv == "CU"</bpmn:conditionExpression>
|
||||
</bpmn:sequenceFlow>
|
||||
<bpmn:sequenceFlow id="Flow_1y4gjsg" sourceRef="Activity_0obertf" targetRef="Gateway_02h27h5" />
|
||||
<bpmn:sequenceFlow id="Flow_1ni06mz" sourceRef="Gateway_0ubqopr" targetRef="Activity_0whcncc" />
|
||||
<bpmn:sequenceFlow id="Flow_0tnnt3b" sourceRef="Gateway_12sb0pk" targetRef="Activity_0whcncc" />
|
||||
<bpmn:sequenceFlow id="Flow_02614fd" sourceRef="Activity_0whcncc" targetRef="Activity_0vmy33u" />
|
||||
<bpmn:sequenceFlow id="Flow_1y9edqt" name="No" sourceRef="Gateway_0ubqopr" targetRef="Gateway_13vtxns">
|
||||
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">PIsPrimaryDepartmentSameAsRO.value != "yes"</bpmn:conditionExpression>
|
||||
</bpmn:sequenceFlow>
|
||||
<bpmn:sequenceFlow id="Flow_1oriwwz" name="Yes" sourceRef="Gateway_13vtxns" targetRef="Gateway_12qlux1" />
|
||||
<bpmn:sequenceFlow id="Flow_185jvp3" name="No" sourceRef="Gateway_13vtxns" targetRef="Activity_08ldcxm">
|
||||
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">PIsPrimaryDepartmentSameAsRO.value == 'diffSchool'</bpmn:conditionExpression>
|
||||
</bpmn:sequenceFlow>
|
||||
<bpmn:sequenceFlow id="Flow_1dh8c45" sourceRef="Activity_08ldcxm" targetRef="Activity_08pywzy" />
|
||||
<bpmn:sequenceFlow id="Flow_0mf9npl" sourceRef="Activity_08pywzy" targetRef="Activity_0xa6vms" />
|
||||
<bpmn:sequenceFlow id="Flow_0nmpxmc" sourceRef="Activity_0xa6vms" targetRef="Gateway_12qlux1" />
|
||||
<bpmn:sequenceFlow id="Flow_03s8gvx" name="No" sourceRef="Gateway_12qlux1" targetRef="Gateway_12sb0pk">
|
||||
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">ro.schoolAbbrv not in ["MD", "AS", "CU"]</bpmn:conditionExpression>
|
||||
</bpmn:sequenceFlow>
|
||||
<bpmn:sequenceFlow id="Flow_0nzochy" name="Medicine" sourceRef="Gateway_12qlux1" targetRef="Activity_16q24p2" />
|
||||
<bpmn:sequenceFlow id="Flow_0h955ao" name="A&S" sourceRef="Gateway_12qlux1" targetRef="Activity_0nv1s23">
|
||||
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">ro.schoolAbbrv == "AS"</bpmn:conditionExpression>
|
||||
</bpmn:sequenceFlow>
|
||||
<bpmn:sequenceFlow id="Flow_0lnb8jw" sourceRef="Activity_16q24p2" targetRef="Gateway_02h27h5" />
|
||||
<bpmn:sequenceFlow id="Flow_1fqtd41" sourceRef="Activity_0nv1s23" targetRef="Gateway_02h27h5" />
|
||||
<bpmn:sequenceFlow id="Flow_0a626ba" sourceRef="Gateway_02h27h5" targetRef="Activity_0nkgcfg" />
|
||||
<bpmn:sequenceFlow id="Flow_0ssrpqx" sourceRef="Activity_0nkgcfg" targetRef="Gateway_12sb0pk" />
|
||||
<bpmn:sequenceFlow id="Flow_1seuuie" sourceRef="Step1" targetRef="Gateway_0ubqopr" />
|
||||
<bpmn:userTask id="Activity_0whcncc" name="Determine RO Chair">
|
||||
<bpmn:incoming>Flow_1ni06mz</bpmn:incoming>
|
||||
<bpmn:incoming>Flow_0tnnt3b</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_02614fd</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:endEvent id="Event_0l7thbn" name="End">
|
||||
<bpmn:documentation>temp</bpmn:documentation>
|
||||
<bpmn:incoming>Flow_15xpsq8</bpmn:incoming>
|
||||
<bpmn:incoming>Flow_1g7q28p</bpmn:incoming>
|
||||
</bpmn:endEvent>
|
||||
<bpmn:exclusiveGateway id="Gateway_0ym1uow" name="How many Primary Coordinators?" default="Flow_0ygr7cu">
|
||||
<bpmn:incoming>Flow_0cqbu1f</bpmn:incoming>
|
||||
<bpmn:incoming>Flow_1d4sb3d</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_12oux1f</bpmn:outgoing>
|
||||
<bpmn:outgoing>Flow_0ygr7cu</bpmn:outgoing>
|
||||
</bpmn:exclusiveGateway>
|
||||
<bpmn:userTask id="Activity_0l7vq1i" name="Update Primary Coordinator Info" camunda:formKey="SC_AccessEmails">
|
||||
<bpmn:documentation>The following Primary Coordinators were entered in Protocol Builder:
|
||||
{%+ for key, value in pcs.items() %}{{value.display_name}} ({{key}}){% if loop.index is lt cnt_pcs %}, {% endif %}{% endfor %}
|
||||
To Save the current settings for all Primary Coordinators, select Save All.
|
||||
|
||||
|
||||
Otherwise, edit each Coordinator as necessary and select the Save button for each.
|
||||
|
||||
### Please provide supplemental information for:
|
||||
#### {{ pc.display_name }}
|
||||
##### Title: {{ pc.title }}
|
||||
|
||||
##### Department: {{ pc.department }}
|
||||
##### Affiliation: {{ pc.affiliation }}</bpmn:documentation>
|
||||
<bpmn:extensionElements>
|
||||
<camunda:formData>
|
||||
<camunda:formField id="pc.access" label="Should this Coordinator have full editing access in the system?" type="boolean" defaultValue="true" />
|
||||
<camunda:formField id="pc.emails" label="Should this Coordinator receive automated email notifications?" type="boolean" defaultValue="true" />
|
||||
</camunda:formData>
|
||||
</bpmn:extensionElements>
|
||||
<bpmn:incoming>Flow_12oux1f</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_1ik148z</bpmn:outgoing>
|
||||
<bpmn:multiInstanceLoopCharacteristics camunda:collection="pcs" camunda:elementVariable="pc" />
|
||||
</bpmn:userTask>
|
||||
<bpmn:exclusiveGateway id="Gateway_1fhu0gj" name="PI is Dept Chair?" default="Flow_05g7d16">
|
||||
<bpmn:incoming>Flow_0c4tt8e</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_05g7d16</bpmn:outgoing>
|
||||
<bpmn:outgoing>Flow_13zasb1</bpmn:outgoing>
|
||||
</bpmn:exclusiveGateway>
|
||||
<bpmn:manualTask id="Activity_17ikhsk" name="Show PI is Dept Chair">
|
||||
<bpmn:documentation>The PI is also the RO Chair</bpmn:documentation>
|
||||
<bpmn:incoming>Flow_13zasb1</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0cqbu1f</bpmn:outgoing>
|
||||
</bpmn:manualTask>
|
||||
<bpmn:exclusiveGateway id="Gateway_1ykz8u2" name="How many Sub-Investigators?" default="Flow_0pdoc38">
|
||||
<bpmn:incoming>Flow_0efu6u1</bpmn:incoming>
|
||||
<bpmn:incoming>Flow_0a3fjzp</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0ljn2v6</bpmn:outgoing>
|
||||
<bpmn:outgoing>Flow_0pdoc38</bpmn:outgoing>
|
||||
</bpmn:exclusiveGateway>
|
||||
<bpmn:userTask id="Activity_0rcrs1i" name="Update Sub-Investigator Info" camunda:formKey="SI_AccessEmails">
|
||||
<bpmn:documentation>The following Sub-Investigators were entered in Protocol Builder:
|
||||
{%+ for key, value in subs.items() %}{{value.display_name}} ({{key}}){% if loop.index is lt cnt_subs %}, {% endif %}{% endfor %}
|
||||
To Save the current settings for all Sub-Investigators, select Save All.
|
||||
|
||||
|
||||
Otherwise, edit each Sub-Investigator as necessary and select the Save button for each.
|
||||
|
||||
|
||||
### Please provide supplemental information for:
|
||||
#### {{ sub.display_name }}
|
||||
##### Title: {{ sub.title }}
|
||||
|
||||
##### Department: {{ sub.department }}
|
||||
##### Affiliation: {{ sub.affiliation }}</bpmn:documentation>
|
||||
<bpmn:extensionElements>
|
||||
<camunda:formData>
|
||||
<camunda:formField id="sub.access" label="Should this Sub-Investigator have full editing access in the system?" type="boolean" defaultValue="false" />
|
||||
<camunda:formField id="sub.emails" label="Should this Sub-Investigator receive automated email notifications?" type="boolean" defaultValue="false" />
|
||||
</camunda:formData>
|
||||
</bpmn:extensionElements>
|
||||
<bpmn:incoming>Flow_0ljn2v6</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_07vu2b0</bpmn:outgoing>
|
||||
<bpmn:multiInstanceLoopCharacteristics camunda:collection="subs" camunda:elementVariable="sub" />
|
||||
</bpmn:userTask>
|
||||
<bpmn:exclusiveGateway id="Gateway_1h4d4n5" name="How many Additional Coordinators?" default="Flow_0a3fjzp">
|
||||
<bpmn:incoming>Flow_1ik148z</bpmn:incoming>
|
||||
<bpmn:incoming>Flow_0ygr7cu</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0a3fjzp</bpmn:outgoing>
|
||||
<bpmn:outgoing>Flow_0rstqv5</bpmn:outgoing>
|
||||
</bpmn:exclusiveGateway>
|
||||
<bpmn:userTask id="Activity_0tbvw9o" name="Update Additional Coordinator Info">
|
||||
<bpmn:documentation>The following Additional Coordinators were entered in Protocol Builder:
|
||||
{%+ for key, value in acs.items() %}{{value.display_name}} ({{key}}){% if loop.index is lt cnt_acs %}, {% endif %}{% endfor %}
|
||||
To Save the current settings for all Additional Coordinators, select Save All.
|
||||
|
||||
|
||||
|
||||
|
||||
Otherwise, edit each Coordinator as necessary and select the Save button for each.
|
||||
|
||||
|
||||
### Please provide supplemental information for:
|
||||
#### {{ acs.display_name }}
|
||||
##### Title: {{ acs.title }}
|
||||
|
||||
|
||||
##### Department: {{ acs.department }}
|
||||
##### Affiliation: {{ acs.affiliation }}</bpmn:documentation>
|
||||
<bpmn:incoming>Flow_0rstqv5</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0efu6u1</bpmn:outgoing>
|
||||
<bpmn:multiInstanceLoopCharacteristics camunda:collection="acs" camunda:elementVariable="ac" />
|
||||
</bpmn:userTask>
|
||||
<bpmn:exclusiveGateway id="Gateway_0gjk91e" name="How many Additional Personnel? " default="Flow_1g7q28p">
|
||||
<bpmn:incoming>Flow_0pdoc38</bpmn:incoming>
|
||||
<bpmn:incoming>Flow_07vu2b0</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_1g7q28p</bpmn:outgoing>
|
||||
<bpmn:outgoing>Flow_0qti1ms</bpmn:outgoing>
|
||||
</bpmn:exclusiveGateway>
|
||||
<bpmn:userTask id="Activity_1uzsp1r" name="Update Additional Personnel Info" camunda:formKey="AP_AccessEmails">
|
||||
<bpmn:documentation>The following Additional Personnel were entered in Protocol Builder:
|
||||
{%+ for key, value in aps.items() %}{{value.display_name}} ({{key}}){% if loop.index is lt cnt_aps %}, {% endif %}{% endfor %}
|
||||
To Save the current settings for all Additional Personnel, select Save All.
|
||||
|
||||
|
||||
|
||||
|
||||
Otherwise, edit each Additional Personnel as necessary and select the Save button for each.
|
||||
|
||||
|
||||
|
||||
|
||||
### Please provide supplemental information for:
|
||||
#### {{ ap.display_name }}
|
||||
##### Title: {{ ap.title }}
|
||||
|
||||
|
||||
##### Department: {{ ap.department }}
|
||||
##### Affiliation: {{ ap.affiliation }}</bpmn:documentation>
|
||||
<bpmn:extensionElements>
|
||||
<camunda:formData>
|
||||
<camunda:formField id="ap.access" label="Should this Additional Personnel have full editing access in the system?" type="boolean" />
|
||||
<camunda:formField id="FormField_27dit3u" label="Should this Additional Personnel receive automated email notifications?" />
|
||||
</camunda:formData>
|
||||
</bpmn:extensionElements>
|
||||
<bpmn:incoming>Flow_0qti1ms</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_15xpsq8</bpmn:outgoing>
|
||||
<bpmn:multiInstanceLoopCharacteristics camunda:collection="aps" camunda:elementVariable="ap" />
|
||||
</bpmn:userTask>
|
||||
<bpmn:userTask id="Activity_0otiy71" name="Update Chair Info" camunda:formKey="RO_Chair_Info">
|
||||
<bpmn:documentation>***Name & Degree:*** {{ RO_Chair_Name_Degree }}
|
||||
***School:*** {{ RO_School }}
|
||||
***Department:*** {{ RO_Department }}
|
||||
***Title:*** {{ RO_Chair_Title }}
|
||||
***Email:*** {{ RO_Chair_CID }}
|
||||
|
||||
|
||||
{% if RO_Chair_CID != dc.uid %}
|
||||
*Does not match the Department Chair specified in Protocol Builder, {{ dc.display_name }}*
|
||||
{% endif %}</bpmn:documentation>
|
||||
<bpmn:extensionElements>
|
||||
<camunda:formData>
|
||||
<camunda:formField id="RO_ChairAccess" label="Should the Department Chair have full editing access in the system?" type="boolean" defaultValue="false" />
|
||||
<camunda:formField id="RO_ChairEmails" label="Should the Department Chair receive automated email notifications?" type="boolean" defaultValue="false" />
|
||||
</camunda:formData>
|
||||
<camunda:properties>
|
||||
<camunda:property name="display_name" value=""Responsible Organization's Chair Info"" />
|
||||
</camunda:properties>
|
||||
</bpmn:extensionElements>
|
||||
<bpmn:incoming>Flow_05g7d16</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_1d4sb3d</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:sequenceFlow id="Flow_15xpsq8" sourceRef="Activity_1uzsp1r" targetRef="Event_0l7thbn" />
|
||||
<bpmn:sequenceFlow id="Flow_1g7q28p" sourceRef="Gateway_0gjk91e" targetRef="Event_0l7thbn" />
|
||||
<bpmn:sequenceFlow id="Flow_0cqbu1f" sourceRef="Activity_17ikhsk" targetRef="Gateway_0ym1uow" />
|
||||
<bpmn:sequenceFlow id="Flow_1d4sb3d" sourceRef="Activity_0otiy71" targetRef="Gateway_0ym1uow" />
|
||||
<bpmn:sequenceFlow id="Flow_12oux1f" name="1 or more" sourceRef="Gateway_0ym1uow" targetRef="Activity_0l7vq1i" />
|
||||
<bpmn:sequenceFlow id="Flow_0ygr7cu" name="None" sourceRef="Gateway_0ym1uow" targetRef="Gateway_1h4d4n5" />
|
||||
<bpmn:sequenceFlow id="Flow_1ik148z" sourceRef="Activity_0l7vq1i" targetRef="Gateway_1h4d4n5" />
|
||||
<bpmn:sequenceFlow id="Flow_05g7d16" name="No" sourceRef="Gateway_1fhu0gj" targetRef="Activity_0otiy71" />
|
||||
<bpmn:sequenceFlow id="Flow_13zasb1" name="Yes" sourceRef="Gateway_1fhu0gj" targetRef="Activity_17ikhsk">
|
||||
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">RO_Chair_CID == pi.uid</bpmn:conditionExpression>
|
||||
</bpmn:sequenceFlow>
|
||||
<bpmn:sequenceFlow id="Flow_0efu6u1" sourceRef="Activity_0tbvw9o" targetRef="Gateway_1ykz8u2" />
|
||||
<bpmn:sequenceFlow id="Flow_0a3fjzp" name="None" sourceRef="Gateway_1h4d4n5" targetRef="Gateway_1ykz8u2" />
|
||||
<bpmn:sequenceFlow id="Flow_0ljn2v6" name="1 or more" sourceRef="Gateway_1ykz8u2" targetRef="Activity_0rcrs1i" />
|
||||
<bpmn:sequenceFlow id="Flow_0pdoc38" name="None" sourceRef="Gateway_1ykz8u2" targetRef="Gateway_0gjk91e" />
|
||||
<bpmn:sequenceFlow id="Flow_07vu2b0" sourceRef="Activity_0rcrs1i" targetRef="Gateway_0gjk91e" />
|
||||
<bpmn:sequenceFlow id="Flow_0rstqv5" name="1 or more" sourceRef="Gateway_1h4d4n5" targetRef="Activity_0tbvw9o" />
|
||||
<bpmn:sequenceFlow id="Flow_0qti1ms" sourceRef="Gateway_0gjk91e" targetRef="Activity_1uzsp1r" />
|
||||
<bpmn:sequenceFlow id="Flow_0c4tt8e" sourceRef="Activity_0vmy33u" targetRef="Gateway_1fhu0gj" />
|
||||
</bpmn:process>
|
||||
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
||||
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="ComplexNavigation">
|
||||
<bpmndi:BPMNEdge id="Flow_0c4tt8e_di" bpmnElement="Flow_0c4tt8e">
|
||||
<di:waypoint x="1070" y="300" />
|
||||
<di:waypoint x="1118" y="300" />
|
||||
<di:waypoint x="1118" y="290" />
|
||||
<di:waypoint x="1165" y="290" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0qti1ms_di" bpmnElement="Flow_0qti1ms">
|
||||
<di:waypoint x="2625" y="290" />
|
||||
<di:waypoint x="2730" y="290" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0rstqv5_di" bpmnElement="Flow_0rstqv5">
|
||||
<di:waypoint x="1925" y="290" />
|
||||
<di:waypoint x="2040" y="290" />
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="1959" y="272" width="48" height="14" />
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_07vu2b0_di" bpmnElement="Flow_07vu2b0">
|
||||
<di:waypoint x="2510" y="290" />
|
||||
<di:waypoint x="2575" y="290" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0pdoc38_di" bpmnElement="Flow_0pdoc38">
|
||||
<di:waypoint x="2280" y="315" />
|
||||
<di:waypoint x="2280" y="390" />
|
||||
<di:waypoint x="2600" y="390" />
|
||||
<di:waypoint x="2600" y="315" />
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="2427" y="372" width="27" height="14" />
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0ljn2v6_di" bpmnElement="Flow_0ljn2v6">
|
||||
<di:waypoint x="2305" y="290" />
|
||||
<di:waypoint x="2410" y="290" />
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="2334" y="272" width="48" height="14" />
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0a3fjzp_di" bpmnElement="Flow_0a3fjzp">
|
||||
<di:waypoint x="1900" y="265" />
|
||||
<di:waypoint x="1900" y="180" />
|
||||
<di:waypoint x="2280" y="180" />
|
||||
<di:waypoint x="2280" y="265" />
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="2077" y="162" width="27" height="14" />
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0efu6u1_di" bpmnElement="Flow_0efu6u1">
|
||||
<di:waypoint x="2140" y="290" />
|
||||
<di:waypoint x="2255" y="290" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_13zasb1_di" bpmnElement="Flow_13zasb1">
|
||||
<di:waypoint x="1190" y="265" />
|
||||
<di:waypoint x="1190" y="160" />
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="1201" y="178" width="19" height="14" />
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_05g7d16_di" bpmnElement="Flow_05g7d16">
|
||||
<di:waypoint x="1215" y="290" />
|
||||
<di:waypoint x="1350" y="290" />
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="1260" y="272" width="15" height="14" />
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_1ik148z_di" bpmnElement="Flow_1ik148z">
|
||||
<di:waypoint x="1780" y="290" />
|
||||
<di:waypoint x="1875" y="290" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0ygr7cu_di" bpmnElement="Flow_0ygr7cu">
|
||||
<di:waypoint x="1540" y="315" />
|
||||
<di:waypoint x="1540" y="400" />
|
||||
<di:waypoint x="1900" y="400" />
|
||||
<di:waypoint x="1900" y="315" />
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="1716" y="383" width="27" height="14" />
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_12oux1f_di" bpmnElement="Flow_12oux1f">
|
||||
<di:waypoint x="1565" y="290" />
|
||||
<di:waypoint x="1680" y="290" />
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="1593" y="273" width="48" height="14" />
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_1d4sb3d_di" bpmnElement="Flow_1d4sb3d">
|
||||
<di:waypoint x="1450" y="290" />
|
||||
<di:waypoint x="1515" y="290" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0cqbu1f_di" bpmnElement="Flow_0cqbu1f">
|
||||
<di:waypoint x="1240" y="120" />
|
||||
<di:waypoint x="1540" y="120" />
|
||||
<di:waypoint x="1540" y="260" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_1g7q28p_di" bpmnElement="Flow_1g7q28p">
|
||||
<di:waypoint x="2600" y="265" />
|
||||
<di:waypoint x="2600" y="200" />
|
||||
<di:waypoint x="2950" y="200" />
|
||||
<di:waypoint x="2950" y="272" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_15xpsq8_di" bpmnElement="Flow_15xpsq8">
|
||||
<di:waypoint x="2830" y="290" />
|
||||
<di:waypoint x="2932" y="290" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_1seuuie_di" bpmnElement="Flow_1seuuie">
|
||||
<di:waypoint x="420" y="300" />
|
||||
<di:waypoint x="525" y="300" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0ssrpqx_di" bpmnElement="Flow_0ssrpqx">
|
||||
<di:waypoint x="840" y="470" />
|
||||
<di:waypoint x="840" y="435" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0a626ba_di" bpmnElement="Flow_0a626ba">
|
||||
<di:waypoint x="840" y="605" />
|
||||
<di:waypoint x="840" y="550" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_1fqtd41_di" bpmnElement="Flow_1fqtd41">
|
||||
<di:waypoint x="980" y="690" />
|
||||
<di:waypoint x="980" y="630" />
|
||||
<di:waypoint x="865" y="630" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0lnb8jw_di" bpmnElement="Flow_0lnb8jw">
|
||||
<di:waypoint x="840" y="690" />
|
||||
<di:waypoint x="840" y="655" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0h955ao_di" bpmnElement="Flow_0h955ao">
|
||||
<di:waypoint x="865" y="840" />
|
||||
<di:waypoint x="980" y="840" />
|
||||
<di:waypoint x="980" y="770" />
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="989" y="793" width="23" height="14" />
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0nzochy_di" bpmnElement="Flow_0nzochy">
|
||||
<di:waypoint x="840" y="815" />
|
||||
<di:waypoint x="840" y="770" />
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="847" y="793" width="45" height="14" />
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_03s8gvx_di" bpmnElement="Flow_03s8gvx">
|
||||
<di:waypoint x="865" y="840" />
|
||||
<di:waypoint x="1070" y="840" />
|
||||
<di:waypoint x="1070" y="410" />
|
||||
<di:waypoint x="865" y="410" />
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="1078" y="613" width="15" height="14" />
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0nmpxmc_di" bpmnElement="Flow_0nmpxmc">
|
||||
<di:waypoint x="840" y="910" />
|
||||
<di:waypoint x="840" y="865" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0mf9npl_di" bpmnElement="Flow_0mf9npl">
|
||||
<di:waypoint x="840" y="1060" />
|
||||
<di:waypoint x="840" y="990" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_1dh8c45_di" bpmnElement="Flow_1dh8c45">
|
||||
<di:waypoint x="600" y="1100" />
|
||||
<di:waypoint x="790" y="1100" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_185jvp3_di" bpmnElement="Flow_185jvp3">
|
||||
<di:waypoint x="550" y="865" />
|
||||
<di:waypoint x="550" y="1060" />
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="522" y="943" width="15" height="14" />
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_1oriwwz_di" bpmnElement="Flow_1oriwwz">
|
||||
<di:waypoint x="575" y="840" />
|
||||
<di:waypoint x="815" y="840" />
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="611" y="823" width="19" height="14" />
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_1y9edqt_di" bpmnElement="Flow_1y9edqt">
|
||||
<di:waypoint x="550" y="325" />
|
||||
<di:waypoint x="550" y="815" />
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="522" y="701" width="15" height="14" />
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_02614fd_di" bpmnElement="Flow_02614fd">
|
||||
<di:waypoint x="890" y="300" />
|
||||
<di:waypoint x="970" y="300" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0tnnt3b_di" bpmnElement="Flow_0tnnt3b">
|
||||
<di:waypoint x="840" y="385" />
|
||||
<di:waypoint x="840" y="340" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_1ni06mz_di" bpmnElement="Flow_1ni06mz">
|
||||
<di:waypoint x="575" y="300" />
|
||||
<di:waypoint x="790" y="300" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_1y4gjsg_di" bpmnElement="Flow_1y4gjsg">
|
||||
<di:waypoint x="700" y="690" />
|
||||
<di:waypoint x="700" y="630" />
|
||||
<di:waypoint x="815" y="630" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_12obxbo_di" bpmnElement="Flow_12obxbo">
|
||||
<di:waypoint x="815" y="840" />
|
||||
<di:waypoint x="700" y="840" />
|
||||
<di:waypoint x="700" y="770" />
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="705" y="793" width="49" height="14" />
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0kcrx5l_di" bpmnElement="Flow_0kcrx5l">
|
||||
<di:waypoint x="188" y="300" />
|
||||
<di:waypoint x="320" y="300" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
|
||||
<dc:Bounds x="152" y="282" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_1j808ka_di" bpmnElement="Step1">
|
||||
<dc:Bounds x="320" y="260" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_0obertf_di" bpmnElement="Activity_0obertf">
|
||||
<dc:Bounds x="650" y="690" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_0vmy33u_di" bpmnElement="Activity_0vmy33u">
|
||||
<dc:Bounds x="970" y="260" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Gateway_0ubqopr_di" bpmnElement="Gateway_0ubqopr" isMarkerVisible="true">
|
||||
<dc:Bounds x="525" y="275" width="50" height="50" />
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="506" y="180" width="88" height="80" />
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Gateway_13vtxns_di" bpmnElement="Gateway_13vtxns" isMarkerVisible="true">
|
||||
<dc:Bounds x="525" y="815" width="50" height="50" />
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="1014" y="423" width="72" height="14" />
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_08ldcxm_di" bpmnElement="Activity_08ldcxm">
|
||||
<dc:Bounds x="500" y="1060" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_08pywzy_di" bpmnElement="Activity_08pywzy">
|
||||
<dc:Bounds x="790" y="1060" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Gateway_12qlux1_di" bpmnElement="Gateway_12qlux1" isMarkerVisible="true">
|
||||
<dc:Bounds x="815" y="815" width="50" height="50" />
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="855" y="856" width="70" height="27" />
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Gateway_02h27h5_di" bpmnElement="Gateway_02h27h5" isMarkerVisible="true">
|
||||
<dc:Bounds x="815" y="605" width="50" height="50" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_0nkgcfg_di" bpmnElement="Activity_0nkgcfg">
|
||||
<dc:Bounds x="790" y="470" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_16q24p2_di" bpmnElement="Activity_16q24p2">
|
||||
<dc:Bounds x="790" y="690" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_0nv1s23_di" bpmnElement="Activity_0nv1s23">
|
||||
<dc:Bounds x="930" y="690" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_0xa6vms_di" bpmnElement="Activity_0xa6vms">
|
||||
<dc:Bounds x="790" y="910" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Gateway_12sb0pk_di" bpmnElement="Gateway_12sb0pk" isMarkerVisible="true">
|
||||
<dc:Bounds x="815" y="385" width="50" height="50" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_1rtabpz_di" bpmnElement="Activity_0whcncc">
|
||||
<dc:Bounds x="790" y="260" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Event_0l7thbn_di" bpmnElement="Event_0l7thbn">
|
||||
<dc:Bounds x="2932" y="272" width="36" height="36" />
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="2940" y="318" width="20" height="14" />
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Gateway_0ym1uow_di" bpmnElement="Gateway_0ym1uow" isMarkerVisible="true">
|
||||
<dc:Bounds x="1515" y="265" width="50" height="50" />
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="1545" y="309" width="70" height="40" />
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_0l7vq1i_di" bpmnElement="Activity_0l7vq1i">
|
||||
<dc:Bounds x="1680" y="250" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Gateway_1fhu0gj_di" bpmnElement="Gateway_1fhu0gj" isMarkerVisible="true">
|
||||
<dc:Bounds x="1165" y="265" width="50" height="50" />
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="1148" y="322" width="84" height="14" />
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_17ikhsk_di" bpmnElement="Activity_17ikhsk">
|
||||
<dc:Bounds x="1140" y="80" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Gateway_1ykz8u2_di" bpmnElement="Gateway_1ykz8u2" isMarkerVisible="true">
|
||||
<dc:Bounds x="2255" y="265" width="50" height="50" />
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="2300" y="315" width="79" height="27" />
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_0rcrs1i_di" bpmnElement="Activity_0rcrs1i">
|
||||
<dc:Bounds x="2410" y="250" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Gateway_1h4d4n5_di" bpmnElement="Gateway_1h4d4n5" isMarkerVisible="true">
|
||||
<dc:Bounds x="1875" y="265" width="50" height="50" />
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="1915" y="309" width="70" height="40" />
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_0tbvw9o_di" bpmnElement="Activity_0tbvw9o">
|
||||
<dc:Bounds x="2040" y="250" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Gateway_0gjk91e_di" bpmnElement="Gateway_0gjk91e" isMarkerVisible="true">
|
||||
<dc:Bounds x="2575" y="265" width="50" height="50" />
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="2622" y="309" width="56" height="40" />
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_1uzsp1r_di" bpmnElement="Activity_1uzsp1r">
|
||||
<dc:Bounds x="2730" y="250" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_0otiy71_di" bpmnElement="Activity_0otiy71">
|
||||
<dc:Bounds x="1350" y="250" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
</bpmndi:BPMNPlane>
|
||||
</bpmndi:BPMNDiagram>
|
||||
</bpmn:definitions>
|
|
@ -1,143 +0,0 @@
|
|||
<?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_06pyjz2" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.7.3">
|
||||
<bpmn:process id="ExclusiveGatewayMultipleEndNavigation" isExecutable="true">
|
||||
<bpmn:startEvent id="StartEvent_1">
|
||||
<bpmn:outgoing>Flow_0kcrx5l</bpmn:outgoing>
|
||||
</bpmn:startEvent>
|
||||
<bpmn:userTask id="Jabberwocky" name="Step 2" camunda:formKey="PI_Info">
|
||||
<bpmn:documentation>##### Please confirm Primary Investigator entered in Protocol Builder is correct and if so, provide additional information:
|
||||
### **{{ pi.display_name }}**
|
||||
***Email:*** {{ pi.email_address }}
|
||||
|
||||
**Primary Appointment**
|
||||
***School:*** {{ pi.E0.schoolName }}
|
||||
***Department:*** {{ pi.E0.deptName }}
|
||||
|
||||
|
||||
{% if is_me_pi %}
|
||||
Since you are the person entering this information, you already have access and will receive all emails.
|
||||
{% endif %}</bpmn:documentation>
|
||||
<bpmn:extensionElements>
|
||||
<camunda:formData>
|
||||
<camunda:formField id="pi.experience" label="Investigator's Experience" type="textarea">
|
||||
<camunda:properties>
|
||||
<camunda:property id="rows" value="5" />
|
||||
</camunda:properties>
|
||||
</camunda:formField>
|
||||
<camunda:formField id="pi.access" label="Should the Principal Investigator have full editing access in the system?" type="boolean" defaultValue="True">
|
||||
<camunda:properties>
|
||||
<camunda:property id="hide_expression" value="is_cu_pi" />
|
||||
</camunda:properties>
|
||||
</camunda:formField>
|
||||
<camunda:formField id="pi.emails" label="Should the Principal Investigator receive automated email notifications?" type="boolean" defaultValue="True">
|
||||
<camunda:properties>
|
||||
<camunda:property id="hide_expression" value="is_cu_pi" />
|
||||
</camunda:properties>
|
||||
</camunda:formField>
|
||||
<camunda:formField id="PIsPrimaryDepartmentSameAsRO" label="Is the PI's Primary Department the same as the study's Responsible Organization?" type="enum" defaultValue="yes">
|
||||
<camunda:properties>
|
||||
<camunda:property id="enum_type" value="radio" />
|
||||
</camunda:properties>
|
||||
<camunda:value id="yes" name="Yes" />
|
||||
<camunda:value id="diffDept" name="No, it is a different Department within the same School" />
|
||||
<camunda:value id="diffSchool" name="No, it is a different School" />
|
||||
</camunda:formField>
|
||||
</camunda:formData>
|
||||
<camunda:properties>
|
||||
<camunda:property name="display_name" value="pi.label" />
|
||||
</camunda:properties>
|
||||
</bpmn:extensionElements>
|
||||
<bpmn:incoming>Flow_147b9li</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0xnj2rp</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:sequenceFlow id="Flow_0kcrx5l" sourceRef="StartEvent_1" targetRef="Step1" />
|
||||
<bpmn:sequenceFlow id="Flow_1dcsioh" sourceRef="Step1" targetRef="Gateway" />
|
||||
<bpmn:exclusiveGateway id="Gateway" name="GatewayToEnd">
|
||||
<bpmn:incoming>Flow_1dcsioh</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_147b9li</bpmn:outgoing>
|
||||
<bpmn:outgoing>Flow_00prawo</bpmn:outgoing>
|
||||
</bpmn:exclusiveGateway>
|
||||
<bpmn:sequenceFlow id="Flow_147b9li" name="True" sourceRef="Gateway" targetRef="Jabberwocky">
|
||||
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">tru</bpmn:conditionExpression>
|
||||
</bpmn:sequenceFlow>
|
||||
<bpmn:sequenceFlow id="Flow_00prawo" name="False" sourceRef="Gateway" targetRef="StepEnd">
|
||||
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">false</bpmn:conditionExpression>
|
||||
</bpmn:sequenceFlow>
|
||||
<bpmn:endEvent id="Event_0npjf2p">
|
||||
<bpmn:incoming>Flow_16qr5jf</bpmn:incoming>
|
||||
</bpmn:endEvent>
|
||||
<bpmn:sequenceFlow id="Flow_16qr5jf" sourceRef="StepEnd" targetRef="Event_0npjf2p" />
|
||||
<bpmn:userTask id="Step1" name="Step 1">
|
||||
<bpmn:incoming>Flow_0kcrx5l</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_1dcsioh</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:userTask id="StepEnd" name="Step End">
|
||||
<bpmn:documentation>No PI entered in PB</bpmn:documentation>
|
||||
<bpmn:incoming>Flow_00prawo</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_16qr5jf</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:endEvent id="Event_1d1c7ov">
|
||||
<bpmn:incoming>Flow_0xnj2rp</bpmn:incoming>
|
||||
</bpmn:endEvent>
|
||||
<bpmn:sequenceFlow id="Flow_0xnj2rp" sourceRef="Jabberwocky" targetRef="Event_1d1c7ov" />
|
||||
</bpmn:process>
|
||||
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
||||
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="ExclusiveGatewayMultipleEndNavigation">
|
||||
<bpmndi:BPMNEdge id="Flow_16qr5jf_di" bpmnElement="Flow_16qr5jf">
|
||||
<di:waypoint x="740" y="150" />
|
||||
<di:waypoint x="822" y="150" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_00prawo_di" bpmnElement="Flow_00prawo">
|
||||
<di:waypoint x="510" y="265" />
|
||||
<di:waypoint x="510" y="150" />
|
||||
<di:waypoint x="640" y="150" />
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="477" y="204" width="27" height="14" />
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_147b9li_di" bpmnElement="Flow_147b9li">
|
||||
<di:waypoint x="535" y="290" />
|
||||
<di:waypoint x="640" y="290" />
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="537" y="273" width="23" height="14" />
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_1dcsioh_di" bpmnElement="Flow_1dcsioh">
|
||||
<di:waypoint x="410" y="290" />
|
||||
<di:waypoint x="485" y="290" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0kcrx5l_di" bpmnElement="Flow_0kcrx5l">
|
||||
<di:waypoint x="188" y="290" />
|
||||
<di:waypoint x="310" y="290" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0xnj2rp_di" bpmnElement="Flow_0xnj2rp">
|
||||
<di:waypoint x="740" y="290" />
|
||||
<di:waypoint x="822" y="290" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
|
||||
<dc:Bounds x="152" y="272" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Gateway_0qzf1r3_di" bpmnElement="Gateway" isMarkerVisible="true">
|
||||
<dc:Bounds x="485" y="265" width="50" height="50" />
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="475" y="322" width="75" height="14" />
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Event_0npjf2p_di" bpmnElement="Event_0npjf2p">
|
||||
<dc:Bounds x="822" y="132" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_0d622qi_di" bpmnElement="Jabberwocky">
|
||||
<dc:Bounds x="640" y="250" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_1j808ka_di" bpmnElement="Step1">
|
||||
<dc:Bounds x="310" y="250" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_0efoaut_di" bpmnElement="StepEnd">
|
||||
<dc:Bounds x="640" y="110" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Event_1d1c7ov_di" bpmnElement="Event_1d1c7ov">
|
||||
<dc:Bounds x="822" y="272" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
</bpmndi:BPMNPlane>
|
||||
</bpmndi:BPMNDiagram>
|
||||
</bpmn:definitions>
|
File diff suppressed because it is too large
Load Diff
|
@ -1,39 +0,0 @@
|
|||
<?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" id="Definitions_1hbo0hp" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.7.0">
|
||||
<bpmn:process id="CommonActivity" name="CommonActivity_a" isExecutable="true">
|
||||
<bpmn:startEvent id="StartEvent_1">
|
||||
<bpmn:outgoing>Flow_0xpz6la</bpmn:outgoing>
|
||||
</bpmn:startEvent>
|
||||
<bpmn:scriptTask id="Activity_0bt6ln9" name="print('complicated common task')">
|
||||
<bpmn:incoming>Flow_0xpz6la</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_03yam6h</bpmn:outgoing>
|
||||
<bpmn:script>print('complicated common task')</bpmn:script>
|
||||
</bpmn:scriptTask>
|
||||
<bpmn:sequenceFlow id="Flow_0xpz6la" sourceRef="StartEvent_1" targetRef="Activity_0bt6ln9" />
|
||||
<bpmn:endEvent id="Event_1m1s0k4">
|
||||
<bpmn:incoming>Flow_03yam6h</bpmn:incoming>
|
||||
</bpmn:endEvent>
|
||||
<bpmn:sequenceFlow id="Flow_03yam6h" sourceRef="Activity_0bt6ln9" targetRef="Event_1m1s0k4" />
|
||||
</bpmn:process>
|
||||
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
||||
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="CommonActivity">
|
||||
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
|
||||
<dc:Bounds x="179" y="99" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_1mbn0zk_di" bpmnElement="Activity_0bt6ln9">
|
||||
<dc:Bounds x="240" y="77" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge id="Flow_0xpz6la_di" bpmnElement="Flow_0xpz6la">
|
||||
<di:waypoint x="215" y="117" />
|
||||
<di:waypoint x="240" y="117" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNShape id="Event_1m1s0k4_di" bpmnElement="Event_1m1s0k4">
|
||||
<dc:Bounds x="372" y="99" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge id="Flow_03yam6h_di" bpmnElement="Flow_03yam6h">
|
||||
<di:waypoint x="340" y="117" />
|
||||
<di:waypoint x="372" y="117" />
|
||||
</bpmndi:BPMNEdge>
|
||||
</bpmndi:BPMNPlane>
|
||||
</bpmndi:BPMNDiagram>
|
||||
</bpmn:definitions>
|
|
@ -1,336 +0,0 @@
|
|||
<?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:process id="rrt" isExecutable="true">
|
||||
<bpmn:startEvent id="StartEvent_1">
|
||||
<bpmn:outgoing>SequenceFlow_05ja25w</bpmn:outgoing>
|
||||
</bpmn:startEvent>
|
||||
<bpmn:manualTask id="ManualTask_1ofy9yz" name="Read RRP Instructions">
|
||||
<bpmn:documentation>### UNIVERSITY OF VIRGINIA RESEARCH
|
||||
#### Research Ramp-up Plan
|
||||
|
||||
|
||||
As we plan for the resumption of on-grounds research, PIs are required to develop a Research Ramp-up Plan. Please use the ramp-up guidance provided to lay out your plan(s) to manage operations while prioritizing physical distancing, staggered work shifts to reduce group size, remote work, and other exposure-reducing measures.
|
||||
|
||||
|
||||
Plans must be submitted to the Office of Research by Monday, May ?? for consideration in the first round of approvals. Plans will then be reviewed on a rolling basis going forward.
|
||||
|
||||
|
||||
Instructions for Submitting:
|
||||
|
||||
|
||||
1. Add a Request for each lab space you manage in a building. If your lab spans multiple rooms or floors in a single building, one request will be required for that lab. If your lab spans multipe buildings, one request for each building will be required for that lab. The primary reason for this differentiation is that in addition to obtaining approval to restart operations, this information will also be used after start up to assist with any contact tracing that may be needed.
|
||||
|
||||
|
||||
2. Select each Request added and step through each form presented, responding to all required and applicable fields. You may be presented with different questions if activities in each lab differ.
|
||||
|
||||
|
||||
3. After all forms have been completed, you will be presented with the option to create your Research Recovery Plan in Word format. Download the document and review it. If you see any corrections that need to be made, return to the coresponding form and make the correction.
|
||||
|
||||
|
||||
4. Once the generated Research Recovery Plan is finalize, use the web site to submit it to the Office of the Vice President for Research for review.
|
||||
|
||||
|
||||
Please submit questions on the Research Support website.</bpmn:documentation>
|
||||
<bpmn:incoming>SequenceFlow_05ja25w</bpmn:incoming>
|
||||
<bpmn:outgoing>SequenceFlow_0h50bp3</bpmn:outgoing>
|
||||
</bpmn:manualTask>
|
||||
<bpmn:userTask id="AddInfo" name="Enter Submission Info" camunda:formKey="Submission Info">
|
||||
<bpmn:extensionElements>
|
||||
<camunda:formData>
|
||||
<camunda:formField id="ComputingID" label="UVA Computing ID of Primary Investigator" type="string">
|
||||
<camunda:properties>
|
||||
<camunda:property id="placeholder" value="cdr9c" />
|
||||
</camunda:properties>
|
||||
<camunda:validation>
|
||||
<camunda:constraint name="required" config="true" />
|
||||
<camunda:constraint name="description" config="You may search by entering Compuingr ID or Last Name." />
|
||||
</camunda:validation>
|
||||
</camunda:formField>
|
||||
<camunda:formField id="LabName" label="Lab Name" type="string">
|
||||
<camunda:properties>
|
||||
<camunda:property id="description" value="Enter the name of the lab." />
|
||||
</camunda:properties>
|
||||
<camunda:validation>
|
||||
<camunda:constraint name="required" config="true" />
|
||||
</camunda:validation>
|
||||
</camunda:formField>
|
||||
<camunda:formField id="Building" type="autocomplete">
|
||||
<camunda:properties>
|
||||
<camunda:property id="description" value="Select the building in which the lab is located." />
|
||||
<camunda:property id="enum.options.file" value="BuildingList.xls" />
|
||||
<camunda:property id="enum.options.value.column" value="Value" />
|
||||
<camunda:property id="enum.options.label.column" value="Building Name" />
|
||||
<camunda:property id="enum.options.lookup" value="True" />
|
||||
</camunda:properties>
|
||||
<camunda:validation>
|
||||
<camunda:constraint name="Required" config="true" />
|
||||
</camunda:validation>
|
||||
</camunda:formField>
|
||||
</camunda:formData>
|
||||
</bpmn:extensionElements>
|
||||
<bpmn:incoming>SequenceFlow_0h50bp3</bpmn:incoming>
|
||||
<bpmn:outgoing>SequenceFlow_0bqu7pp</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:sequenceFlow id="SequenceFlow_0h50bp3" sourceRef="ManualTask_1ofy9yz" targetRef="AddInfo" />
|
||||
<bpmn:sequenceFlow id="SequenceFlow_05ja25w" sourceRef="StartEvent_1" targetRef="ManualTask_1ofy9yz" />
|
||||
<bpmn:sequenceFlow id="SequenceFlow_0bqu7pp" sourceRef="AddInfo" targetRef="LabInfo" />
|
||||
<bpmn:userTask id="LabInfo" name="Enter Lab Details" camunda:formKey="Lab Details">
|
||||
<bpmn:documentation>### {{ LabName }}
|
||||
#### Lab details
|
||||
|
||||
|
||||
Your response to these questions will determine if you do or do not provide additional information regarding each topic later.</bpmn:documentation>
|
||||
<bpmn:extensionElements>
|
||||
<camunda:formData>
|
||||
<camunda:formField id="isHumanResearch" label="Human Research" type="boolean">
|
||||
<camunda:properties>
|
||||
<camunda:property id="description" value="Does this lab's research involve human subjects?" />
|
||||
<camunda:property id="required" value="true" />
|
||||
</camunda:properties>
|
||||
<camunda:validation>
|
||||
<camunda:constraint name="required" config="true" />
|
||||
</camunda:validation>
|
||||
</camunda:formField>
|
||||
<camunda:formField id="isAnimalUse" label="Animal Use" type="boolean">
|
||||
<camunda:properties>
|
||||
<camunda:property id="description" value="Do you use animals in your work?" />
|
||||
<camunda:property id="required" value="true" />
|
||||
</camunda:properties>
|
||||
</camunda:formField>
|
||||
<camunda:formField id="isSharedLab" label="Shared Lab" type="boolean">
|
||||
<camunda:properties>
|
||||
<camunda:property id="description" value="Is your lab shared with another researcher?" />
|
||||
<camunda:property id="required" value="true" />
|
||||
</camunda:properties>
|
||||
</camunda:formField>
|
||||
<camunda:formField id="isSharedSpace" label="Shared Space" type="boolean">
|
||||
<camunda:properties>
|
||||
<camunda:property id="description" value="Do you use any shared spaces with other labs?" />
|
||||
<camunda:property id="required" value="true" />
|
||||
</camunda:properties>
|
||||
</camunda:formField>
|
||||
<camunda:formField id="isGrantSupport" label="Grant Support" type="boolean">
|
||||
<camunda:properties>
|
||||
<camunda:property id="required" value="true" />
|
||||
<camunda:property id="description" value="Are any of the studies in your lab that will be restarted supported by grants?" />
|
||||
</camunda:properties>
|
||||
</camunda:formField>
|
||||
</camunda:formData>
|
||||
</bpmn:extensionElements>
|
||||
<bpmn:incoming>SequenceFlow_0bqu7pp</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0scfmzc</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:endEvent id="EndEvent_09wp7av">
|
||||
<bpmn:incoming>SequenceFlow_1qtrgbv</bpmn:incoming>
|
||||
</bpmn:endEvent>
|
||||
<bpmn:sequenceFlow id="Flow_1e2qi9s" sourceRef="Activity_0rv3far" targetRef="Task_1cw2y6r" />
|
||||
<bpmn:manualTask id="Activity_0rv3far" name="Review Plan">
|
||||
<bpmn:documentation>Review plan, make changes if needed, continue of ready to submit.</bpmn:documentation>
|
||||
<bpmn:incoming>Flow_1b6vbkk</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_1e2qi9s</bpmn:outgoing>
|
||||
</bpmn:manualTask>
|
||||
<bpmn:sequenceFlow id="SequenceFlow_1qtrgbv" sourceRef="Task_1cw2y6r" targetRef="EndEvent_09wp7av" />
|
||||
<bpmn:scriptTask id="Task_1cw2y6r" name="Generate RRP">
|
||||
<bpmn:incoming>Flow_1e2qi9s</bpmn:incoming>
|
||||
<bpmn:outgoing>SequenceFlow_1qtrgbv</bpmn:outgoing>
|
||||
<bpmn:script>CompleteTemplate ResearchRecoveryPlan.docx RESEARCH_RECOVERY</bpmn:script>
|
||||
</bpmn:scriptTask>
|
||||
<bpmn:userTask id="UserTask_0ww2o4i" name="Enter Animal Research Info" camunda:formKey="Animal Research">
|
||||
<bpmn:extensionElements>
|
||||
<camunda:formData>
|
||||
<camunda:formField id="AnimalTimeline" label="Animal Timeline" type="textarea">
|
||||
<camunda:properties>
|
||||
<camunda:property id="description" value="Please describe the timeline for animal colony regeneration and what needs you will have for services from the ASC, including routine and specialty services." />
|
||||
<camunda:property id="rows" value="10" />
|
||||
<camunda:property id="help" value="[EHS Lab Ramp up Checklist for Laboratories](https://research.virginia.edu/sites/vpr/files/2020-05/EHS.LabRampUpChecklistForLaboratories_0_0.pdf)\n#### Animal Care\n- Communicate with your vivarium manager prior to restarting animal research.\n- Confirm inventory of controlled substances and proper documentation." />
|
||||
</camunda:properties>
|
||||
</camunda:formField>
|
||||
<camunda:formField id="AnimalOrder" label="Animal Order" type="enum">
|
||||
<camunda:properties>
|
||||
<camunda:property id="description" value="When will you need to order animals again? Give time frame relative to the date of completion of this form." />
|
||||
</camunda:properties>
|
||||
<camunda:value id="immediately" name="Immediately" />
|
||||
<camunda:value id="weeks_1to2" name="1 to 2 weeks" />
|
||||
<camunda:value id="weeks_3to4" name="3 to 4 weeks" />
|
||||
<camunda:value id="weeks_5to8" name="5 to 8 weeks" />
|
||||
<camunda:value id="weeks_more_than_8" name="More than 8 weeks" />
|
||||
</camunda:formField>
|
||||
<camunda:formField id="Animal Housing Access" label="Animal Housing Access" type="enum">
|
||||
<camunda:properties>
|
||||
<camunda:property id="description" value="When do you anticipate entering the animal housing facility? Give an estimated time frame based on the date of resumption of research activity." />
|
||||
<camunda:property id="Property_1km3ge3" />
|
||||
</camunda:properties>
|
||||
<camunda:value id="ASAP" name="As soon as possible" />
|
||||
<camunda:value id="weeks_1to2" name="1 to 2 weeks" />
|
||||
<camunda:value id="weeks_3to4" name="3 to 4 weeks" />
|
||||
<camunda:value id="weeks_5to8" name="5 to 8 weeks" />
|
||||
<camunda:value id="weeks_more_than_8" name="More than 8 weeks" />
|
||||
</camunda:formField>
|
||||
</camunda:formData>
|
||||
</bpmn:extensionElements>
|
||||
<bpmn:incoming>Flow_0so3402</bpmn:incoming>
|
||||
<bpmn:outgoing>SequenceFlow_1yi9lig</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:exclusiveGateway id="Gateway_191l7i1" name="Are Animals Used?">
|
||||
<bpmn:incoming>Flow_0scfmzc</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0so3402</bpmn:outgoing>
|
||||
<bpmn:outgoing>Flow_0141rp3</bpmn:outgoing>
|
||||
</bpmn:exclusiveGateway>
|
||||
<bpmn:sequenceFlow id="Flow_0so3402" name="Yes" sourceRef="Gateway_191l7i1" targetRef="UserTask_0ww2o4i">
|
||||
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">isAnimalUse == True</bpmn:conditionExpression>
|
||||
</bpmn:sequenceFlow>
|
||||
<bpmn:userTask id="UserTask_1cx8349" name="Enter Grant Support" camunda:formKey="GrantSupport">
|
||||
<bpmn:extensionElements>
|
||||
<camunda:formData>
|
||||
<camunda:formField id="Grants" label="Grants" type="textarea">
|
||||
<camunda:properties>
|
||||
<camunda:property id="rows" value="10" />
|
||||
<camunda:property id="description" value="What is the status of your grant support and timelines associated with each grant?" />
|
||||
<camunda:property id="help" value="Example: NIH Award R01xxxxx; project period through mm/dd/yy: Brief notes on grant status if applicable" />
|
||||
</camunda:properties>
|
||||
</camunda:formField>
|
||||
</camunda:formData>
|
||||
</bpmn:extensionElements>
|
||||
<bpmn:incoming>Flow_1121pfu</bpmn:incoming>
|
||||
<bpmn:outgoing>SequenceFlow_1b4non2</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:exclusiveGateway id="Gateway_06s8ygl" name="Grant support?">
|
||||
<bpmn:incoming>Flow_0141rp3</bpmn:incoming>
|
||||
<bpmn:incoming>SequenceFlow_1yi9lig</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_1121pfu</bpmn:outgoing>
|
||||
<bpmn:outgoing>SequenceFlow_1wp5zmg</bpmn:outgoing>
|
||||
</bpmn:exclusiveGateway>
|
||||
<bpmn:sequenceFlow id="Flow_1121pfu" name="Yes" sourceRef="Gateway_06s8ygl" targetRef="UserTask_1cx8349">
|
||||
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">isGrantSupport == True</bpmn:conditionExpression>
|
||||
</bpmn:sequenceFlow>
|
||||
<bpmn:exclusiveGateway id="Gateway_01p9hbs">
|
||||
<bpmn:incoming>SequenceFlow_1b4non2</bpmn:incoming>
|
||||
<bpmn:incoming>SequenceFlow_1wp5zmg</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_1b6vbkk</bpmn:outgoing>
|
||||
</bpmn:exclusiveGateway>
|
||||
<bpmn:sequenceFlow id="Flow_1b6vbkk" sourceRef="Gateway_01p9hbs" targetRef="Activity_0rv3far" />
|
||||
<bpmn:sequenceFlow id="SequenceFlow_1b4non2" sourceRef="UserTask_1cx8349" targetRef="Gateway_01p9hbs" />
|
||||
<bpmn:sequenceFlow id="SequenceFlow_1wp5zmg" name="No" sourceRef="Gateway_06s8ygl" targetRef="Gateway_01p9hbs">
|
||||
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">isGrantSupport == False</bpmn:conditionExpression>
|
||||
</bpmn:sequenceFlow>
|
||||
<bpmn:sequenceFlow id="Flow_0scfmzc" sourceRef="LabInfo" targetRef="Gateway_191l7i1" />
|
||||
<bpmn:sequenceFlow id="Flow_0141rp3" name="No" sourceRef="Gateway_191l7i1" targetRef="Gateway_06s8ygl">
|
||||
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">isAnimalUse == False</bpmn:conditionExpression>
|
||||
</bpmn:sequenceFlow>
|
||||
<bpmn:sequenceFlow id="SequenceFlow_1yi9lig" sourceRef="UserTask_0ww2o4i" targetRef="Gateway_06s8ygl" />
|
||||
</bpmn:process>
|
||||
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
||||
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="rrt">
|
||||
<bpmndi:BPMNEdge id="SequenceFlow_0bqu7pp_di" bpmnElement="SequenceFlow_0bqu7pp">
|
||||
<di:waypoint x="520" y="187" />
|
||||
<di:waypoint x="580" y="187" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="SequenceFlow_05ja25w_di" bpmnElement="SequenceFlow_05ja25w">
|
||||
<di:waypoint x="188" y="187" />
|
||||
<di:waypoint x="260" y="187" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="SequenceFlow_0h50bp3_di" bpmnElement="SequenceFlow_0h50bp3">
|
||||
<di:waypoint x="360" y="187" />
|
||||
<di:waypoint x="420" y="187" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="SequenceFlow_1qtrgbv_di" bpmnElement="SequenceFlow_1qtrgbv">
|
||||
<di:waypoint x="1710" y="187" />
|
||||
<di:waypoint x="1762" y="187" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_1b6vbkk_di" bpmnElement="Flow_1b6vbkk">
|
||||
<di:waypoint x="1385" y="187" />
|
||||
<di:waypoint x="1460" y="187" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_1e2qi9s_di" bpmnElement="Flow_1e2qi9s">
|
||||
<di:waypoint x="1560" y="187" />
|
||||
<di:waypoint x="1610" y="187" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="SequenceFlow_1yi9lig_di" bpmnElement="SequenceFlow_1yi9lig">
|
||||
<di:waypoint x="990" y="187" />
|
||||
<di:waypoint x="1075" y="187" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0141rp3_di" bpmnElement="Flow_0141rp3">
|
||||
<di:waypoint x="800" y="212" />
|
||||
<di:waypoint x="800" y="280" />
|
||||
<di:waypoint x="1100" y="280" />
|
||||
<di:waypoint x="1100" y="212" />
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="936" y="263" width="15" height="14" />
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0so3402_di" bpmnElement="Flow_0so3402">
|
||||
<di:waypoint x="825" y="187" />
|
||||
<di:waypoint x="890" y="187" />
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="849" y="169" width="19" height="14" />
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_1121pfu_di" bpmnElement="Flow_1121pfu">
|
||||
<di:waypoint x="1125" y="187" />
|
||||
<di:waypoint x="1190" y="187" />
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="1149" y="169" width="19" height="14" />
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="SequenceFlow_1b4non2_di" bpmnElement="SequenceFlow_1b4non2">
|
||||
<di:waypoint x="1290" y="187" />
|
||||
<di:waypoint x="1335" y="187" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="SequenceFlow_1wp5zmg_di" bpmnElement="SequenceFlow_1wp5zmg">
|
||||
<di:waypoint x="1100" y="212" />
|
||||
<di:waypoint x="1100" y="280" />
|
||||
<di:waypoint x="1360" y="280" />
|
||||
<di:waypoint x="1360" y="212" />
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="1192" y="262" width="15" height="14" />
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0scfmzc_di" bpmnElement="Flow_0scfmzc">
|
||||
<di:waypoint x="680" y="187" />
|
||||
<di:waypoint x="775" y="187" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
|
||||
<dc:Bounds x="152" y="169" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="ManualTask_1ofy9yz_di" bpmnElement="ManualTask_1ofy9yz">
|
||||
<dc:Bounds x="260" y="147" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="UserTask_0xdpoxl_di" bpmnElement="AddInfo">
|
||||
<dc:Bounds x="420" y="147" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="UserTask_0nu5cww_di" bpmnElement="LabInfo">
|
||||
<dc:Bounds x="580" y="147" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Gateway_191l7i1_di" bpmnElement="Gateway_191l7i1" isMarkerVisible="true">
|
||||
<dc:Bounds x="775" y="162" width="50" height="50" />
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="770" y="125" width="60" height="27" />
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="UserTask_0ww2o4i_di" bpmnElement="UserTask_0ww2o4i">
|
||||
<dc:Bounds x="890" y="147" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Gateway_06s8ygl_di" bpmnElement="Gateway_06s8ygl" isMarkerVisible="true">
|
||||
<dc:Bounds x="1075" y="162" width="50" height="50" />
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="1063" y="133" width="74" height="14" />
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="UserTask_1cx8349_di" bpmnElement="UserTask_1cx8349">
|
||||
<dc:Bounds x="1190" y="147" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_1mg5lp9_di" bpmnElement="Activity_0rv3far">
|
||||
<dc:Bounds x="1460" y="147" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="EndEvent_09wp7av_di" bpmnElement="EndEvent_09wp7av">
|
||||
<dc:Bounds x="1762" y="169" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Gateway_01p9hbs_di" bpmnElement="Gateway_01p9hbs" isMarkerVisible="true">
|
||||
<dc:Bounds x="1335" y="162" width="50" height="50" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="ScriptTask_0gacq8q_di" bpmnElement="Task_1cw2y6r">
|
||||
<dc:Bounds x="1610" y="147" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
</bpmndi:BPMNPlane>
|
||||
</bpmndi:BPMNDiagram>
|
||||
</bpmn:definitions>
|
|
@ -142,7 +142,7 @@
|
|||
"typename":"SequenceFlow"
|
||||
}
|
||||
},
|
||||
"typename":"TestUserTask",
|
||||
"typename":"UserTask",
|
||||
"extensions":{}
|
||||
},
|
||||
"sid-C014B4B9-889F-4EE9-9949-C89502C35CF0":{
|
||||
|
@ -697,7 +697,7 @@
|
|||
"typename":"SequenceFlow"
|
||||
}
|
||||
},
|
||||
"typename":"TestUserTask",
|
||||
"typename":"UserTask",
|
||||
"extensions":{}
|
||||
},
|
||||
"sid-2EDAD784-7F15-486C-B805-D26EE25F8087":{
|
||||
|
@ -906,7 +906,7 @@
|
|||
"typename":"SequenceFlow"
|
||||
}
|
||||
},
|
||||
"typename":"TestUserTask",
|
||||
"typename":"UserTask",
|
||||
"extensions":{}
|
||||
},
|
||||
"sid-BC014079-199F-4720-95CD-244B0ACB6DE1":{
|
||||
|
|
|
@ -0,0 +1,81 @@
|
|||
<?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" id="Definitions_96f6665" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.0.0-dev">
|
||||
<bpmn:process id="Process_ccz6oq2" isExecutable="true">
|
||||
<bpmn:startEvent id="StartEvent_1">
|
||||
<bpmn:outgoing>Flow_177wrsb</bpmn:outgoing>
|
||||
</bpmn:startEvent>
|
||||
<bpmn:sequenceFlow id="Flow_177wrsb" sourceRef="StartEvent_1" targetRef="Activity_0tbghnr" />
|
||||
<bpmn:sequenceFlow id="Flow_0eductu" sourceRef="Activity_0tbghnr" targetRef="Activity_1b4i250" />
|
||||
<bpmn:endEvent id="Event_1ncs6fv">
|
||||
<bpmn:incoming>Flow_0hkxb5e</bpmn:incoming>
|
||||
</bpmn:endEvent>
|
||||
<bpmn:sequenceFlow id="Flow_1xryi5d" sourceRef="Activity_1b4i250" targetRef="Activity_0k6ipvz" />
|
||||
<bpmn:scriptTask id="Activity_0tbghnr" name="512 a">
|
||||
<bpmn:incoming>Flow_177wrsb</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0eductu</bpmn:outgoing>
|
||||
<bpmn:script>a="a"*512</bpmn:script>
|
||||
</bpmn:scriptTask>
|
||||
<bpmn:scriptTask id="Activity_1b4i250" name="512 b">
|
||||
<bpmn:incoming>Flow_0eductu</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_1xryi5d</bpmn:outgoing>
|
||||
<bpmn:script>b="b"*512</bpmn:script>
|
||||
</bpmn:scriptTask>
|
||||
<bpmn:sequenceFlow id="Flow_1of7r00" sourceRef="Activity_0k6ipvz" targetRef="Activity_1i88z55" />
|
||||
<bpmn:scriptTask id="Activity_0k6ipvz" name="512 c">
|
||||
<bpmn:incoming>Flow_1xryi5d</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_1of7r00</bpmn:outgoing>
|
||||
<bpmn:script>c="c"*512</bpmn:script>
|
||||
</bpmn:scriptTask>
|
||||
<bpmn:sequenceFlow id="Flow_0hkxb5e" sourceRef="Activity_1i88z55" targetRef="Event_1ncs6fv" />
|
||||
<bpmn:scriptTask id="Activity_1i88z55" name="a+b+c">
|
||||
<bpmn:incoming>Flow_1of7r00</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0hkxb5e</bpmn:outgoing>
|
||||
<bpmn:script>d=a+b+c</bpmn:script>
|
||||
</bpmn:scriptTask>
|
||||
</bpmn:process>
|
||||
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
||||
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="Process_ccz6oq2">
|
||||
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
|
||||
<dc:Bounds x="202" y="42" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_1kxr618_di" bpmnElement="Activity_0tbghnr">
|
||||
<dc:Bounds x="170" y="110" width="100" height="80" />
|
||||
<bpmndi:BPMNLabel />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_0wp0pql_di" bpmnElement="Activity_1b4i250">
|
||||
<dc:Bounds x="170" y="220" width="100" height="80" />
|
||||
<bpmndi:BPMNLabel />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_0975bxc_di" bpmnElement="Activity_0k6ipvz">
|
||||
<dc:Bounds x="170" y="330" width="100" height="80" />
|
||||
<bpmndi:BPMNLabel />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Event_1ncs6fv_di" bpmnElement="Event_1ncs6fv">
|
||||
<dc:Bounds x="202" y="562" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_1w8fetn_di" bpmnElement="Activity_1i88z55">
|
||||
<dc:Bounds x="170" y="440" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge id="Flow_177wrsb_di" bpmnElement="Flow_177wrsb">
|
||||
<di:waypoint x="220" y="78" />
|
||||
<di:waypoint x="220" y="110" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0eductu_di" bpmnElement="Flow_0eductu">
|
||||
<di:waypoint x="220" y="190" />
|
||||
<di:waypoint x="220" y="220" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_1xryi5d_di" bpmnElement="Flow_1xryi5d">
|
||||
<di:waypoint x="220" y="300" />
|
||||
<di:waypoint x="220" y="330" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_1of7r00_di" bpmnElement="Flow_1of7r00">
|
||||
<di:waypoint x="220" y="410" />
|
||||
<di:waypoint x="220" y="440" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0hkxb5e_di" bpmnElement="Flow_0hkxb5e">
|
||||
<di:waypoint x="220" y="520" />
|
||||
<di:waypoint x="220" y="562" />
|
||||
</bpmndi:BPMNEdge>
|
||||
</bpmndi:BPMNPlane>
|
||||
</bpmndi:BPMNDiagram>
|
||||
</bpmn:definitions>
|
|
@ -1,77 +0,0 @@
|
|||
<?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:process id="test_timer_end_event" name="test_timer_end_event" isExecutable="true">
|
||||
<bpmn:startEvent id="StartEvent_1">
|
||||
<bpmn:outgoing>Flow_164sojd</bpmn:outgoing>
|
||||
</bpmn:startEvent>
|
||||
<bpmn:task id="user_task" name="User Task">
|
||||
<bpmn:incoming>Flow_1m2vq4v</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_04tuv5z</bpmn:outgoing>
|
||||
</bpmn:task>
|
||||
<bpmn:sequenceFlow id="Flow_164sojd" sourceRef="StartEvent_1" targetRef="Activity_0dzjjk3" />
|
||||
<bpmn:boundaryEvent id="Event_0y4hbl0" cancelActivity="false" attachedToRef="user_task">
|
||||
<bpmn:outgoing>Flow_0ac4lx5</bpmn:outgoing>
|
||||
<bpmn:timerEventDefinition id="TimerEventDefinition_1w16uhl">
|
||||
<bpmn:timeDuration xsi:type="bpmn:tFormalExpression">timedelta(milliseconds=2)</bpmn:timeDuration>
|
||||
</bpmn:timerEventDefinition>
|
||||
</bpmn:boundaryEvent>
|
||||
<bpmn:sequenceFlow id="Flow_0ac4lx5" sourceRef="Event_0y4hbl0" targetRef="set_variable" />
|
||||
<bpmn:scriptTask id="set_variable" name="update timer_called">
|
||||
<bpmn:incoming>Flow_0ac4lx5</bpmn:incoming>
|
||||
<bpmn:script>timer_called = True</bpmn:script>
|
||||
</bpmn:scriptTask>
|
||||
<bpmn:endEvent id="final_end_event" name="End Event">
|
||||
<bpmn:documentation>Some docs</bpmn:documentation>
|
||||
<bpmn:incoming>Flow_04tuv5z</bpmn:incoming>
|
||||
</bpmn:endEvent>
|
||||
<bpmn:sequenceFlow id="Flow_04tuv5z" sourceRef="user_task" targetRef="final_end_event" />
|
||||
<bpmn:sequenceFlow id="Flow_1m2vq4v" sourceRef="Activity_0dzjjk3" targetRef="user_task" />
|
||||
<bpmn:scriptTask id="Activity_0dzjjk3" name="Set timer_called">
|
||||
<bpmn:incoming>Flow_164sojd</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_1m2vq4v</bpmn:outgoing>
|
||||
<bpmn:script>timer_called = False</bpmn:script>
|
||||
</bpmn:scriptTask>
|
||||
</bpmn:process>
|
||||
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
||||
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="test_timer_end_event">
|
||||
<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">
|
||||
<di:waypoint x="320" y="117" />
|
||||
<di:waypoint x="360" y="117" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNShape id="Activity_0lhf45l_di" bpmnElement="user_task">
|
||||
<dc:Bounds x="360" y="77" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_1oduoqz_di" bpmnElement="set_variable">
|
||||
<dc:Bounds x="490" y="200" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Event_0olfqht_di" bpmnElement="final_end_event">
|
||||
<dc:Bounds x="542" y="99" width="36" height="36" />
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="535" y="142" width="51" height="14" />
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
|
||||
<dc:Bounds x="152" y="99" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_1mx687n_di" bpmnElement="Activity_0dzjjk3">
|
||||
<dc:Bounds x="220" y="77" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Event_0w4k4ro_di" bpmnElement="Event_0y4hbl0">
|
||||
<dc:Bounds x="402" y="139" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
</bpmndi:BPMNPlane>
|
||||
</bpmndi:BPMNDiagram>
|
||||
</bpmn:definitions>
|
|
@ -2,6 +2,7 @@ from datetime import timedelta
|
|||
|
||||
from SpiffWorkflow.bpmn.workflow import BpmnWorkflow
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngine import PythonScriptEngine
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngineEnvironment import TaskDataEnvironment
|
||||
from SpiffWorkflow.bpmn.specs.events.event_definitions import MessageEventDefinition
|
||||
from SpiffWorkflow.task import TaskState
|
||||
|
||||
|
@ -11,7 +12,7 @@ class EventBsedGatewayTest(BpmnWorkflowTestCase):
|
|||
|
||||
def setUp(self):
|
||||
self.spec, self.subprocesses = self.load_workflow_spec('event-gateway.bpmn', 'Process_0pvx19v')
|
||||
self.script_engine = PythonScriptEngine(default_globals={"timedelta": timedelta})
|
||||
self.script_engine = PythonScriptEngine(environment=TaskDataEnvironment({"timedelta": timedelta}))
|
||||
self.workflow = BpmnWorkflow(self.spec, script_engine=self.script_engine)
|
||||
|
||||
def testEventBasedGateway(self):
|
||||
|
@ -29,8 +30,8 @@ class EventBsedGatewayTest(BpmnWorkflowTestCase):
|
|||
self.workflow.script_engine = self.script_engine
|
||||
self.assertEqual(len(waiting_tasks), 1)
|
||||
self.workflow.catch(MessageEventDefinition('message_1'))
|
||||
self.workflow.refresh_waiting_tasks()
|
||||
self.workflow.do_engine_steps()
|
||||
self.workflow.refresh_waiting_tasks()
|
||||
self.assertEqual(self.workflow.is_completed(), True)
|
||||
self.assertEqual(self.workflow.get_tasks_from_spec_name('message_1_event')[0].state, TaskState.COMPLETED)
|
||||
self.assertEqual(self.workflow.get_tasks_from_spec_name('message_2_event')[0].state, TaskState.CANCELLED)
|
||||
|
|
|
@ -5,6 +5,7 @@ import unittest
|
|||
import time
|
||||
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngine import PythonScriptEngine
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngineEnvironment import TaskDataEnvironment
|
||||
from SpiffWorkflow.bpmn.workflow import BpmnWorkflow
|
||||
from tests.SpiffWorkflow.bpmn.BpmnWorkflowTestCase import BpmnWorkflowTestCase
|
||||
|
||||
|
@ -24,11 +25,11 @@ class CustomScriptEngine(PythonScriptEngine):
|
|||
It will execute python code read in from the bpmn. It will also make any scripts in the
|
||||
scripts directory available for execution. """
|
||||
def __init__(self):
|
||||
augment_methods = {
|
||||
environment = TaskDataEnvironment({
|
||||
'custom_function': my_custom_function,
|
||||
'timedelta': datetime.timedelta,
|
||||
}
|
||||
super().__init__(scripting_additions=augment_methods)
|
||||
})
|
||||
super().__init__(environment=environment)
|
||||
|
||||
|
||||
class TimerCycleStartTest(BpmnWorkflowTestCase):
|
||||
|
|
|
@ -5,6 +5,7 @@ import unittest
|
|||
import time
|
||||
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngine import PythonScriptEngine
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngineEnvironment import TaskDataEnvironment
|
||||
from SpiffWorkflow.task import TaskState
|
||||
from SpiffWorkflow.bpmn.workflow import BpmnWorkflow
|
||||
from tests.SpiffWorkflow.bpmn.BpmnWorkflowTestCase import BpmnWorkflowTestCase
|
||||
|
@ -22,11 +23,11 @@ class CustomScriptEngine(PythonScriptEngine):
|
|||
It will execute python code read in from the bpmn. It will also make any scripts in the
|
||||
scripts directory available for execution. """
|
||||
def __init__(self):
|
||||
augment_methods = {
|
||||
environment = TaskDataEnvironment({
|
||||
'custom_function': my_custom_function,
|
||||
'timedelta': datetime.timedelta,
|
||||
}
|
||||
super().__init__(scripting_additions=augment_methods)
|
||||
})
|
||||
super().__init__(environment=environment)
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ import time
|
|||
|
||||
from SpiffWorkflow.bpmn.workflow import BpmnWorkflow
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngine import PythonScriptEngine
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngineEnvironment import TaskDataEnvironment
|
||||
from tests.SpiffWorkflow.bpmn.BpmnWorkflowTestCase import BpmnWorkflowTestCase
|
||||
|
||||
__author__ = 'kellym'
|
||||
|
@ -14,10 +15,10 @@ __author__ = 'kellym'
|
|||
class TimerDateTest(BpmnWorkflowTestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.script_engine = PythonScriptEngine(default_globals={
|
||||
self.script_engine = PythonScriptEngine(environment=TaskDataEnvironment({
|
||||
"datetime": datetime.datetime,
|
||||
"timedelta": datetime.timedelta,
|
||||
})
|
||||
}))
|
||||
self.spec, self.subprocesses = self.load_workflow_spec('timer-date-start.bpmn', 'date_timer')
|
||||
self.workflow = BpmnWorkflow(self.spec, self.subprocesses, script_engine=self.script_engine)
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ from datetime import timedelta
|
|||
|
||||
from SpiffWorkflow.bpmn.workflow import BpmnWorkflow
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngine import PythonScriptEngine
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngineEnvironment import TaskDataEnvironment
|
||||
from tests.SpiffWorkflow.bpmn.BpmnWorkflowTestCase import BpmnWorkflowTestCase
|
||||
__author__ = 'kellym'
|
||||
|
||||
|
@ -13,7 +14,7 @@ __author__ = 'kellym'
|
|||
class TimerDurationTest(BpmnWorkflowTestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.script_engine = PythonScriptEngine(default_globals={"timedelta": timedelta})
|
||||
self.script_engine = PythonScriptEngine(environment=TaskDataEnvironment({"timedelta": timedelta}))
|
||||
self.spec, self.subprocesses = self.load_workflow_spec('boundary_timer_on_task.bpmn', 'test_timer')
|
||||
self.workflow = BpmnWorkflow(self.spec, self.subprocesses, script_engine=self.script_engine)
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@ import time
|
|||
from datetime import datetime, timedelta
|
||||
from SpiffWorkflow.bpmn.workflow import BpmnWorkflow
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngine import PythonScriptEngine
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngineEnvironment import TaskDataEnvironment
|
||||
from tests.SpiffWorkflow.bpmn.BpmnWorkflowTestCase import BpmnWorkflowTestCase
|
||||
|
||||
__author__ = 'kellym'
|
||||
|
@ -13,7 +14,7 @@ __author__ = 'kellym'
|
|||
class TimerDurationTest(BpmnWorkflowTestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.script_engine = PythonScriptEngine(default_globals={"timedelta": timedelta})
|
||||
self.script_engine = PythonScriptEngine(environment=TaskDataEnvironment({"timedelta": timedelta}))
|
||||
self.spec, self.subprocesses = self.load_workflow_spec('timer.bpmn', 'timer')
|
||||
self.workflow = BpmnWorkflow(self.spec, self.subprocesses, script_engine=self.script_engine)
|
||||
|
||||
|
|
|
@ -4,7 +4,6 @@ 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):
|
||||
|
@ -21,7 +20,7 @@ class BaseTestCase(unittest.TestCase):
|
|||
|
||||
def setUp(self):
|
||||
super(BaseTestCase, self).setUp()
|
||||
wf_spec_converter = BpmnWorkflowSerializer.configure_workflow_spec_converter([TestUserTaskConverter])
|
||||
wf_spec_converter = BpmnWorkflowSerializer.configure_workflow_spec_converter()
|
||||
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)
|
||||
|
|
|
@ -5,7 +5,6 @@ import json
|
|||
from SpiffWorkflow.bpmn.PythonScriptEngine import PythonScriptEngine
|
||||
from SpiffWorkflow.bpmn.serializer.workflow import BpmnWorkflowSerializer
|
||||
from SpiffWorkflow.bpmn.workflow import BpmnWorkflow
|
||||
from tests.SpiffWorkflow.bpmn.BpmnLoaderForTests import TestUserTaskConverter
|
||||
|
||||
from .BaseTestCase import BaseTestCase
|
||||
|
||||
|
@ -71,7 +70,7 @@ class BpmnWorkflowSerializerTest(BaseTestCase):
|
|||
|
||||
try:
|
||||
self.assertRaises(TypeError, self.serializer.serialize_json, self.workflow)
|
||||
wf_spec_converter = BpmnWorkflowSerializer.configure_workflow_spec_converter([TestUserTaskConverter])
|
||||
wf_spec_converter = BpmnWorkflowSerializer.configure_workflow_spec_converter()
|
||||
custom_serializer = BpmnWorkflowSerializer(wf_spec_converter, version=self.SERIALIZER_VERSION,json_encoder_cls=MyJsonEncoder, json_decoder_cls=MyJsonDecoder)
|
||||
serialized_workflow = custom_serializer.serialize_json(self.workflow)
|
||||
finally:
|
||||
|
|
|
@ -3,9 +3,11 @@ import time
|
|||
|
||||
from SpiffWorkflow.task import TaskState
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngine import PythonScriptEngine
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngineEnvironment import TaskDataEnvironment
|
||||
|
||||
from .BaseTestCase import BaseTestCase
|
||||
|
||||
|
||||
class VersionMigrationTest(BaseTestCase):
|
||||
|
||||
SERIALIZER_VERSION = "1.2"
|
||||
|
@ -24,7 +26,7 @@ class VersionMigrationTest(BaseTestCase):
|
|||
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.script_engine = PythonScriptEngine(environment=TaskDataEnvironment({"time": time}))
|
||||
wf.refresh_waiting_tasks()
|
||||
wf.do_engine_steps()
|
||||
self.assertTrue(wf.is_completed())
|
||||
self.assertTrue(wf.is_completed())
|
||||
|
|
|
@ -1,22 +1,20 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
import os
|
||||
from copy import deepcopy
|
||||
|
||||
from SpiffWorkflow.bpmn.serializer.workflow import BpmnWorkflowSerializer
|
||||
from SpiffWorkflow.camunda.parser.CamundaParser import CamundaParser
|
||||
from SpiffWorkflow.camunda.serializer.task_spec_converters import UserTaskConverter, StartEventConverter, EndEventConverter, \
|
||||
IntermediateCatchEventConverter, IntermediateThrowEventConverter, BoundaryEventConverter
|
||||
from SpiffWorkflow.camunda.serializer.config import CAMUNDA_SPEC_CONFIG
|
||||
|
||||
from SpiffWorkflow.dmn.serializer.task_spec_converters import BusinessRuleTaskConverter
|
||||
from SpiffWorkflow.dmn.serializer.task_spec import BusinessRuleTaskConverter
|
||||
|
||||
from tests.SpiffWorkflow.bpmn.BpmnWorkflowTestCase import BpmnWorkflowTestCase
|
||||
|
||||
CAMUNDA_SPEC_CONFIG['task_specs'].append(BusinessRuleTaskConverter)
|
||||
|
||||
__author__ = 'danfunk'
|
||||
|
||||
wf_spec_converter = BpmnWorkflowSerializer.configure_workflow_spec_converter([
|
||||
UserTaskConverter, BusinessRuleTaskConverter, StartEventConverter,
|
||||
EndEventConverter, BoundaryEventConverter, IntermediateCatchEventConverter,
|
||||
IntermediateThrowEventConverter])
|
||||
wf_spec_converter = BpmnWorkflowSerializer.configure_workflow_spec_converter(CAMUNDA_SPEC_CONFIG)
|
||||
|
||||
class BaseTestCase(BpmnWorkflowTestCase):
|
||||
""" Provides some basic tools for loading up and parsing camunda BPMN files """
|
||||
|
|
|
@ -16,7 +16,7 @@ class CallActivityMessageTest(BaseTestCase):
|
|||
def testRunThroughHappy(self):
|
||||
self.actual_test(save_restore=False)
|
||||
|
||||
def testThroughSaveRestore(self):
|
||||
def testRunThroughSaveRestore(self):
|
||||
self.actual_test(save_restore=True)
|
||||
|
||||
def actual_test(self, save_restore=False):
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import unittest
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngine import PythonScriptEngine
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngineEnvironment import TaskDataEnvironment
|
||||
from SpiffWorkflow.bpmn.workflow import BpmnWorkflow
|
||||
|
||||
from .BaseTestCase import BaseTestCase
|
||||
|
@ -12,8 +13,8 @@ def my_custom_function(txt):
|
|||
class CustomScriptEngine(PythonScriptEngine):
|
||||
|
||||
def __init__(self):
|
||||
augment_methods = {'my_custom_function': my_custom_function}
|
||||
super().__init__(scripting_additions=augment_methods)
|
||||
environment = TaskDataEnvironment({'my_custom_function': my_custom_function})
|
||||
super().__init__(environment=environment)
|
||||
|
||||
|
||||
class DMNCustomScriptTest(BaseTestCase):
|
||||
|
|
|
@ -7,6 +7,7 @@ from datetime import timedelta
|
|||
from SpiffWorkflow.task import TaskState
|
||||
from SpiffWorkflow.bpmn.workflow import BpmnWorkflow
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngine import PythonScriptEngine
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngineEnvironment import TaskDataEnvironment
|
||||
from .BaseTestCase import BaseTestCase
|
||||
|
||||
__author__ = 'kellym'
|
||||
|
@ -15,7 +16,7 @@ __author__ = 'kellym'
|
|||
class MessageBoundaryTest(BaseTestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.script_engine = PythonScriptEngine(default_globals={"timedelta": timedelta})
|
||||
self.script_engine = PythonScriptEngine(environment=TaskDataEnvironment({"timedelta": timedelta}))
|
||||
self.spec, self.subprocesses = self.load_workflow_spec('MessageBoundary.bpmn', 'Process_1kjyavs')
|
||||
self.workflow = BpmnWorkflow(self.spec, self.subprocesses, script_engine=self.script_engine)
|
||||
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
import unittest
|
||||
|
||||
from SpiffWorkflow.bpmn.workflow import BpmnWorkflow
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngine import PythonScriptEngine
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngineEnvironment import BoxedTaskDataEnvironment
|
||||
|
||||
from .BaseTestCase import BaseTestCase
|
||||
|
||||
|
@ -10,12 +12,13 @@ class MultiInstanceDMNTest(BaseTestCase):
|
|||
self.spec, subprocesses = self.load_workflow_spec(
|
||||
'DMNMultiInstance.bpmn', 'Process_1', 'test_integer_decision_multi.dmn')
|
||||
self.workflow = BpmnWorkflow(self.spec)
|
||||
self.script_engine = PythonScriptEngine(environment=BoxedTaskDataEnvironment())
|
||||
self.workflow.script_engine = self.script_engine
|
||||
|
||||
def testConstructor(self):
|
||||
pass # this is accomplished through setup.
|
||||
|
||||
def testDmnHappy(self):
|
||||
self.workflow = BpmnWorkflow(self.spec)
|
||||
self.workflow.do_engine_steps()
|
||||
self.workflow.complete_next()
|
||||
self.workflow.do_engine_steps()
|
||||
|
@ -25,16 +28,19 @@ class MultiInstanceDMNTest(BaseTestCase):
|
|||
|
||||
|
||||
def testDmnSaveRestore(self):
|
||||
self.workflow = BpmnWorkflow(self.spec)
|
||||
self.save_restore()
|
||||
self.workflow.script_engine = self.script_engine
|
||||
self.workflow.do_engine_steps()
|
||||
self.workflow.complete_next()
|
||||
self.save_restore()
|
||||
self.workflow.script_engine = self.script_engine
|
||||
self.workflow.do_engine_steps()
|
||||
self.workflow.complete_next()
|
||||
self.save_restore()
|
||||
self.workflow.script_engine = self.script_engine
|
||||
self.workflow.do_engine_steps()
|
||||
self.save_restore()
|
||||
self.workflow.script_engine = self.script_engine
|
||||
self.assertEqual(self.workflow.data['stuff']['E']['y'], 'D')
|
||||
|
||||
|
||||
|
|
|
@ -1,94 +0,0 @@
|
|||
<?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_1n0u11m" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="3.7.0">
|
||||
<bpmn:process id="DefaultGateway" isExecutable="true">
|
||||
<bpmn:startEvent id="StartEvent_1">
|
||||
<bpmn:outgoing>Flow_1wis1un</bpmn:outgoing>
|
||||
</bpmn:startEvent>
|
||||
<bpmn:userTask id="DoStuff" name="Do Stuff?" camunda:formKey="morestuffform">
|
||||
<bpmn:extensionElements>
|
||||
<camunda:formData>
|
||||
<camunda:formField id="morestuff" label="Do we need to do more stuff?" type="string" />
|
||||
</camunda:formData>
|
||||
</bpmn:extensionElements>
|
||||
<bpmn:incoming>Flow_1wis1un</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_144jxvd</bpmn:outgoing>
|
||||
</bpmn:userTask>
|
||||
<bpmn:sequenceFlow id="Flow_1wis1un" sourceRef="StartEvent_1" targetRef="DoStuff" />
|
||||
<bpmn:exclusiveGateway id="Gateway_1yn93jn">
|
||||
<bpmn:incoming>Flow_144jxvd</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_1riszc2</bpmn:outgoing>
|
||||
<bpmn:outgoing>Flow_0xdvee4</bpmn:outgoing>
|
||||
</bpmn:exclusiveGateway>
|
||||
<bpmn:sequenceFlow id="Flow_144jxvd" sourceRef="DoStuff" targetRef="Gateway_1yn93jn" />
|
||||
<bpmn:sequenceFlow id="Flow_1riszc2" name="Yes" sourceRef="Gateway_1yn93jn" targetRef="GetMoreStuff">
|
||||
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">morestuff == 'Yes'</bpmn:conditionExpression>
|
||||
</bpmn:sequenceFlow>
|
||||
<bpmn:endEvent id="Event_1xfyeiq">
|
||||
<bpmn:incoming>Flow_13ncefd</bpmn:incoming>
|
||||
<bpmn:incoming>Flow_0xdvee4</bpmn:incoming>
|
||||
</bpmn:endEvent>
|
||||
<bpmn:sequenceFlow id="Flow_13ncefd" sourceRef="GetMoreStuff" targetRef="Event_1xfyeiq" />
|
||||
<bpmn:userTask id="GetMoreStuff" name="Add More Stuff">
|
||||
<bpmn:extensionElements>
|
||||
<camunda:formData>
|
||||
<camunda:formField id="stuff.addstuff" label="Add More Stuff" type="string" />
|
||||
</camunda:formData>
|
||||
</bpmn:extensionElements>
|
||||
<bpmn:incoming>Flow_1riszc2</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_13ncefd</bpmn:outgoing>
|
||||
<bpmn:multiInstanceLoopCharacteristics camunda:collection="collectstuff" camunda:elementVariable="stuff">
|
||||
<bpmn:loopCardinality xsi:type="bpmn:tFormalExpression">3</bpmn:loopCardinality>
|
||||
</bpmn:multiInstanceLoopCharacteristics>
|
||||
</bpmn:userTask>
|
||||
<bpmn:sequenceFlow id="Flow_0xdvee4" name="No" sourceRef="Gateway_1yn93jn" targetRef="Event_1xfyeiq">
|
||||
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression">morestuff == 'No'</bpmn:conditionExpression>
|
||||
</bpmn:sequenceFlow>
|
||||
</bpmn:process>
|
||||
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
||||
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="DefaultGateway">
|
||||
<bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
|
||||
<dc:Bounds x="179" y="99" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_10nt4mt_di" bpmnElement="DoStuff">
|
||||
<dc:Bounds x="260" y="77" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge id="Flow_1wis1un_di" bpmnElement="Flow_1wis1un">
|
||||
<di:waypoint x="215" y="117" />
|
||||
<di:waypoint x="260" y="117" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNShape id="Gateway_1yn93jn_di" bpmnElement="Gateway_1yn93jn" isMarkerVisible="true">
|
||||
<dc:Bounds x="405" y="92" width="50" height="50" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge id="Flow_144jxvd_di" bpmnElement="Flow_144jxvd">
|
||||
<di:waypoint x="360" y="117" />
|
||||
<di:waypoint x="405" y="117" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_1riszc2_di" bpmnElement="Flow_1riszc2">
|
||||
<di:waypoint x="455" y="117" />
|
||||
<di:waypoint x="520" y="117" />
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="478" y="99" width="19" height="14" />
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNShape id="Event_1xfyeiq_di" bpmnElement="Event_1xfyeiq">
|
||||
<dc:Bounds x="692" y="99" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge id="Flow_13ncefd_di" bpmnElement="Flow_13ncefd">
|
||||
<di:waypoint x="620" y="117" />
|
||||
<di:waypoint x="692" y="117" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNShape id="Activity_0msdtf4_di" bpmnElement="GetMoreStuff">
|
||||
<dc:Bounds x="520" y="77" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge id="Flow_0xdvee4_di" bpmnElement="Flow_0xdvee4">
|
||||
<di:waypoint x="430" y="142" />
|
||||
<di:waypoint x="430" y="240" />
|
||||
<di:waypoint x="710" y="240" />
|
||||
<di:waypoint x="710" y="135" />
|
||||
<bpmndi:BPMNLabel>
|
||||
<dc:Bounds x="563" y="222" width="15" height="14" />
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
</bpmndi:BPMNPlane>
|
||||
</bpmndi:BPMNDiagram>
|
||||
</bpmn:definitions>
|
File diff suppressed because one or more lines are too long
Before Width: | Height: | Size: 7.9 KiB |
|
@ -1,64 +0,0 @@
|
|||
<?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" id="Definitions_1c9mbga" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="4.7.0">
|
||||
<bpmn:process id="top_workflow" name="top_workflow" isExecutable="true">
|
||||
<bpmn:startEvent id="StartEvent_1">
|
||||
<bpmn:outgoing>Flow_1xegt6f</bpmn:outgoing>
|
||||
</bpmn:startEvent>
|
||||
<bpmn:sequenceFlow id="Flow_11qyfqv" sourceRef="Activity_0gjyb1c" targetRef="Activity_02eu174" />
|
||||
<bpmn:sequenceFlow id="Flow_0hntmrc" sourceRef="Activity_02eu174" targetRef="Activity_0fz4sv6" />
|
||||
<bpmn:endEvent id="Event_0jgpqrj">
|
||||
<bpmn:incoming>Flow_0qc6vpv</bpmn:incoming>
|
||||
</bpmn:endEvent>
|
||||
<bpmn:sequenceFlow id="Flow_0qc6vpv" sourceRef="Activity_0fz4sv6" targetRef="Event_0jgpqrj" />
|
||||
<bpmn:sequenceFlow id="Flow_1xegt6f" sourceRef="StartEvent_1" targetRef="Activity_0gjyb1c" />
|
||||
<bpmn:scriptTask id="Activity_0gjyb1c" name="my_custom_function('test 1 from top workflow')">
|
||||
<bpmn:incoming>Flow_1xegt6f</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_11qyfqv</bpmn:outgoing>
|
||||
<bpmn:script>my_custom_function('test 1 from top workflow')</bpmn:script>
|
||||
</bpmn:scriptTask>
|
||||
<bpmn:callActivity id="Activity_02eu174" name="Common Activity" calledElement="CommonActivity">
|
||||
<bpmn:incoming>Flow_11qyfqv</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0hntmrc</bpmn:outgoing>
|
||||
</bpmn:callActivity>
|
||||
<bpmn:scriptTask id="Activity_0fz4sv6" name="my_custom_function('test from top workflow')">
|
||||
<bpmn:incoming>Flow_0hntmrc</bpmn:incoming>
|
||||
<bpmn:outgoing>Flow_0qc6vpv</bpmn:outgoing>
|
||||
<bpmn:script>my_custom_function('test 2 from top workflow')</bpmn:script>
|
||||
</bpmn:scriptTask>
|
||||
</bpmn:process>
|
||||
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
|
||||
<bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="top_workflow">
|
||||
<bpmndi:BPMNEdge id="Flow_1xegt6f_di" bpmnElement="Flow_1xegt6f">
|
||||
<di:waypoint x="215" y="117" />
|
||||
<di:waypoint x="240" y="117" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0qc6vpv_di" bpmnElement="Flow_0qc6vpv">
|
||||
<di:waypoint x="640" y="117" />
|
||||
<di:waypoint x="692" y="117" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_0hntmrc_di" bpmnElement="Flow_0hntmrc">
|
||||
<di:waypoint x="490" y="117" />
|
||||
<di:waypoint x="540" y="117" />
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge id="Flow_11qyfqv_di" bpmnElement="Flow_11qyfqv">
|
||||
<di:waypoint x="340" y="117" />
|
||||
<di:waypoint x="390" 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="Event_0jgpqrj_di" bpmnElement="Event_0jgpqrj">
|
||||
<dc:Bounds x="692" y="99" width="36" height="36" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_0py36p6_di" bpmnElement="Activity_0gjyb1c">
|
||||
<dc:Bounds x="240" y="77" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_0zer2pn_di" bpmnElement="Activity_02eu174">
|
||||
<dc:Bounds x="390" y="77" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape id="Activity_0mjjhco_di" bpmnElement="Activity_0fz4sv6">
|
||||
<dc:Bounds x="540" y="77" width="100" height="80" />
|
||||
</bpmndi:BPMNShape>
|
||||
</bpmndi:BPMNPlane>
|
||||
</bpmndi:BPMNDiagram>
|
||||
</bpmn:definitions>
|
|
@ -1,7 +1,8 @@
|
|||
import unittest
|
||||
|
||||
from SpiffWorkflow.camunda.specs.UserTask import FormField, UserTask, Form, EnumFormField
|
||||
from SpiffWorkflow.camunda.serializer.task_spec_converters import UserTaskConverter
|
||||
from SpiffWorkflow.camunda.serializer.task_spec import UserTaskConverter
|
||||
from SpiffWorkflow.bpmn.serializer.helpers.dictionary import DictionaryConverter
|
||||
from SpiffWorkflow.specs.WorkflowSpec import WorkflowSpec
|
||||
|
||||
|
||||
|
@ -53,7 +54,7 @@ class UserTaskSpecTest(unittest.TestCase):
|
|||
self.form.add_field(field1)
|
||||
self.form.add_field(field2)
|
||||
|
||||
converter = UserTaskConverter()
|
||||
converter = UserTaskConverter(DictionaryConverter())
|
||||
dct = converter.to_dict(self.user_spec)
|
||||
self.assertEqual(dct['name'], 'userTask')
|
||||
self.assertEqual(dct['form'], {
|
||||
|
|
|
@ -2,7 +2,7 @@ import os
|
|||
|
||||
from lxml import etree
|
||||
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngine import Box
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngineEnvironment import Box
|
||||
from SpiffWorkflow.dmn.engine.DMNEngine import DMNEngine
|
||||
from SpiffWorkflow.dmn.parser.DMNParser import DMNParser, get_dmn_ns
|
||||
|
||||
|
|
|
@ -1,14 +1,11 @@
|
|||
import os
|
||||
import unittest
|
||||
|
||||
from SpiffWorkflow.dmn.engine.DMNEngine import DMNEngine
|
||||
from SpiffWorkflow.bpmn.serializer.helpers.dictionary import DictionaryConverter
|
||||
from SpiffWorkflow.dmn.parser.BpmnDmnParser import BpmnDmnParser
|
||||
from SpiffWorkflow.dmn.serializer.task_spec_converters import \
|
||||
BusinessRuleTaskConverter
|
||||
from SpiffWorkflow.dmn.serializer.task_spec import BusinessRuleTaskConverter
|
||||
from tests.SpiffWorkflow.bpmn.BpmnWorkflowTestCase import BpmnWorkflowTestCase
|
||||
from tests.SpiffWorkflow.dmn.DecisionRunner import DecisionRunner
|
||||
from tests.SpiffWorkflow.dmn.python_engine.PythonDecisionRunner import \
|
||||
PythonDecisionRunner
|
||||
from tests.SpiffWorkflow.dmn.python_engine.PythonDecisionRunner import PythonDecisionRunner
|
||||
|
||||
|
||||
class HitPolicyTest(BpmnWorkflowTestCase):
|
||||
|
@ -38,8 +35,8 @@ class HitPolicyTest(BpmnWorkflowTestCase):
|
|||
runner = PythonDecisionRunner(file_name)
|
||||
decision_table = runner.decision_table
|
||||
self.assertEqual("COLLECT", decision_table.hit_policy)
|
||||
dict = BusinessRuleTaskConverter().decision_table_to_dict(decision_table)
|
||||
new_table = BusinessRuleTaskConverter().decision_table_from_dict(dict)
|
||||
dict = BusinessRuleTaskConverter(DictionaryConverter()).decision_table_to_dict(decision_table)
|
||||
new_table = BusinessRuleTaskConverter(DictionaryConverter()).decision_table_from_dict(dict)
|
||||
self.assertEqual("COLLECT", new_table.hit_policy)
|
||||
|
||||
def suite():
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import unittest
|
||||
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngine import PythonScriptEngine
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngineEnvironment import Box
|
||||
|
||||
from .FeelDecisionRunner import FeelDecisionRunner
|
||||
|
||||
|
@ -19,7 +19,7 @@ class FeelDictDecisionTestClass(unittest.TestCase):
|
|||
"PEANUTS": {"delicious": True},
|
||||
"SPAM": {"delicious": False}
|
||||
}}
|
||||
PythonScriptEngine.convert_to_box(PythonScriptEngine(), data)
|
||||
Box.convert_to_box(data)
|
||||
res = self.runner.decide(data)
|
||||
self.assertEqual(res.description, 'They are allergic to peanuts')
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import unittest
|
||||
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngine import Box
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngineEnvironment import Box
|
||||
|
||||
from .FeelDecisionRunner import FeelDecisionRunner
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import unittest
|
||||
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngine import Box
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngineEnvironment import Box
|
||||
|
||||
from .PythonDecisionRunner import PythonDecisionRunner
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import unittest
|
||||
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngine import Box
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngineEnvironment import Box
|
||||
|
||||
from .PythonDecisionRunner import PythonDecisionRunner
|
||||
|
||||
|
|
|
@ -2,11 +2,12 @@ import datetime
|
|||
from decimal import Decimal
|
||||
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngine import PythonScriptEngine
|
||||
from SpiffWorkflow.bpmn.PythonScriptEngineEnvironment import TaskDataEnvironment
|
||||
|
||||
from ..DecisionRunner import DecisionRunner
|
||||
|
||||
class PythonDecisionRunner(DecisionRunner):
|
||||
|
||||
def __init__(self, filename):
|
||||
scripting_additions={'Decimal': Decimal, 'datetime': datetime}
|
||||
super().__init__(PythonScriptEngine(scripting_additions=scripting_additions), filename, 'python_engine')
|
||||
environment = TaskDataEnvironment({'Decimal': Decimal, 'datetime': datetime})
|
||||
super().__init__(PythonScriptEngine(environment=environment), filename, 'python_engine')
|
||||
|
|
|
@ -1,27 +1,17 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
import os
|
||||
from copy import deepcopy
|
||||
|
||||
from SpiffWorkflow.spiff.parser.process import SpiffBpmnParser, VALIDATOR
|
||||
from SpiffWorkflow.spiff.serializer.task_spec_converters import NoneTaskConverter, \
|
||||
ManualTaskConverter, UserTaskConverter, ScriptTaskConverter, \
|
||||
SubWorkflowTaskConverter, TransactionSubprocessConverter, \
|
||||
CallActivityTaskConverter, \
|
||||
StartEventConverter, EndEventConverter, BoundaryEventConverter, \
|
||||
SendTaskConverter, ReceiveTaskConverter, \
|
||||
IntermediateCatchEventConverter, IntermediateThrowEventConverter, \
|
||||
ServiceTaskConverter
|
||||
from SpiffWorkflow.dmn.serializer.task_spec_converters import BusinessRuleTaskConverter
|
||||
from SpiffWorkflow.spiff.serializer.config import SPIFF_SPEC_CONFIG
|
||||
from SpiffWorkflow.dmn.serializer.task_spec import BusinessRuleTaskConverter
|
||||
from SpiffWorkflow.bpmn.serializer.workflow import BpmnWorkflowSerializer
|
||||
|
||||
from tests.SpiffWorkflow.bpmn.BpmnWorkflowTestCase import BpmnWorkflowTestCase
|
||||
|
||||
wf_spec_converter = BpmnWorkflowSerializer.configure_workflow_spec_converter([
|
||||
NoneTaskConverter, ManualTaskConverter, UserTaskConverter, ScriptTaskConverter,
|
||||
SubWorkflowTaskConverter, TransactionSubprocessConverter, CallActivityTaskConverter,
|
||||
StartEventConverter, EndEventConverter, BoundaryEventConverter, SendTaskConverter, ReceiveTaskConverter,
|
||||
IntermediateCatchEventConverter, IntermediateThrowEventConverter, BusinessRuleTaskConverter,
|
||||
ServiceTaskConverter
|
||||
])
|
||||
SPIFF_SPEC_CONFIG['task_specs'].append(BusinessRuleTaskConverter)
|
||||
|
||||
wf_spec_converter = BpmnWorkflowSerializer.configure_workflow_spec_converter(SPIFF_SPEC_CONFIG)
|
||||
|
||||
class BaseTestCase(BpmnWorkflowTestCase):
|
||||
""" Provides some basic tools for loading up and parsing Spiff extensions"""
|
||||
|
|
Loading…
Reference in New Issue