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.