Commits

Micha Kops committed 9147155

Service group assignment added.

Comments (0)

Files changed (2)

src/main/resources/diagrams/IssueRequestProcess.bpmn

 <?xml version="1.0" encoding="UTF-8"?>
-<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test">
-  <process id="issueRequestProcess" name="Issue Request Process" isExecutable="true">
-    <startEvent id="startEvent" name="Start" activiti:initiator="initiator" activiti:formKey="newIssueForm">
-      <extensionElements>
-        <activiti:formProperty id="summary" name="Issue Summary" type="string" variable="summary" required="true"></activiti:formProperty>
-        <activiti:formProperty id="description" name="Detailed Issue Description" type="string" variable="description"></activiti:formProperty>
-        <activiti:formProperty id="priority" name="Issue Priority" type="enum" variable="priority" required="true">
-          <activiti:value id="low" name="low"></activiti:value>
-          <activiti:value id="medium" name="medium"></activiti:value>
-          <activiti:value id="critical" name="critical"></activiti:value>
-        </activiti:formProperty>
-        <activiti:formProperty id="email" name="Please enter your E-Mail address for feedback" type="string" variable="email" required="true"></activiti:formProperty>
-      </extensionElements>
-    </startEvent>
-    <endEvent id="endevent" name="End Event"></endEvent>
-    <userTask id="approveNormalIssue" name="Approve non-critical Issue" activiti:candidateGroups="itsupport">
-      <extensionElements>
-        <activiti:formProperty id="summary" name="Issue Summary" type="string" expression="${summary}" variable="summary" writable="false"></activiti:formProperty>
-        <activiti:formProperty id="description" name="Issue Description" type="string" expression="${description}" variable="description" writable="false"></activiti:formProperty>
-        <activiti:formProperty id="priority" name="Priority" type="string" expression="${priority}" variable="priority" writable="false"></activiti:formProperty>
-        <activiti:formProperty id="approveRequest" name="Do you approve the issue request?" type="enum" variable="requestApproved" required="true">
-          <activiti:value id="true" name="Yes"></activiti:value>
-          <activiti:value id="false" name="No"></activiti:value>
-        </activiti:formProperty>
-      </extensionElements>
-    </userTask>
-    <exclusiveGateway id="priorityXorGateway" name="Exclusive Gateway Filtering by Priority"></exclusiveGateway>
-    <userTask id="approveCriticalIssue" name="Approve Critical Issue" activiti:candidateGroups="itsupport-critical">
-      <extensionElements>
-        <activiti:formProperty id="summary" name="Issue Summary" type="string" expression="${summary}" variable="summary" writable="false"></activiti:formProperty>
-        <activiti:formProperty id="description" name="Issue Description" type="string" expression="${description}" variable="description" writable="false"></activiti:formProperty>
-        <activiti:formProperty id="priority" name="Priority" type="string" expression="${priority}" variable="priority" writable="false"></activiti:formProperty>
-        <activiti:formProperty id="approveRequest" name="Do you approve the issue request?" type="enum" variable="requestApproved" required="true">
-          <activiti:value id="true" name="Yes"></activiti:value>
-          <activiti:value id="false" name="No"></activiti:value>
-        </activiti:formProperty>
-      </extensionElements>
-    </userTask>
-    <sequenceFlow id="criticalFlow" name="Flow for critical issues" sourceRef="priorityXorGateway" targetRef="approveCriticalIssue">
-      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${priority == "critical"}]]></conditionExpression>
-    </sequenceFlow>
-    <sequenceFlow id="noncriticalFlow" name="Flow for noncritical issues" sourceRef="priorityXorGateway" targetRef="approveNormalIssue">
-      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${priority != "critical"}]]></conditionExpression>
-    </sequenceFlow>
-    <exclusiveGateway id="joinPrioritySelectionGateway" name="Exclusive Gateway"></exclusiveGateway>
-    <sequenceFlow id="joinAfterCriticalApproveFlow" sourceRef="approveCriticalIssue" targetRef="joinPrioritySelectionGateway"></sequenceFlow>
-    <sequenceFlow id="joinAfterNonCriticalApproveFlow" sourceRef="approveNormalIssue" targetRef="joinPrioritySelectionGateway"></sequenceFlow>
-    <serviceTask id="storeIssueTask" name="Persist Issue to IssueTracker" activiti:class="com.hascode.tutorial.PersistIssueTask"></serviceTask>
-    <exclusiveGateway id="exclusivegateway3" name="Exclusive Gateway"></exclusiveGateway>
-    <serviceTask id="denialMailTask" name="Send denial mail" activiti:type="mail">
-      <extensionElements>
-        <activiti:field name="to">
-          <activiti:expression>${email}</activiti:expression>
-        </activiti:field>
-        <activiti:field name="from">
-          <activiti:string>support@hascode.com</activiti:string>
-        </activiti:field>
-        <activiti:field name="subject">
-          <activiti:expression>Your inquiry regarding ${summary}was denied</activiti:expression>
-        </activiti:field>
-        <activiti:field name="charset">
-          <activiti:string>UTF-8</activiti:string>
-        </activiti:field>
-        <activiti:field name="text">
-          <activiti:expression>Hello ${initiator},
+<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"
+	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:activiti="http://activiti.org/bpmn"
+	xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC"
+	xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" typeLanguage="http://www.w3.org/2001/XMLSchema"
+	expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test">
+	<process id="issueRequestProcess" name="Issue Request Process"
+		isExecutable="true">
+		<extensionElements>
+			<activiti:potentialStarter>
+				<resourceAssignmentExpression>
+					<formalExpression>group(service)</formalExpression>
+				</resourceAssignmentExpression>
+			</activiti:potentialStarter>
+		</extensionElements>
+
+		<startEvent id="startEvent" name="Start"
+			activiti:initiator="initiator" activiti:formKey="newIssueForm">
+			<extensionElements>
+				<activiti:formProperty id="summary" name="Issue Summary"
+					type="string" variable="summary" required="true"></activiti:formProperty>
+				<activiti:formProperty id="description"
+					name="Detailed Issue Description" type="string" variable="description"></activiti:formProperty>
+				<activiti:formProperty id="priority" name="Issue Priority"
+					type="enum" variable="priority" required="true">
+					<activiti:value id="low" name="low"></activiti:value>
+					<activiti:value id="medium" name="medium"></activiti:value>
+					<activiti:value id="critical" name="critical"></activiti:value>
+				</activiti:formProperty>
+				<activiti:formProperty id="email"
+					name="Please enter your E-Mail address for feedback" type="string"
+					variable="email" required="true"></activiti:formProperty>
+			</extensionElements>
+		</startEvent>
+		<endEvent id="endevent" name="End Event"></endEvent>
+		<userTask id="approveNormalIssue" name="Approve non-critical Issue"
+			activiti:candidateGroups="itsupport">
+			<extensionElements>
+				<activiti:formProperty id="summary" name="Issue Summary"
+					type="string" expression="${summary}" variable="summary" writable="false"></activiti:formProperty>
+				<activiti:formProperty id="description" name="Issue Description"
+					type="string" expression="${description}" variable="description"
+					writable="false"></activiti:formProperty>
+				<activiti:formProperty id="priority" name="Priority"
+					type="string" expression="${priority}" variable="priority"
+					writable="false"></activiti:formProperty>
+				<activiti:formProperty id="approveRequest"
+					name="Do you approve the issue request?" type="enum" variable="requestApproved"
+					required="true">
+					<activiti:value id="true" name="Yes"></activiti:value>
+					<activiti:value id="false" name="No"></activiti:value>
+				</activiti:formProperty>
+			</extensionElements>
+		</userTask>
+		<exclusiveGateway id="priorityXorGateway"
+			name="Exclusive Gateway Filtering by Priority"></exclusiveGateway>
+		<userTask id="approveCriticalIssue" name="Approve Critical Issue"
+			activiti:candidateGroups="itsupport-critical">
+			<extensionElements>
+				<activiti:formProperty id="summary" name="Issue Summary"
+					type="string" expression="${summary}" variable="summary" writable="false"></activiti:formProperty>
+				<activiti:formProperty id="description" name="Issue Description"
+					type="string" expression="${description}" variable="description"
+					writable="false"></activiti:formProperty>
+				<activiti:formProperty id="priority" name="Priority"
+					type="string" expression="${priority}" variable="priority"
+					writable="false"></activiti:formProperty>
+				<activiti:formProperty id="approveRequest"
+					name="Do you approve the issue request?" type="enum" variable="requestApproved"
+					required="true">
+					<activiti:value id="true" name="Yes"></activiti:value>
+					<activiti:value id="false" name="No"></activiti:value>
+				</activiti:formProperty>
+			</extensionElements>
+		</userTask>
+		<sequenceFlow id="criticalFlow" name="Flow for critical issues"
+			sourceRef="priorityXorGateway" targetRef="approveCriticalIssue">
+			<conditionExpression xsi:type="tFormalExpression"><![CDATA[${priority == "critical"}]]></conditionExpression>
+		</sequenceFlow>
+		<sequenceFlow id="noncriticalFlow" name="Flow for noncritical issues"
+			sourceRef="priorityXorGateway" targetRef="approveNormalIssue">
+			<conditionExpression xsi:type="tFormalExpression"><![CDATA[${priority != "critical"}]]></conditionExpression>
+		</sequenceFlow>
+		<exclusiveGateway id="joinPrioritySelectionGateway"
+			name="Exclusive Gateway"></exclusiveGateway>
+		<sequenceFlow id="joinAfterCriticalApproveFlow"
+			sourceRef="approveCriticalIssue" targetRef="joinPrioritySelectionGateway"></sequenceFlow>
+		<sequenceFlow id="joinAfterNonCriticalApproveFlow"
+			sourceRef="approveNormalIssue" targetRef="joinPrioritySelectionGateway"></sequenceFlow>
+		<serviceTask id="storeIssueTask" name="Persist Issue to IssueTracker"
+			activiti:class="com.hascode.tutorial.PersistIssueTask"></serviceTask>
+		<exclusiveGateway id="exclusivegateway3" name="Exclusive Gateway"></exclusiveGateway>
+		<serviceTask id="denialMailTask" name="Send denial mail"
+			activiti:type="mail">
+			<extensionElements>
+				<activiti:field name="to">
+					<activiti:expression>${email}</activiti:expression>
+				</activiti:field>
+				<activiti:field name="from">
+					<activiti:string>support@hascode.com</activiti:string>
+				</activiti:field>
+				<activiti:field name="subject">
+					<activiti:expression>Your inquiry regarding ${summary}was denied</activiti:expression>
+				</activiti:field>
+				<activiti:field name="charset">
+					<activiti:string>UTF-8</activiti:string>
+				</activiti:field>
+				<activiti:field name="text">
+					<activiti:expression>Hello ${initiator},
 
 your issue regarding ${summary}has been denied.
 
 Best regards</activiti:expression>
