Implement additional "Abstain" option
Description
Implement a new option to allow users to select "Abstain," alongside the existing "Approve", "Reject" and “Consent“ options.
Allows for the approvers to express a vote of abstention.
If a user decides to abstain, their choice is considered neutral concerning the decisions made by other approvers.
If the other approvers agree, it will be considered as silent approval; if they disagree, it will be considered a rejection.
Abstain can be used:
- on user, group and email steps (and the corresponding issue field steps)
- for action type Approval and Consent
In the global settings, a toggle has been added to enable/disable the option to abstain from voting.
'Allow abstain action' checkbox should be added to definition form.
If it is enabled globally, it can be selected on existing definitions. Newly created definitions have it selected by default.
When approval is created on page, if 'Allow Abstain Approval' is selected for the definition and this option is enabled globally, the 'Abstain' button will appear by default.
There is an option to disable this through parameterization.
If 'Allow Abstain' is disabled either at the definition level or globally, the option is not available for approval steps.
Please pay attention to the added texts and descriptions and provide any suggestions you may have.
Edge cases:
// when
{{step type is group if it contains 3 users }}
number of votes required for group step to pass is 2
number of votes required for group step to fail is 2
// given
first user approved
second user rejected
third user abstain
// then
"Abstain" is treated as silent approval
after considering the abstain votes, number of votes required for group step to pass is met, 1 approve & 1 abstain >= 2 required votes to pass
step is marked as approved
// when
{{step type is group if it contains 3 users }}
number of votes required for group step to pass is 3
number of votes required for group step to fail is 2
// given
first user approved
second user rejected
third user abstain
// then
after considering the abstain votes, number of votes required for group step to pass is not met, 1 approval & 1 abstain < 3 required votes to pass
next, the condition on the number of rejected votes is checked, number of votes required for group step to fail is met, 1 reject & 1 abstain >= 2 required votes to fail
step is marked as rejected
Based on customer request
Additionally, the form for creating definitions and the available steps in it have been changed. Please perform regression testing for creating/editing definitions for all possible steps.