05-22-2009 04:06 AM
06-19-2009 09:28 AM
package com.someco.web.bean;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.context.FacesContext;
import javax.transaction.UserTransaction;
import org.alfresco.model.ContentModel;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.cmr.security.AuthorityService;
import org.alfresco.service.cmr.workflow.WorkflowDefinition;
import org.alfresco.service.cmr.workflow.WorkflowInstance;
import org.alfresco.service.cmr.workflow.WorkflowService;
import org.alfresco.service.cmr.workflow.WorkflowTask;
import org.alfresco.service.cmr.workflow.WorkflowTaskDefinition;
import org.alfresco.service.cmr.workflow.WorkflowTaskQuery;
import org.alfresco.service.cmr.workflow.WorkflowTaskState;
import org.alfresco.service.namespace.QName;
import org.alfresco.web.app.Application;
import org.alfresco.web.bean.NavigationBean;
import org.alfresco.web.bean.repository.Node;
import org.alfresco.web.bean.repository.Repository;
import org.alfresco.web.bean.repository.TransientMapNode;
import org.alfresco.web.bean.repository.User;
import org.alfresco.web.ui.common.Utils;
public class WorkflowTest implements Serializable {
   
   private static final long serialVersionUID = 1L;
   
   protected NavigationBean navigationBean;
   
   transient private NodeService nodeService;
   transient private WorkflowService workflowService;
   transient private AuthorityService authorityService;
   
   protected List<Node> taskList;
   
   public static final String BEAN_NAME = "WorkflowTest";
   
   public List<Node> getTaskList()
   {
      this.taskList = new ArrayList<Node>();
      
      // get the current username
       FacesContext context = FacesContext.getCurrentInstance();
       User user = Application.getCurrentUser(context);
       String currentUser = user.getUserName();
       
       UserTransaction tx = null;
        try
        {
           tx = Repository.getUserTransaction(context, true);
            tx.begin();
           
           WorkflowDefinition workflowDef = getWorkflowService().getDefinitionByName("jbpm$wf:adhoc");
         List<WorkflowInstance> wis = getWorkflowService().getActiveWorkflows(workflowDef.id);
         for(WorkflowInstance wi : wis) 
         {
            String wfInitiator = (String) getNodeService().getProperty(wi.initiator, QName.createQName("http://www.alfresco.org/model/content/1.0", "userName"));
            if(currentUser.equalsIgnoreCase(wfInitiator)) 
            {
               WorkflowTaskQuery wtq = new WorkflowTaskQuery();
               
               wtq.setActive(true);
               wtq.setTaskState(WorkflowTaskState.IN_PROGRESS);
               wtq.setProcessId(wi.id);
               
               List<WorkflowTask> tasks = workflowService.queryTasks(wtq);
               for(WorkflowTask task : tasks){
                     Node node = createTask(task);
                     this.taskList.add(node);
               }
            }
         }
         tx.commit();
         
        } catch (Throwable e) {
            // rollback the transaction
            try { if (tx != null) {tx.rollback();} } catch (Exception ex) {}
            Utils.addErrorMessage("Failed to get all active tasks: " + e.toString(), e);
        }
        return this.taskList;
   }
   
   protected TransientMapNode createTask(WorkflowTask task) {
      // get the type of the task
       WorkflowTaskDefinition taskDef = task.definition;
         
       // create the basic transient node
       TransientMapNode node = new TransientMapNode(taskDef.metadata.getName(), task.title, task.properties);
         
       // add properties for the other useful metadata
       node.getProperties().put(ContentModel.PROP_NAME.toString(), task.title);
       node.getProperties().put("type", node.getType().toString());
       node.getProperties().put("id", task.id);
       node.getProperties().put("owner", task.properties.get(QName.createQName("http://www.alfresco.org/model/content/1.0", "owner")));
      
       return node;
   }
   
   public void setNavigationBean(NavigationBean navigationBean) {
      this.navigationBean = navigationBean;
   }
   
   public void setWorkflowService(WorkflowService workflowService) {
      this.workflowService = workflowService;
   }
   
   protected WorkflowService getWorkflowService() {
      if (this.workflowService == null) {
         this.workflowService = Repository.getServiceRegistry(FacesContext.getCurrentInstance()).getWorkflowService();
      }
      return this.workflowService;
   }
   
   public void setNodeService(NodeService nodeService) {
      this.nodeService = nodeService;
   }
   
   protected NodeService getNodeService() {
      if (this.nodeService == null) {
         this.nodeService = Repository.getServiceRegistry(FacesContext.getCurrentInstance()).getNodeService();
      }
      return this.nodeService;
   }
   
   protected AuthorityService getAuthorityService() {
      if(this.authorityService == null) {
         this.authorityService = Repository.getServiceRegistry(FacesContext.getCurrentInstance()).getAuthorityService();
      }
      return this.authorityService;
   }
   
   public void setAuthorityService(AuthorityService authorityService) {
      this.authorityService = authorityService;
   }     
}
					
				
			
			
				
			
			
			
			
			
			
			
		06-19-2009 01:31 PM
06-20-2009 01:04 PM
Tags
Find what you came for
We want to make your experience in Hyland Connect as valuable as possible, so we put together some helpful links.