Verwenden von Timer-Ereignissen
Bei der Prozessmodellierung können Sie das BPMN-Element intermediate boundary event (angeheftetes Zwischenereignis) vom Typ Timer verwenden. Diese Zwischenereignisse können Sie an Benutzeraktivitäten oder Services heften. Zum Einstieg in das Arbeiten mit angehefteten Zwischenereignissen ist es hilfreich, wenn Sie zunächst einen einfachen Prozess mit einer Benutzeraktivität erstellen.
Das BPMN-Modell dieses beispielhaften Prozesses ist folgendermaßen aufgebaut:
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" targetNamespace="" exporter="d.velop process modeler"> <process id="timer_event_process" name="Timer Event Process" isExecutable="true"> <startEvent id="start" /> <userTask id="task_hello_world" name="Hello World" camunda:candidateUsers="${variables.get('dv_initiator')}" /> <sequenceFlow id="s1" sourceRef="start" targetRef="task_hello_world" /> <sequenceFlow id="s2" sourceRef="task_hello_world" targetRef="end" /> </process> </definitions>
Hinzufügen eines Zwischenereignisses
Fügen Sie dem Prozess das BPMN-Element boundaryEvent hinzu.
... <process id="timer_event_process" name="Timer Event Process" isExecutable="true"> ... <userTask ... /> <boundaryEvent id="timer" attachedToRef="task_hello_world"> <timerEventDefinition> <timeDuration>PT1M</timeDuration> </timerEventDefinition> </boundaryEvent> ... </process>
Erläuterung der Eigenschaften
id:Die Eigenschaft wird als eindeutiger Bezeichner für die Sendenaktivität verwendet.
attachedToRef: Die Eigenschaft definiert, an welches BPMN-Element dieses Zwischenereignis angeheftet werden soll.
Erläuterung der Ereignisdefinition:
timerEventDefinition: Dieses BPMN-Element definiert, dass es sich bei dem Zwischenereignis um ein Zeitereignis handelt
timeDuration: Dieses BPMN-Element definiert, dass es sich um eine relative Zeitspanne handelt. In diesem Fall ist eine Spanne von einer Minute definiert. Möchten Sie einen absoluten Zeitpunkt definieren, können Sie das BPMN-Element timeDate verwenden. In beiden Fällen müssen Sie die Werte im ISO-8601-Format angeben. Sie können die Werte auch aus Variablen ermitteln.
Hinzufügen eines Ereignispfades
Tritt im Prozess ein Zwischenereignis ein, folgt der Prozess einem separaten Prozesspfad. Sie können einen Prozess beispielsweise so konfigurieren, dass der Prozess von einem Zwischenereignis direkt zum Endereignis führt. Diese Konfiguration fügen Sie folgendermaßen in den Prozess ein:
... <process id="timer_event_process" name="Timer Event Process" isExecutable="true"> ... <sequenceFlow id="s3" sourceRef="timer" targetRef="end" /> </process>
Damit das BPMN-Diagramm im Modellierungswerkzeug sowie der Benutzeroberfläche korrekt dargestellt werden kann, wurde es noch um Diagramminformationen erweitert. Die finale BPMN-Definition sieht folgendermaßen aus:
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" 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" targetNamespace="" exporter="d.velop process modeler"> <process id="timer_event_process" name="Timer Event Process" isExecutable="true"> <startEvent id="start" /> <userTask id="task_hello_world" name="Hello World" camunda:candidateUsers="${variables.get('dv_initiator')}" /> <boundaryEvent id="timer" attachedToRef="task_hello_world"> <timerEventDefinition> <timeDuration>PT1M</timeDuration> </timerEventDefinition> </boundaryEvent> <endEvent id="end" /> <sequenceFlow id="s1" sourceRef="start" targetRef="task_hello_world" /> <sequenceFlow id="s2" sourceRef="task_hello_world" targetRef="end" /> <sequenceFlow id="s3" sourceRef="timer" targetRef="end" /> </process> <!-- Diagram information --> <bpmndi:BPMNDiagram id="BPMNDiagram_1"> <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="timer_event_process"> <bpmndi:BPMNShape id="start_di" bpmnElement="start"> <dc:Bounds x="179" y="99" width="36" height="36" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="task_hello_world_di" bpmnElement="task_hello_world"> <dc:Bounds x="290" y="77" width="100" height="80" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="timer_di" bpmnElement="timer"> <dc:Bounds x="372" y="139" width="36" height="36" /> </bpmndi:BPMNShape> <bpmndi:BPMNShape id="end_di" bpmnElement="end"> <dc:Bounds x="462" y="99" width="36" height="36" /> </bpmndi:BPMNShape> <bpmndi:BPMNEdge id="s1_di" bpmnElement="s1"> <di:waypoint x="215" y="117" /> <di:waypoint x="290" y="117" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="s2_di" bpmnElement="s2"> <di:waypoint x="390" y="117" /> <di:waypoint x="462" y="117" /> </bpmndi:BPMNEdge> <bpmndi:BPMNEdge id="s3_di" bpmnElement="s3"> <di:waypoint x="408" y="157" /> <di:waypoint x="480" y="157" /> <di:waypoint x="480" y="135" /> </bpmndi:BPMNEdge> </bpmndi:BPMNPlane> </bpmndi:BPMNDiagram> </definitions>