Merged V1.3 to V1.4 (Workflow changes required)

svn merge svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4152 svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4153 .
   svn merge svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4163 svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4164 .
   svn merge svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4178 svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4179 .
   svn merge svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4328 svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4329 .
   svn merge svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4331 svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4332 .



git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4529 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Derek Hulley
2006-12-06 16:03:37 +00:00
parent a67f2d0cc9
commit 93c54b5127
10 changed files with 518 additions and 23 deletions

View File

@@ -0,0 +1,33 @@
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
<beans>
<bean id="sample.workflowBootstrap" parent="workflowDeployer">
<property name="workflowDefinitions">
<list>
<props>
<prop key="engineId">jbpm</prop>
<prop key="location">alfresco/workflow/parallelreview_processdefinition.xml</prop>
<prop key="mimetype">text/xml</prop>
<prop key="redeploy">false</prop>
</props>
</list>
</property>
<property name="models">
<list>
<!-- NOTE: The above process definition relies on the default workflowModel.xml -->
<!-- which is already registered during Alfresco startup. -->
<!-- See bootstrap-context.xml (workflowBootstrap). -->
</list>
</property>
<property name="labels">
<list>
<!-- NOTE: The above process definition relies on the default workflow-messages.properties -->
<!-- which is already registered during Alfresco startup -->
<!-- See bootstrap-context.xml (workflowBootstrap). -->
</list>
</property>
</bean>
</beans>

View File

@@ -17,14 +17,8 @@
<task name="wf:adhocTask" swimlane="assignee">
<event type="task-create">
<script>
if (bpm_workflowDueDate != void)
{
taskInstance.dueDate = bpm_workflowDueDate;
}
if (bpm_workflowPriority != void)
{
taskInstance.priority = bpm_workflowPriority;
}
if (bpm_workflowDueDate != void) taskInstance.dueDate = bpm_workflowDueDate;
if (bpm_workflowPriority != void) taskInstance.priority = bpm_workflowPriority;
</script>
</event>
</task>

View File

@@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8"?>
<process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="wf:parallelreview">
<swimlane name="initiator"></swimlane>
<start-state name="start">
<task name="wf:submitParallelReviewTask" swimlane="initiator" />
<transition name="" to="startreview">
<script>
<variable name="wf_approveCount" access="write" />
<expression>
wf_approveCount = 0;
</expression>
</script>
</transition>
</start-state>
<node name="startreview">
<action class="org.alfresco.repo.workflow.jbpm.ForEachFork">
<foreach>#{bpm_assignees}</foreach>
<var>reviewer</var>
</action>
<transition name="review" to="review" />
</node>
<task-node name="review">
<task name="wf:reviewTask">
<event type="task-create">
<action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
<script>
taskInstance.actorId = reviewer.properties["cm:userName"];
</script>
</action>
</event>
</task>
<transition name="reject" to="endreview" />
<transition name="approve" to="endreview">
<script>
<variable name="wf_approveCount" access="read,write" />
<expression>
wf_approveCount = wf_approveCount +1;
</expression>
</script>
</transition>
</task-node>
<join name="endreview">
<transition to="isapproved" />
</join>
<decision name="isapproved">
<event type="node-enter">
<script>
<variable name="wf_reviewerCount" access="write"/>
<variable name="wf_requiredPercent" access="write"/>
<variable name="wf_actualPercent" access="write"/>
<expression>
wf_requiredPercent = wf_requiredApprovePercent;
wf_reviewerCount = bpm_assignees.size();
wf_actualPercent = ((wf_approveCount * 100) / wf_reviewerCount);
</expression>
</script>
</event>
<transition name="reject" to="rejected" />
<transition name="approve" to="approved">
<condition>#{wf_actualPercent >= wf_requiredApprovePercent}</condition>
</transition>
</decision>
<task-node name="rejected">
<task name="wf:rejectedParallelTask" swimlane="initiator" />
<transition to="end" />
</task-node>
<task-node name="approved">
<task name="wf:approvedParallelTask" swimlane="initiator" />
<transition to="end" />
</task-node>
<end-state name="end"/>
</process-definition>

View File