-        </activiti:field>
-      </extensionElements>
-    </serviceTask>
-    <serviceTask id="confirmMailTask" name="Send confirmation mail" activiti:type="mail">
-      <extensionElements>
-        <activiti:field name="to">
-          <activiti:expression>${email}</activiti:expression>
-        </activiti:field>
-        <activiti:field name="from">
-          <activiti:string>support@hascode.com</activiti:string>
-        </activiti:field>
-        <activiti:field name="subject">
-          <activiti:expression>Your inquiry regarding ${summary}</activiti:expression>
-        </activiti:field>
-        <activiti:field name="charset">
-          <activiti:string>UTF-8</activiti:string>
-        </activiti:field>
-        <activiti:field name="text">
-          <activiti:expression>Hello ${initiator},
+				</activiti:field>
+			</extensionElements>
+		</serviceTask>
+		<serviceTask id="confirmMailTask" name="Send confirmation mail"
+			activiti:type="mail">
+			<extensionElements>
+				<activiti:field name="to">
+					<activiti:expression>${email}</activiti:expression>
+				</activiti:field>
+				<activiti:field name="from">
+					<activiti:string>support@hascode.com</activiti:string>
+				</activiti:field>
+				<activiti:field name="subject">
+					<activiti:expression>Your inquiry regarding ${summary}</activiti:expression>
+				</activiti:field>
+				<activiti:field name="charset">
+					<activiti:string>UTF-8</activiti:string>
+				</activiti:field>
+				<activiti:field name="text">
+					<activiti:expression>Hello ${initiator},
 
 your issue regarding ${summary} is being processed right now and you'll receive an update regarding this issue soon from our dev team.
 
 Best regards</activiti:expression>
