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" }
]
|
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>