2012-05-09 38 views
0

我想在任務轉換中更新自定義工作流屬性(workflowStatus)。 詳細地說,當我批准工作流時,workflowStatus更改爲「已批准」,並且在我拒絕時,此屬性更改爲「已拒絕」。在轉換期間更新Alfresco工作流屬性

我該怎麼辦? 使用Javascript或其他單獨的Java文件,如AlfrescoJavaScript? 我使用jbpm工作流程。

回答

1

現在我可以解決它。我爲每個轉換編寫自己的操作類,如CustomWorkflowApprove和CustomWorkflowReject。 在這些類中,我更新工作流屬性。我的processdefinition.xml的 部分如下:

<task-node name="approve2"> 
<task name="dmswf:reviewTask2" swimlane="approver2"> 
    <event type="task-create"> 
     <script> 
      if (bpm_workflowDueDate != void) taskInstance.dueDate = bpm_workflowDueDate; 
      if (bpm_workflowPriority != void) taskInstance.priority = bpm_workflowPriority; 
     </script> 
    </event> 
</task> 
<transition name="approve" to="approved" > 
    <action class="org.ace.dms.bean.CustomWorkflowApprove"/> 
</transition> 
    <transition name="reject" to="rejected" > 
     <action class="org.ace.dms.bean.CustomWorkflowReject"/> 
    </transition> 
</task-node> 

這是我CustomWorkflowAction類。

package org.ace.dms.bean; 

    import org.alfresco.repo.workflow.jbpm.JBPMSpringActionHandler; 
    import org.jbpm.graph.exe.ExecutionContext; 

    public abstract class CustomWorkflowAction extends JBPMSpringActionHandler { 

     public static final String APPROVE = "Approved"; 
     public static final String REJECT = "Rejected"; 
     public static final String WORKFLOWSTATUS = "dmswf_workflowStatus"; 

     public void updateWorkflowProperties(ExecutionContext context, 
       String workflowStatus) { 
//update custom workflow property dmswf_workflowStatus, you can update any workflow property here 
      context.setVariable(WORKFLOWSTATUS, workflowStatus); 
     } 
    } 

這是我的CustomWorkflowApprove類。

package org.ace.dms.bean; 

import org.jbpm.graph.exe.ExecutionContext; 
import org.springframework.beans.factory.BeanFactory; 

public class CustomWorkflowApprove extends CustomWorkflowAction { 

    @Override 
    public void execute(ExecutionContext context) throws Exception { 
     updateWorkflowProperties(context, CustomWorkflowAction.APPROVE); 
    } 

    @Override 
    protected void initialiseHandler(BeanFactory factory) { 
     // TODO Auto-generated method stub 
     System.out.println("Initialzize Handler"); 
    } 

}