-        </activiti:field>
-      </extensionElements>
-    </serviceTask>
-    <sequenceFlow id="requestApprovedFlow" name="Request approved" sourceRef="exclusivegateway3" targetRef="confirmMailTask">
-      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${requestApproved == "true"}]]></conditionExpression>
-    </sequenceFlow>
-    <sequenceFlow id="requestDeniedFlow" name="Request Denied" sourceRef="exclusivegateway3" targetRef="denialMailTask">
-      <conditionExpression xsi:type="tFormalExpression"><![CDATA[${requestApproved == "false"}]]></conditionExpression>
-    </sequenceFlow>
-    <sequenceFlow id="persistIssueFlow" sourceRef="confirmMailTask" targetRef="storeIssueTask"></sequenceFlow>
-    <sequenceFlow id="completeAfterConfirmationFlow" name="complete" sourceRef="storeIssueTask" targetRef="endevent"></sequenceFlow>
-    <sequenceFlow id="completeAfterDenialFlow" name="complete" sourceRef="denialMailTask" targetRef="endevent"></sequenceFlow>
-    <scriptTask id="swearWordFilterScriptTask" name="Swear Word Filter Script Task" scriptFormat="groovy" activiti:autoStoreVariables="true">
-      <script>def badwords = 'fuck|bla'
+				</activiti:field>
+			</extensionElements>
+		</serviceTask>
+		<sequenceFlow id="requestApprovedFlow" name="Request approved"
+			sourceRef="exclusivegateway3" targetRef="confirmMailTask">
+			<conditionExpression xsi:type="tFormalExpression"><![CDATA[${requestApproved == "true"}]]></conditionExpression>
+		</sequenceFlow>
+		<sequenceFlow id="requestDeniedFlow" name="Request Denied"
+			sourceRef="exclusivegateway3" targetRef="denialMailTask">
+			<conditionExpression xsi:type="tFormalExpression"><![CDATA[${requestApproved == "false"}]]></conditionExpression>
+		</sequenceFlow>
+		<sequenceFlow id="persistIssueFlow" sourceRef="confirmMailTask"
+			targetRef="storeIssueTask"></sequenceFlow>
+		<sequenceFlow id="completeAfterConfirmationFlow" name="complete"
+			sourceRef="storeIssueTask" targetRef="endevent"></sequenceFlow>
+		<sequenceFlow id="completeAfterDenialFlow" name="complete"
+			sourceRef="denialMailTask" targetRef="endevent"></sequenceFlow>
+		<scriptTask id="swearWordFilterScriptTask" name="Swear Word Filter Script Task"
+			scriptFormat="groovy" activiti:autoStoreVariables="true">
+			<script>def badwords = 'fuck|bla'
 				def replacement = 'xxx'
 
