05-22-2009 04:06 AM
05-29-2009 07:28 AM
06-03-2009 03:24 AM
06-05-2009 04:24 AM
06-05-2009 07:01 AM
package com.someco.web.bean;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.faces.context.FacesContext;
import javax.transaction.UserTransaction;
import org.alfresco.model.ContentModel;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.cmr.security.AuthorityService;
import org.alfresco.service.cmr.security.AuthorityType;
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.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()
{
// 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 = null;
List<WorkflowDefinition> workflowDefs = getWorkflowService().getDefinitions();
for(WorkflowDefinition def : workflowDefs)
{
if(def.name.equals("jbpm$wf:adhoc"))
{
workflowDef = def;
break;
}
}
List<NodeRef> wfPackages = new ArrayList<NodeRef>();
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))
{
wfPackages.add(wi.workflowPackage);
}
}
this.taskList = new ArrayList<Node>();
Set<String> people = getAuthorityService().getAllAuthorities(AuthorityType.USER);
for(String person : people)
{
List<WorkflowTask> tasks = getWorkflowService().getAssignedTasks(person, WorkflowTaskState.IN_PROGRESS);
for(WorkflowTask task : tasks)
{
Map<QName, Serializable> props = task.properties;
for(NodeRef wfPackage : wfPackages)
if(wfPackage.equals(props.get(QName.createQName("http://www.alfresco.org/model/bpm/1.0", "package"))))
{
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;
}
}
<config evaluator="string-compare" condition="Dashboards">
<dashboards>
<dashlets>
<dashlet id="workflow-task-search" label-id="wf_dash_label" description-id="wf_dash_desc" jsp="/jsp/extension/customDashlet/workflow-task-search.jsp" allow-narrow="false" />
</dashlets>
</dashboards>
</config>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="/WEB-INF/alfresco.tld" prefix="a" %>
<%@ taglib uri="/WEB-INF/repo.tld" prefix="r" %>
<a:richList id="task-list" value="#{WorkflowTest.taskList}" var="r" rendered="#{not empty WorkflowTest.taskList}"
viewMode="details" styleClass="recordSet" headerStyleClass="recordSetHeader" rowStyleClass="recordSetRow"
initialSortColumn="created" initialSortDescending="true"
altRowStyleClass="recordSetRowAlt" width="100%" pageSize="10" refreshOnBind="true" >
<a:column id="col1" primary="true" width="400" style="padding:2px;text-align:left">
<f:facet name="header">
<a:sortLink label="#{msg.description}" value="bpm:description" mode="case-insensitive" styleClass="header" />
</f:facet>
<h:outputText id="desc-coll" value="#{r['bpm:description']}" />
</a:column>
<%– Task owner column –%>
<a:column id="col2a" style="padding:2px;text-align:left">
<f:facet name="header">
<a:sortLink id="col2a-sort" label="#{msg.owner}" value="cm:owner" styleClass="header"/>
</f:facet>
<h:outputText id="col2a-txt" value="#{r['cm:owner']}" />
</a:column>
<%– Created Date column –%>
<a:column id="col4" style="padding:2px;text-align:left">
<f:facet name="header">
<a:sortLink id="col4-sort" label="#{msg.created}" value="created" styleClass="header"/>
</f:facet>
<h:outputText id="col4-txt" value="#{r.created}">
<a:convertXMLDate type="both" pattern="#{msg.date_time_pattern}" />
</h:outputText>
</a:column>
<%– Status column –%>
<a:column id="col6" style="padding:2px;text-align:left">
<f:facet name="header">
<a:sortLink id="col6-sort" label="#{msg.status}" value="bpm:status" styleClass="header"/>
</f:facet>
<h:outputText id="col6-txt" value="#{r['bpm:status']}" />
</a:column>
<a:dataPager styleClass="pager" />
</a:richList>
<managed-bean>
<description>Workflow Test</description>
<managed-bean-name>WorkflowTest</managed-bean-name>
<managed-bean-class>com.someco.web.bean.WorkflowTest</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
<managed-property>
<property-name>navigationBean</property-name>
<value>#{NavigationBean}</value>
</managed-property>
<managed-property>
<property-name>workflowService</property-name>
<value>#{WorkflowService}</value>
</managed-property>
<managed-property>
<property-name>authorityService</property-name>
<value>#{AuthorityService}</value>
</managed-property>
<managed-property>
<property-name>nodeService</property-name>
<value>#{NodeService}</value>
</managed-property>
</managed-bean>
06-16-2009 06:26 AM
06-16-2009 06:40 AM
06-16-2009 06:53 AM
06-16-2009 08:58 AM
e.printStackTrace();
06-16-2009 09:43 AM
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.