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

@@ -476,4 +476,6 @@ patch.syncSetDefinitionsContainer.description=Patch to add the root folder for S
patch.swsdpPatch.description=Patch to fix up the Sample: Web Site Design Project.
patch.swsdpPatch.success=Successfully patched the Sample: Web Site Design Project.
patch.swsdpPatch.skipped=Skipped, not required.
patch.swsdpPatch.missingSurfConfig=surf-config folder is not present in Sample: Web Site Design Project.
patch.swsdpPatch.missingSurfConfig=surf-config folder is not present in Sample: Web Site Design Project.
patch.redeployParallelActivitiWorkflows.description=Patch that redeploys both parallel activiti workflows, completion-condition now takes into account if minimum approval percentage can still be achived.

View File

@@ -3196,5 +3196,27 @@
<property name="siteService" ref="siteService" />
<property name="hiddenAspect" ref="hiddenAspect" />
</bean>
<bean id="patch.redeployParallelActivitiWorkflows" class="org.alfresco.repo.admin.patch.impl.GenericWorkflowPatch" parent="basePatch" >
<property name="id"><value>patch.redeployParallelActivitiWorkflows</value></property>
<property name="description"><value>patch.redeployParallelActivitiWorkflows.description</value></property>
<property name="fixesFromSchema"><value>0</value></property>
<property name="fixesToSchema"><value>6009</value></property>
<property name="targetSchema"><value>6010</value></property>
<property name="workflowDefinitions">
<list>
<props>
<prop key="engineId">activiti</prop>
<prop key="location">alfresco/workflow/parallel-review.bpmn20.xml</prop>
<prop key="mimetype">text/xml</prop>
</props>
<props>
<prop key="engineId">activiti</prop>
<prop key="location">alfresco/workflow/parallel-review-group.bpmn20.xml</prop>
<prop key="mimetype">text/xml</prop>
</props>
</list>
</property>
</bean>
</beans>

View File

@@ -19,4 +19,4 @@ version.build=@build-number@
# Schema number
version.schema=6009
version.schema=6010

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>