-				def filteredSummary = summary.replaceAll(badwords, replacement)
-				def filteredDescription = description.replaceAll(badwords, replacement)
+				def
+				filteredSummary = summary.replaceAll(badwords, replacement)
+				def
+				filteredDescription = description.replaceAll(badwords, replacement)
 
 				execution.setVariable('summary', filteredSummary)
 				execution.setVariable('description', filteredDescription)
 			</script>
-    </scriptTask>
-    <sequenceFlow id="processSwearWords" sourceRef="startEvent" targetRef="swearWordFilterScriptTask"></sequenceFlow>
-    <sequenceFlow id="handleDifferentPrioritiesFlow" sourceRef="swearWordFilterScriptTask" targetRef="priorityXorGateway"></sequenceFlow>
-    <sequenceFlow id="handleConfirmationState" sourceRef="joinPrioritySelectionGateway" targetRef="exclusivegateway3"></sequenceFlow>
-  </process>
-  <bpmndi:BPMNDiagram id="BPMNDiagram_issueRequestProcess">
-    <bpmndi:BPMNPlane bpmnElement="issueRequestProcess" id="BPMNPlane_issueRequestProcess">
-      <bpmndi:BPMNShape bpmnElement="approveCriticalIssue" id="BPMNShape_approveCriticalIssue">
-        <omgdc:Bounds height="60.0" width="100.0" x="450.0" y="229.0"></omgdc:Bounds>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape bpmnElement="endevent" id="BPMNShape_endevent">
-        <omgdc:Bounds height="35.0" width="35.0" x="1160.0" y="178.0"></omgdc:Bounds>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape bpmnElement="confirmMailTask" id="BPMNShape_confirmMailTask">
-        <omgdc:Bounds height="60.0" width="100.0" x="850.0" y="69.0"></omgdc:Bounds>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape bpmnElement="storeIssueTask" id="BPMNShape_storeIssueTask">
-        <omgdc:Bounds height="60.0" width="100.0" x="1000.0" y="99.0"></omgdc:Bounds>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape bpmnElement="startEvent" id="BPMNShape_startEvent">
-        <omgdc:Bounds height="35.0" width="35.0" x="30.0" y="162.0"></omgdc:Bounds>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape bpmnElement="denialMailTask" id="BPMNShape_denialMailTask">
-        <omgdc:Bounds height="60.0" width="100.0" x="850.0" y="229.0"></omgdc:Bounds>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape bpmnElement="swearWordFilterScriptTask" id="BPMNShape_swearWordFilterScriptTask">
-        <omgdc:Bounds height="60.0" width="100.0" x="110.0" y="150.0"></omgdc:Bounds>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape bpmnElement="joinPrioritySelectionGateway" id="BPMNShape_joinPrioritySelectionGateway">
-        <omgdc:Bounds height="40.0" width="40.0" x="600.0" y="159.0"></omgdc:Bounds>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape bpmnElement="exclusivegateway3" id="BPMNShape_exclusivegateway3">
-        <omgdc:Bounds height="40.0" width="40.0" x="678.0" y="159.0"></omgdc:Bounds>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape bpmnElement="approveNormalIssue" id="BPMNShape_approveNormalIssue">
-        <omgdc:Bounds height="60.0" width="100.0" x="450.0" y="69.0"></omgdc:Bounds>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape bpmnElement="priorityXorGateway" id="BPMNShape_priorityXorGateway">
-        <omgdc:Bounds height="40.0" width="40.0" x="270.0" y="159.0"></omgdc:Bounds>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge bpmnElement="noncriticalFlow" id="BPMNEdge_noncriticalFlow">
-        <omgdi:waypoint x="310.0" y="179.0"></omgdi:waypoint>
-        <omgdi:waypoint x="322.0" y="179.0"></omgdi:waypoint>
-        <omgdi:waypoint x="322.0" y="99.0"></omgdi:waypoint>
-        <omgdi:waypoint x="450.0" y="99.0"></omgdi:waypoint>
-        <bpmndi:BPMNLabel>
-          <omgdc:Bounds height="39.0" width="100.0" x="10.0" y="0.0"></omgdc:Bounds>
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge bpmnElement="joinAfterNonCriticalApproveFlow" id="BPMNEdge_joinAfterNonCriticalApproveFlow">
-        <omgdi:waypoint x="550.0" y="99.0"></omgdi:waypoint>
-        <omgdi:waypoint x="562.0" y="99.0"></omgdi:waypoint>
-        <omgdi:waypoint x="562.0" y="179.0"></omgdi:waypoint>
-        <omgdi:waypoint x="600.0" y="179.0"></omgdi:waypoint>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge bpmnElement="completeAfterConfirmationFlow" id="BPMNEdge_completeAfterConfirmationFlow">
-        <omgdi:waypoint x="1100.0" y="129.0"></omgdi:waypoint>
-        <omgdi:waypoint x="1112.0" y="129.0"></omgdi:waypoint>
-        <omgdi:waypoint x="1112.0" y="194.0"></omgdi:waypoint>
-        <omgdi:waypoint x="1160.0" y="195.0"></omgdi:waypoint>
-        <bpmndi:BPMNLabel>
-          <omgdc:Bounds height="13.0" width="43.0" x="10.0" y="0.0"></omgdc:Bounds>
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge bpmnElement="requestApprovedFlow" id="BPMNEdge_requestApprovedFlow">
-        <omgdi:waypoint x="718.0" y="179.0"></omgdi:waypoint>
-        <omgdi:waypoint x="730.0" y="179.0"></omgdi:waypoint>
-        <omgdi:waypoint x="730.0" y="99.0"></omgdi:waypoint>
-        <omgdi:waypoint x="850.0" y="99.0"></omgdi:waypoint>
-        <bpmndi:BPMNLabel>
-          <omgdc:Bounds height="13.0" width="88.0" x="10.0" y="0.0"></omgdc:Bounds>
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge bpmnElement="persistIssueFlow" id="BPMNEdge_persistIssueFlow">
-        <omgdi:waypoint x="950.0" y="99.0"></omgdi:waypoint>
-        <omgdi:waypoint x="962.0" y="99.0"></omgdi:waypoint>
-        <omgdi:waypoint x="962.0" y="129.0"></omgdi:waypoint>
-        <omgdi:waypoint x="1000.0" y="129.0"></omgdi:waypoint>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge bpmnElement="criticalFlow" id="BPMNEdge_criticalFlow">
-        <omgdi:waypoint x="310.0" y="179.0"></omgdi:waypoint>
-        <omgdi:waypoint x="322.0" y="179.0"></omgdi:waypoint>
-        <omgdi:waypoint x="322.0" y="259.0"></omgdi:waypoint>
-        <omgdi:waypoint x="450.0" y="259.0"></omgdi:waypoint>
-        <bpmndi:BPMNLabel>
-          <omgdc:Bounds height="39.0" width="100.0" x="10.0" y="0.0"></omgdc:Bounds>
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge bpmnElement="completeAfterDenialFlow" id="BPMNEdge_completeAfterDenialFlow">
-        <omgdi:waypoint x="950.0" y="259.0"></omgdi:waypoint>
-        <omgdi:waypoint x="962.0" y="259.0"></omgdi:waypoint>
-        <omgdi:waypoint x="962.0" y="194.0"></omgdi:waypoint>
-        <omgdi:waypoint x="1160.0" y="195.0"></omgdi:waypoint>
-        <bpmndi:BPMNLabel>
-          <omgdc:Bounds height="13.0" width="43.0" x="10.0" y="0.0"></omgdc:Bounds>
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge bpmnElement="joinAfterCriticalApproveFlow" id="BPMNEdge_joinAfterCriticalApproveFlow">
-        <omgdi:waypoint x="550.0" y="259.0"></omgdi:waypoint>
-        <omgdi:waypoint x="562.0" y="259.0"></omgdi:waypoint>
-        <omgdi:waypoint x="562.0" y="179.0"></omgdi:waypoint>
-        <omgdi:waypoint x="600.0" y="179.0"></omgdi:waypoint>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge bpmnElement="requestDeniedFlow" id="BPMNEdge_requestDeniedFlow">
-        <omgdi:waypoint x="718.0" y="179.0"></omgdi:waypoint>
-        <omgdi:waypoint x="730.0" y="179.0"></omgdi:waypoint>
-        <omgdi:waypoint x="730.0" y="259.0"></omgdi:waypoint>
-        <omgdi:waypoint x="850.0" y="259.0"></omgdi:waypoint>
-        <bpmndi:BPMNLabel>
-          <omgdc:Bounds height="13.0" width="77.0" x="10.0" y="0.0"></omgdc:Bounds>
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge bpmnElement="processSwearWords" id="BPMNEdge_processSwearWords">
-        <omgdi:waypoint x="65.0" y="179.0"></omgdi:waypoint>
-        <omgdi:waypoint x="110.0" y="180.0"></omgdi:waypoint>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge bpmnElement="handleDifferentPrioritiesFlow" id="BPMNEdge_handleDifferentPrioritiesFlow">
-        <omgdi:waypoint x="210.0" y="180.0"></omgdi:waypoint>
-        <omgdi:waypoint x="270.0" y="179.0"></omgdi:waypoint>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge bpmnElement="handleConfirmationState" id="BPMNEdge_handleConfirmationState">
-        <omgdi:waypoint x="640.0" y="179.0"></omgdi:waypoint>
-        <omgdi:waypoint x="678.0" y="179.0"></omgdi:waypoint>
-      </bpmndi:BPMNEdge>
-    </bpmndi:BPMNPlane>
-  </bpmndi:BPMNDiagram>
+		</scriptTask>
+		<sequenceFlow id="processSwearWords" sourceRef="startEvent"
+			targetRef="swearWordFilterScriptTask"></sequenceFlow>
+		<sequenceFlow id="handleDifferentPrioritiesFlow"
+			sourceRef="swearWordFilterScriptTask" targetRef="priorityXorGateway"></sequenceFlow>
+		<sequenceFlow id="handleConfirmationState" sourceRef="joinPrioritySelectionGateway"
+			targetRef="exclusivegateway3"></sequenceFlow>
+	</process>
+	<bpmndi:BPMNDiagram id="BPMNDiagram_issueRequestProcess">
+		<bpmndi:BPMNPlane bpmnElement="issueRequestProcess"
+			id="BPMNPlane_issueRequestProcess">
+			<bpmndi:BPMNShape bpmnElement="approveCriticalIssue"
+				id="BPMNShape_approveCriticalIssue">
+				<omgdc:Bounds height="60.0" width="100.0" x="450.0" y="229.0"></omgdc:Bounds>
+			</bpmndi:BPMNShape>
+			<bpmndi:BPMNShape bpmnElement="endevent" id="BPMNShape_endevent">
+				<omgdc:Bounds height="35.0" width="35.0" x="1160.0" y="178.0"></omgdc:Bounds>
+			</bpmndi:BPMNShape>
+			<bpmndi:BPMNShape bpmnElement="confirmMailTask"
+				id="BPMNShape_confirmMailTask">
+				<omgdc:Bounds height="60.0" width="100.0" x="850.0" y="69.0"></omgdc:Bounds>
+			</bpmndi:BPMNShape>
+			<bpmndi:BPMNShape bpmnElement="storeIssueTask"
+				id="BPMNShape_storeIssueTask">
+				<omgdc:Bounds height="60.0" width="100.0" x="1000.0" y="99.0"></omgdc:Bounds>
+			</bpmndi:BPMNShape>
+			<bpmndi:BPMNShape bpmnElement="startEvent" id="BPMNShape_startEvent">
+				<omgdc:Bounds height="35.0" width="35.0" x="30.0" y="162.0"></omgdc:Bounds>
+			</bpmndi:BPMNShape>
+			<bpmndi:BPMNShape bpmnElement="denialMailTask"
+				id="BPMNShape_denialMailTask">
+				<omgdc:Bounds height="60.0" width="100.0" x="850.0" y="229.0"></omgdc:Bounds>
+			</bpmndi:BPMNShape>
+			<bpmndi:BPMNShape bpmnElement="swearWordFilterScriptTask"
+				id="BPMNShape_swearWordFilterScriptTask">
+				<omgdc:Bounds height="60.0" width="100.0" x="110.0" y="150.0"></omgdc:Bounds>
+			</bpmndi:BPMNShape>
+			<bpmndi:BPMNShape bpmnElement="joinPrioritySelectionGateway"
+				id="BPMNShape_joinPrioritySelectionGateway">
+				<omgdc:Bounds height="40.0" width="40.0" x="600.0" y="159.0"></omgdc:Bounds>
+			</bpmndi:BPMNShape>
+			<bpmndi:BPMNShape bpmnElement="exclusivegateway3"
+				id="BPMNShape_exclusivegateway3">
+				<omgdc:Bounds height="40.0" width="40.0" x="678.0" y="159.0"></omgdc:Bounds>
+			</bpmndi:BPMNShape>
+			<bpmndi:BPMNShape bpmnElement="approveNormalIssue"
+				id="BPMNShape_approveNormalIssue">
+				<omgdc:Bounds height="60.0" width="100.0" x="450.0" y="69.0"></omgdc:Bounds>
+			</bpmndi:BPMNShape>
+			<bpmndi:BPMNShape bpmnElement="priorityXorGateway"
+				id="BPMNShape_priorityXorGateway">
+				<omgdc:Bounds height="40.0" width="40.0" x="270.0" y="159.0"></omgdc:Bounds>
+			</bpmndi:BPMNShape>
+			<bpmndi:BPMNEdge bpmnElement="noncriticalFlow"
+				id="BPMNEdge_noncriticalFlow">
+				<omgdi:waypoint x="310.0" y="179.0"></omgdi:waypoint>
+				<omgdi:waypoint x="322.0" y="179.0"></omgdi:waypoint>
+				<omgdi:waypoint x="322.0" y="99.0"></omgdi:waypoint>
+				<omgdi:waypoint x="450.0" y="99.0"></omgdi:waypoint>
+				<bpmndi:BPMNLabel>
+					<omgdc:Bounds height="39.0" width="100.0" x="10.0" y="0.0"></omgdc:Bounds>
+				</bpmndi:BPMNLabel>
+			</bpmndi:BPMNEdge>
+			<bpmndi:BPMNEdge bpmnElement="joinAfterNonCriticalApproveFlow"
+				id="BPMNEdge_joinAfterNonCriticalApproveFlow">
+				<omgdi:waypoint x="550.0" y="99.0"></omgdi:waypoint>
+				<omgdi:waypoint x="562.0" y="99.0"></omgdi:waypoint>
+				<omgdi:waypoint x="562.0" y="179.0"></omgdi:waypoint>
+				<omgdi:waypoint x="600.0" y="179.0"></omgdi:waypoint>
+			</bpmndi:BPMNEdge>
+			<bpmndi:BPMNEdge bpmnElement="completeAfterConfirmationFlow"
+				id="BPMNEdge_completeAfterConfirmationFlow">
+				<omgdi:waypoint x="1100.0" y="129.0"></omgdi:waypoint>
+				<omgdi:waypoint x="1112.0" y="129.0"></omgdi:waypoint>
+				<omgdi:waypoint x="1112.0" y="194.0"></omgdi:waypoint>
+				<omgdi:waypoint x="1160.0" y="195.0"></omgdi:waypoint>
+				<bpmndi:BPMNLabel>
+					<omgdc:Bounds height="13.0" width="43.0" x="10.0" y="0.0"></omgdc:Bounds>
+				</bpmndi:BPMNLabel>
+			</bpmndi:BPMNEdge>
+			<bpmndi:BPMNEdge bpmnElement="requestApprovedFlow"
+				id="BPMNEdge_requestApprovedFlow">
+				<omgdi:waypoint x="718.0" y="179.0"></omgdi:waypoint>
+				<omgdi:waypoint x="730.0" y="179.0"></omgdi:waypoint>
+				<omgdi:waypoint x="730.0" y="99.0"></omgdi:waypoint>
+				<omgdi:waypoint x="850.0" y="99.0"></omgdi:waypoint>
+				<bpmndi:BPMNLabel>
+					<omgdc:Bounds height="13.0" width="88.0" x="10.0" y="0.0"></omgdc:Bounds>
+				</bpmndi:BPMNLabel>
+			</bpmndi:BPMNEdge>
+			<bpmndi:BPMNEdge bpmnElement="persistIssueFlow"
+				id="BPMNEdge_persistIssueFlow">
+				<omgdi:waypoint x="950.0" y="99.0"></omgdi:waypoint>
+				<omgdi:waypoint x="962.0" y="99.0"></omgdi:waypoint>
+				<omgdi:waypoint x="962.0" y="129.0"></omgdi:waypoint>
+				<omgdi:waypoint x="1000.0" y="129.0"></omgdi:waypoint>
+			</bpmndi:BPMNEdge>
+			<bpmndi:BPMNEdge bpmnElement="criticalFlow" id="BPMNEdge_criticalFlow">
+				<omgdi:waypoint x="310.0" y="179.0"></omgdi:waypoint>
+				<omgdi:waypoint x="322.0" y="179.0"></omgdi:waypoint>
+				<omgdi:waypoint x="322.0" y="259.0"></omgdi:waypoint>
+				<omgdi:waypoint x="450.0" y="259.0"></omgdi:waypoint>
+				<bpmndi:BPMNLabel>
+					<omgdc:Bounds height="39.0" width="100.0" x="10.0" y="0.0"></omgdc:Bounds>
+				</bpmndi:BPMNLabel>
+			</bpmndi:BPMNEdge>
+			<bpmndi:BPMNEdge bpmnElement="completeAfterDenialFlow"
+				id="BPMNEdge_completeAfterDenialFlow">
+				<omgdi:waypoint x="950.0" y="259.0"></omgdi:waypoint>
+				<omgdi:waypoint x="962.0" y="259.0"></omgdi:waypoint>
+				<omgdi:waypoint x="962.0" y="194.0"></omgdi:waypoint>
+				<omgdi:waypoint x="1160.0" y="195.0"></omgdi:waypoint>
+				<bpmndi:BPMNLabel>
+					<omgdc:Bounds height="13.0" width="43.0" x="10.0" y="0.0"></omgdc:Bounds>
+				</bpmndi:BPMNLabel>
+			</bpmndi:BPMNEdge>
+			<bpmndi:BPMNEdge bpmnElement="joinAfterCriticalApproveFlow"
+				id="BPMNEdge_joinAfterCriticalApproveFlow">
+				<omgdi:waypoint x="550.0" y="259.0"></omgdi:waypoint>
+				<omgdi:waypoint x="562.0" y="259.0"></omgdi:waypoint>
+				<omgdi:waypoint x="562.0" y="179.0"></omgdi:waypoint>
+				<omgdi:waypoint x="600.0" y="179.0"></omgdi:waypoint>
+			</bpmndi:BPMNEdge>
+			<bpmndi:BPMNEdge bpmnElement="requestDeniedFlow"
+				id="BPMNEdge_requestDeniedFlow">
+				<omgdi:waypoint x="718.0" y="179.0"></omgdi:waypoint>
+				<omgdi:waypoint x="730.0" y="179.0"></omgdi:waypoint>
+				<omgdi:waypoint x="730.0" y="259.0"></omgdi:waypoint>
+				<omgdi:waypoint x="850.0" y="259.0"></omgdi:waypoint>
+				<bpmndi:BPMNLabel>
+					<omgdc:Bounds height="13.0" width="77.0" x="10.0" y="0.0"></omgdc:Bounds>
+				</bpmndi:BPMNLabel>
+			</bpmndi:BPMNEdge>
+			<bpmndi:BPMNEdge bpmnElement="processSwearWords"
+				id="BPMNEdge_processSwearWords">
+				<omgdi:waypoint x="65.0" y="179.0"></omgdi:waypoint>
+				<omgdi:waypoint x="110.0" y="180.0"></omgdi:waypoint>
+			</bpmndi:BPMNEdge>
+			<bpmndi:BPMNEdge bpmnElement="handleDifferentPrioritiesFlow"
+				id="BPMNEdge_handleDifferentPrioritiesFlow">
+				<omgdi:waypoint x="210.0" y="180.0"></omgdi:waypoint>
+				<omgdi:waypoint x="270.0" y="179.0"></omgdi:waypoint>
+			</bpmndi:BPMNEdge>
+			<bpmndi:BPMNEdge bpmnElement="handleConfirmationState"
+				id="BPMNEdge_handleConfirmationState">
+				<omgdi:waypoint x="640.0" y="179.0"></omgdi:waypoint>
+				<omgdi:waypoint x="678.0" y="179.0"></omgdi:waypoint>
+			</bpmndi:BPMNEdge>
+		</bpmndi:BPMNPlane>
+	</bpmndi:BPMNDiagram>
 </definitions>

src/test/java/it/IssueRequestProcessTest.java

 		User requester = identityService.newUser("Micha Kops");
 		identityService.saveUser(requester);
 
+		// create group service and assign the user to it
+		Group serviceGroup = identityService.newGroup("service");
+		identityService.saveGroup(serviceGroup);
+		identityService.createMembership(requester.getId(),
+				serviceGroup.getId());
+
 		// create a new user for an it-support employee
 		User itguy = identityService.newUser("itguy");
 		identityService.saveUser(itguy);