Merged V4.0-BUG-FIX to HEAD

37124: ALF-14220: Parallel reviews now takes into account maximum percentage of approval rate possible when deciding to add new task

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@37125 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Frederik Heremans
2012-05-29 07:28:07 +00:00
parent 6155c6ec15
commit 6dc5146a8e
5 changed files with 55 additions and 7 deletions

View File

@@ -13,7 +13,11 @@
<activiti:field name="script">
<activiti:string>
execution.setVariable('wf_approveCount', 0);
execution.setVariable('wf_rejectCount', 0);
execution.setVariable('wf_actualPercent', 0);
execution.setVariable('wf_actualRejectPercent', 0);
execution.setVariable('wf_requiredPercent', wf_requiredApprovePercent);
</activiti:string>
</activiti:field>
@@ -62,11 +66,17 @@
<activiti:field name="script">
<activiti:string>
if(task.getVariableLocal('wf_reviewOutcome') == 'Approve') {
var newApprovedCount = wf_approveCount + 1;
var newApprovedCount = wf_approveCount + 1;
var newApprovedPercentage = (newApprovedCount / wf_reviewerCount) * 100;
execution.setVariable('wf_approveCount', newApprovedCount);
execution.setVariable('wf_actualPercent', newApprovedPercentage);
} else {
var newRejectCount = wf_rejectCount + 1;
var newRejectPercentage = (newRejectCount / wf_reviewerCount) * 100;
execution.setVariable('wf_rejectCount', newRejectCount);
execution.setVariable('wf_actualRejectPercent', newRejectPercentage);
}
</activiti:string>
</activiti:field>
@@ -83,7 +93,7 @@
<multiInstanceLoopCharacteristics isSequential="false">
<loopDataInputRef>wf_groupMembers</loopDataInputRef>
<inputDataItem name="reviewAssignee" />
<completionCondition>${wf_actualPercent >= wf_requiredApprovePercent}</completionCondition>
<completionCondition>${wf_actualPercent >= wf_requiredApprovePercent || wf_requiredApprovePercent > (100 - wf_actualRejectPercent)}</completionCondition>
</multiInstanceLoopCharacteristics>
</userTask>
@@ -118,6 +128,8 @@
task.setVariableLocal('wf_requiredPercent', wf_requiredPercent);
task.setVariableLocal('wf_actualPercent', wf_actualPercent);
task.setVariableLocal('wf_approveCount', wf_approveCount);
task.setVariableLocal('wf_rejectCount', wf_rejectCount);
task.setVariableLocal('wf_actualRejectPercent', wf_actualRejectPercent);
</activiti:string>
</activiti:field>
</activiti:taskListener>
@@ -146,6 +158,8 @@
task.setVariableLocal('wf_requiredPercent', wf_requiredPercent);
task.setVariableLocal('wf_actualPercent', wf_actualPercent);
task.setVariableLocal('wf_approveCount', wf_approveCount);
task.setVariableLocal('wf_rejectCount', wf_rejectCount);
task.setVariableLocal('wf_actualRejectPercent', wf_actualRejectPercent);
</activiti:string>
</activiti:field>
</activiti:taskListener>

View File

@@ -13,7 +13,11 @@
<activiti:field name="script">
<activiti:string>
execution.setVariable('wf_approveCount', 0);
execution.setVariable('wf_actualPercent', 0);
execution.setVariable('wf_rejectCount', 0);
execution.setVariable('wf_actualPercent', 0);
execution.setVariable('wf_actualRejectPercent', 0);
execution.setVariable('wf_reviewerCount', bpm_assignees.size());
execution.setVariable('wf_requiredPercent', wf_requiredApprovePercent);
</activiti:string>
@@ -44,11 +48,17 @@
<activiti:field name="script">
<activiti:string>
if(task.getVariableLocal('wf_reviewOutcome') == 'Approve') {
var newApprovedCount = wf_approveCount + 1;
var newApprovedCount = wf_approveCount + 1;
var newApprovedPercentage = (newApprovedCount / wf_reviewerCount) * 100;
execution.setVariable('wf_approveCount', newApprovedCount);
execution.setVariable('wf_actualPercent', newApprovedPercentage);
} else {
var newRejectCount = wf_rejectCount + 1;
var newRejectPercentage = (newRejectCount / wf_reviewerCount) * 100;
execution.setVariable('wf_rejectCount', newRejectCount);
execution.setVariable('wf_actualRejectPercent', newRejectPercentage);
}
</activiti:string>
</activiti:field>
@@ -65,7 +75,7 @@
<multiInstanceLoopCharacteristics isSequential="false">
<loopDataInputRef>bpm_assignees</loopDataInputRef>
<inputDataItem name="reviewAssignee" />
<completionCondition>${wf_actualPercent >= wf_requiredApprovePercent}</completionCondition>
<completionCondition>${wf_actualPercent >= wf_requiredApprovePercent || wf_requiredApprovePercent > (100 - wf_actualRejectPercent)}</completionCondition>
</multiInstanceLoopCharacteristics>
</userTask>