@@ -17,14 +17,8 @@
<task name="wf:reviewTask" swimlane="reviewer">
<event type="task-create">
<script>
if (bpm_workflowDueDate != void)
{
taskInstance.dueDate = bpm_workflowDueDate;
}
if (bpm_workflowPriority != void)
{
taskInstance.priority = bpm_workflowPriority;
}
if (bpm_workflowDueDate != void) taskInstance.dueDate = bpm_workflowDueDate;
if (bpm_workflowPriority != void) taskInstance.priority = bpm_workflowPriority;
</script>
</event>
</task>

View File

@@ -35,6 +35,41 @@ wf_review.task.wf_approvedTask.description=Approved
wf_review.node.end.title=End
wf_review.node.end.description=End
#
# Parallel Review Workflow
#
wf_parallelreview.workflow.title=Group Review & Approve
wf_parallelreview.workflow.description=Group Review & approval of content
# Parallel Review & Approve Task Definitions
wf_workflowmodel.type.wf_submitParallelReviewTask.title=Start Group Review
wf_workflowmodel.type.wf_submitParallelReviewTask.description=Submit documents for review & approval to a group of people
wf_workflowmodel.property.wf_requiredApprovePercent.title=Required approval percentage
wf_workflowmodel.property.wf_requiredApprovePercent.description=Percentage of reviewers who must approve for approval
wf_workflowmodel.type.wf_rejectedParallelTask.title=Rejected
wf_workflowmodel.type.wf_rejectedParallelTask.description=Rejected
wf_workflowmodel.type.wf_approvedParallelTask.title=Approved
wf_workflowmodel.type.wf_approvedParallelTask.description=Approved
wf_workflowmodel.property.wf_reviewerCount.title=Number of reviewers
wf_workflowmodel.property.wf_reviewerCount.description=Number of reviewers
wf_workflowmodel.property.wf_requiredPercent.title=Required approval percentage
wf_workflowmodel.property.wf_requiredPercent.description=Required approval percentage
wf_workflowmodel.property.wf_approveCount.title=Reviewers who approved
wf_workflowmodel.property.wf_approveCount.description=Reviewers who approved
wf_workflowmodel.property.wf_actualPercent.title=Actual approval percentage
wf_workflowmodel.property.wf_actualPercentdescription=Actual approval percentage
# Group Review & Approve Process Definitions
wf_parallelreview.node.review.transition.reject.title=Reject
wf_parallelreview.node.review.transition.reject.description=Reject
wf_parallelreview.node.review.transition.approve.title=Approve
wf_parallelreview.node.review.transition.approve.description=Approve
#
# Adhoc Task Workflow
#

View File

@@ -23,6 +23,26 @@
<aspect>bpm:assignee</aspect>
</mandatory-aspects>
</type>
<type name="wf:submitParallelReviewTask">
<parent>bpm:startTask</parent>
<properties>
<property name="wf:requiredApprovePercent">
<type>d:int</type>
<mandatory>true</mandatory>
<default>50</default>
<constraints>
<constraint type="MINMAX">
<parameter name="minValue"><value>1</value></parameter>
<parameter name="maxValue"><value>100</value></parameter>
</constraint>
</constraints>
</property>
</properties>
<mandatory-aspects>
<aspect>bpm:assignees</aspect>
</mandatory-aspects>
</type>
<type name="wf:reviewTask">
<parent>bpm:workflowTask</parent>
@@ -32,7 +52,21 @@
</property>
</overrides>
</type>
<type name="wf:rejectedParallelTask">
<parent>bpm:workflowTask</parent>
<mandatory-aspects>
<aspect>wf:parallelReviewStats</aspect>
</mandatory-aspects>
</type>
<type name="wf:approvedParallelTask">
<parent>bpm:workflowTask</parent>
<mandatory-aspects>
<aspect>wf:parallelReviewStats</aspect>
</mandatory-aspects>
</type>
<!-- -->
<!-- Adhoc Tasks -->
@@ -84,6 +118,27 @@
</mandatory-aspects>
</type>
</types>
</types>
<aspects>
<aspect name="wf:parallelReviewStats">
<properties>
<property name="wf:reviewerCount">
<type>d:int</type>
</property>
<property name="wf:requiredPercent">
<type>d:int</type>
</property>
<property name="wf:approveCount">
<type>d:int</type>
</property>
<property name="wf:actualPercent">
<type>d:int</type>
</property>
</properties>
</aspect>
</aspects>
</model>