Handbuch:Erweiterung/Workflows/Activity/GroupVote: Unterschied zwischen den Versionen

(Die Seite wurde neu angelegt: „==Beschreibung== Die Aktivität ''GroupVote'' sammelt notwendige Daten über die Abstimmung einer Gruppe zu einem speziellen Thema. Anders als beim ''Handbuc…“)
 
Keine Bearbeitungszusammenfassung
 
Zeile 17: Zeile 17:
|<code>group_vote</code>
|<code>group_vote</code>
|}
|}
==Extension Elemente==
{| class="wikitable" style="width:100%;"
!'''Name des Extension Elements'''
!'''Beschreibung'''
!'''Typ'''
|-
|<code>threshold</code>
|Mehrere Schwellenwerte können definiert werden.
|element
|-
|<code>threshold/type</code>
|Beliebige Kennung, zu verwenden im verbundenen Gateway
|string
|-
|<code>threshold/value</code>
|Entweder absolute oder relative Zahl von Benutzern. Hängt von <code>unit</code> ab.
|int
|-
|<code>threshold/unit</code>
|Entweder <code>user</code> oder <code>percent</code>.
|string
|}
===Beispiel===
<syntaxhighlight lang="xml">
<bpmn:extensionElements>
  <wf:type>group_vote</wf:type>
  <wf:threshold>
  <wf:type>yes</wf:type>
<wf:value>3</wf:value>
<wf:unit>user</wf:unit>
    </wf:threshold>
    <wf:threshold>
  <wf:type>no</wf:type>
<wf:value>10</wf:value>
<wf:unit>percent</wf:unit>
    </wf:threshold>
</bpmn:extensionElements>
<bpmn:outgoing>FromGroupVoteToGatewayGroupVote</bpmn:outgoing>
</syntaxhighlight>Sobald der Schwellenwert erreicht wurde, wird die Aktivität abgeschlossen und  <code><bpmn:exclusiveGateway></code> (referenziert von <code><bpmn:outgoing></code>) wird aufgerufen. Es wählt sein ausgehendes <code><bpmn:sequenceFlow></code> , indem es seinen <code>name</code>  dem  "Typ" des erreichten Schwellenwerts zuordnet.<syntaxhighlight lang="xml">
<bpmn:exclusiveGateway id="GatewayGroupVote">
  <bpmn:incoming>FromGroupVoteToGatewayGroupVote</bpmn:incoming>
  <bpmn:outgoing>FromGatewayUserVoteToApproveRevision</bpmn:outgoing>
  <bpmn:outgoing>FromGatewayUserVoteToSendMail</bpmn:outgoing>
</bpmn:exclusiveGateway>
<bpmn:sequenceFlow
    name="yes"
    id="FromGatewayGroupVoteToApproveRevision"
    sourceRef="GatewayGroupVote"
    argetRef="ApproveRevision"
/>
<bpmn:sequenceFlow
    name="no"
    id="FromGatewayGroupVoteToSendMail"
    sourceRef="GatewayGroupVote"
    targetRef="SendMail"
/>
</syntaxhighlight>
==Attribute==
==Attribute==
{| class="wikitable" style="width:100%;"
{| class="wikitable" style="width:100%;"
!'''Name des Attributs'''
!'''Name des Attributs'''
!'''Quelle'''
!'''Beschreibung'''
!'''Beschreibung'''
!'''Typ'''
!'''Typ'''
|-
|-
|<code>due_date</code>
|<code>due_date</code>
|<code>UIActivity</code>
|Fälligkeitsdatum der Aufgabe
|Fälligkeitsdatum der Aufgabe
|date/timestamp
|date/timestamp
|-
|-
|<code>assigned_group</code>
|<code>assigned_group</code>
| -
|Name der Benutzergruppe, die abstimmen soll; kann ein einfacher Gruppenname aus der DB sein (z.B. "sysop")
|Name der Benutzergruppe, die abstimmen soll; kann ein einfacher Gruppenname aus der DB sein (z.B. "sysop")
|string
|string
|-
|-
|<code>instructions</code>
|<code>instructions</code>
| -
|Text, der der Benutzergruppe angezeigt wird (Abstimmungsanweisung)
|Text, der der Benutzergruppe angezeigt wird (Abstimmungsanweisung)
|string
|string
|-
|-
|<code>users_voted</code>
|<code>users_voted</code>
| -
|Nicht in der Workflow-Definition einstellbar. Wird verwendet, um Daten während des Aktivitätslebenszyklus zu speichern., z.B.:<syntaxhighlight lang="json">
|Nicht in der Workflow-Definition einstellbar. Wird verwendet, um Daten während des Aktivitätslebenszyklus zu speichern., z.B.:<syntaxhighlight lang="json">
[
[
Zeile 111: Zeile 45:
<code><nowiki>{{<GroupVoteActivityID>.0.userName}}</nowiki></code>
<code><nowiki>{{<GroupVoteActivityID>.0.userName}}</nowiki></code>
|string
|string
|-
|<code>threshold_yes_unit</code>
|can be <code>user</code> or <code>percent</code> - absolute number of users required to a approve a page
|user, percent
|-
|<code>threshold_yes_value</code>
|number of users or percentage of users required to approve a page
|
|-
|<code>threshold_no_unit</code>
|can be <code>user</code> or <code>percent</code> - absolute number of users required to a reject a page
|user, percent
|-
|<code>threshold_no_value</code>
|number of users or percentage of users required to reject a page
|
|}
|}
== Beispiel ==
Sobald der Schwellenwert erreicht wurde, wird die Aktivität abgeschlossen und  <code><bpmn:exclusiveGateway></code> (referenziert von <code><bpmn:outgoing></code>) wird aufgerufen. Es wählt sein ausgehendes <code><bpmn:sequenceFlow></code> , indem es seinen <code>name</code>  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:<syntaxhighlight lang="xml">
<?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>
</syntaxhighlight>

Aktuelle Version vom 30. Oktober 2023, 13:06 Uhr

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.