The activity GroupVote is responsible for collecting necessary data about the voting of a group on a special topic. Unlike the UserVote, it is not possbile to delegate the task. A user that is part of a group can accept or decline a vote and also leave a comment that justifies their decision. The voting result is determined by whatever threshold has been reached first and ends the activity.

Short profile
Name GroupVote
Async No
BPMN type bpmn:userTask
BPMN Extension Element "wf:type" group_vote


Name of property Description Type
due_date Due date for task completion date/timestamp
assigned_group Name of the user group that should vote; can be plain grouname as used in the DB (e.g. "sysop") string
instructions Text that is shown to the group of user, so they know what to vote about string
users_voted Not to be set in the workflow definition. Used to store data during the activities life cycle. E.g.
    { "userName": "UserA", "vote": "yes", "comment": "Good" },
    { "userName": "UserB", "vote": "no",  "comment": "Not good" }
Can be accessed by follow up activitites by e.g.


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

Full example

Once one of the thresholds is reached, the activity will be completed and a <bpmn:exclusiveGateway> (referenced by <bpmn:outgoing>) will be called. It will choose its outgoing <bpmn:sequenceFlow> by mapping its name to the "type" of the threshold that has been reached.

In this example, after the first user either voted yes or no, the workflow will simply reach the end point:

<?xml version="1.0" encoding="UTF-8"?>
<bpmn:definitions xmlns:xsi="" xmlns:wf="" xmlns:bpmn="" xmlns:bpmndi="" xmlns:dc="" xmlns:di="" id="Definitions_1vrglfw" targetNamespace="" exporter="bpmn-js (" exporterVersion="8.7.1">
	<!-- Process part -->
	<bpmn:process id="Group_Vote" isExecutable="false">
				<wf:contextItem name="pageId"/>
			    <wf:contextItem name="revision"/>
		<!-- StartEvent -->
		<bpmn:startEvent id="TheStart">
		<bpmn:sequenceFlow id="FromTheStartToGroupVote" sourceRef="TheStart" targetRef="GroupVote"/>
			<!-- Collect group vote -->
		<bpmn:userTask id="GroupVote" name="GroupVote">
			<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:sequenceFlow id="FromGroupVoteToGatewayGroupVote" sourceRef="GroupVote" targetRef="GatewayGroupVote"/>
		<!-- Check on voting -->
		<bpmn:exclusiveGateway id="GatewayGroupVote" name="">
		<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">

To submit feedback about this documentation, visit our community forum.

No categories assignedEdit