Beschreibung[Bearbeiten | Quelltext bearbeiten]

Die Aktivität GroupVote sammelt notwendige Daten über die Abstimmung einer Gruppe zu einem speziellen Thema. Anders als beim UserVote ist es nicht möglich, die Abstimmung zu delegieren. Ein Benutzer, der Teil einer Gruppe ist, kann eine Stimme annehmen oder ablehnen und auch einen Kommentar hinterlassen, der seine Entscheidung begründet. Das Abstimmungsergebnis hat mit dem zuvor erreichten Schwellenwert das Ende erreicht und beendet die Aktivität.

Kurzprofil
Name GroupVote
Async nein
BPMN Typ bpmn:userTask
BPMN Extension Element "wf:type" group_vote

Attribute[Bearbeiten | Quelltext bearbeiten]

Name des Attributs Beschreibung Typ
due_date Fälligkeitsdatum der Aufgabe date/timestamp
assigned_group Name der Benutzergruppe, die abstimmen soll; kann ein einfacher Gruppenname aus der DB sein (z.B. "sysop") string
instructions Text, der der Benutzergruppe angezeigt wird (Abstimmungsanweisung) string
users_voted Nicht in der Workflow-Definition einstellbar. Wird verwendet, um Daten während des Aktivitätslebenszyklus zu speichern., z.B.:
[
    { "userName": "UserA", "vote": "yes", "comment": "Good" },
    { "userName": "UserB", "vote": "no",  "comment": "Not good" }
]
Kann von Folgeaktivitäten abgerufen werden, z.B.:

{{<GroupVoteActivityID>.0.userName}}

string
threshold_yes_unit can be user or percent - absolute number of users required to a approve a page user, percent
threshold_yes_value number of users or percentage of users required to approve a page
threshold_no_unit can be user or percent - absolute number of users required to a reject a page user, percent
threshold_no_value number of users or percentage of users required to reject a page

Beispiel[Bearbeiten | Quelltext bearbeiten]

Sobald der Schwellenwert erreicht wurde, wird die Aktivität abgeschlossen und <bpmn:exclusiveGateway> (referenziert von <bpmn:outgoing>) wird aufgerufen. Es wählt sein ausgehendes <bpmn:sequenceFlow> , indem es seinen name dem "Typ" des erreichten Schwellenwerts zuordnet.

In diesem Beispiel erreicht der Workflow seinen Endpunkt, nachdem der erste zugewiesene Benutzer entweder mit ja oder nein gestimmt hat:

<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wf="http://hallowelt.com/schema/bpmn/wf" 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_1vrglfw" targetNamespace="http://bpmn.io/schema/bpmn" exporter="bpmn-js (https://demo.bpmn.io)" exporterVersion="8.7.1">
	<!-- Process part -->
	<bpmn:process id="Group_Vote" isExecutable="false">
		<bpmn:extensionElements>
			<wf:context>
				<wf:contextItem name="pageId"/>
			    <wf:contextItem name="revision"/>
			</wf:context>
		</bpmn:extensionElements>
		<!-- StartEvent -->
		<bpmn:startEvent id="TheStart">
			<bpmn:outgoing>FromTheStartToGroupVote</bpmn:outgoing>
		</bpmn:startEvent>
		<bpmn:sequenceFlow id="FromTheStartToGroupVote" sourceRef="TheStart" targetRef="GroupVote"/>
			<!-- Collect group vote -->
		<bpmn:userTask id="GroupVote" name="GroupVote">
			<bpmn:extensionElements>
				<wf:type>group_vote</wf:type>
			</bpmn:extensionElements>
			<bpmn:property name="assigned_group">QM-reviewer</bpmn:property>
			<bpmn:property name="instructions">Please vote</bpmn:property>
			<bpmn:property name="comment"/>
			<bpmn:property name="vote">vote</bpmn:property>
			<bpmn:property name="users_voted"/>
			<bpmn:property name="due_date">{{#time:YmdHis|now + 7days}}</bpmn:property>

			<bpmn:property name="threshold_yes_unit">user</bpmn:property>
			<bpmn:property name="threshold_yes_value">1</bpmn:property>
			<bpmn:property name="threshold_no_unit">user</bpmn:property>
			<bpmn:property name="threshold_no_value">1</bpmn:property>

			<bpmn:incoming>FromtheStartToGroupVote</bpmn:incoming>
			<bpmn:outgoing>FromGroupVoteToGatewayGroupVote</bpmn:outgoing>
		</bpmn:userTask>
		<bpmn:sequenceFlow id="FromGroupVoteToGatewayGroupVote" sourceRef="GroupVote" targetRef="GatewayGroupVote"/>
		<!-- Check on voting -->
		<bpmn:exclusiveGateway id="GatewayGroupVote" name="GroupVote.vote">
			<bpmn:incoming>FromGroupVoteToGatewayGroupVote</bpmn:incoming>
			<bpmn:outgoing>FromGatewayGroupVoteToTheEndYes</bpmn:outgoing>
		   <bpmn:outgoing>FromGatewayGroupVoteToTheEndNo</bpmn:outgoing>
		</bpmn:exclusiveGateway>
		<bpmn:sequenceFlow id="FromGatewayGroupVoteToTheEndYes" name="yes" sourceRef="GatewayGroupVote" targetRef="TheEnd"/>
		<bpmn:sequenceFlow id="FromGatewayGroupVoteToTheEndNo" name="no" sourceRef="GatewayGroupVote" targetRef="TheEnd"/>
		<!-- EndEvent -->
		<bpmn:endEvent id="TheEnd">
			<bpmn:incoming>FromGatewayGroupVoteToTheEndYes</bpmn:incoming>
           <bpmn:incoming>FromGatewayGroupVoteToTheEndNo</bpmn:incoming>
		</bpmn:endEvent>
	</bpmn:process>
</bpmn:definitions>




Feedback zur Dokumentation ist im Community-Forum möglich.