diff --git a/config/alfresco/web-client-application-context.xml b/config/alfresco/web-client-application-context.xml
index fac2f10bc4..f34685bb91 100644
--- a/config/alfresco/web-client-application-context.xml
+++ b/config/alfresco/web-client-application-context.xml
@@ -11,6 +11,7 @@
classpath:alfresco/web-client-config-wizards.xml
classpath:alfresco/web-client-config-properties.xml
classpath:alfresco/web-client-config-navigation.xml
+ classpath:alfresco/web-client-config-wcm.xml
classpath:alfresco/web-client-config-actions.xml
classpath:alfresco/web-client-config-forum-actions.xml
classpath:alfresco/web-client-config-wcm-actions.xml
diff --git a/config/alfresco/web-client-config-wcm.xml b/config/alfresco/web-client-config-wcm.xml
new file mode 100644
index 0000000000..808a90977e
--- /dev/null
+++ b/config/alfresco/web-client-config-wcm.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+ wcmwf:submit
+
+
+
+
+
+
diff --git a/source/java/org/alfresco/web/bean/wcm/AVMWorkflowUtil.java b/source/java/org/alfresco/web/bean/wcm/AVMWorkflowUtil.java
index 8d5d95867b..81df1dde89 100644
--- a/source/java/org/alfresco/web/bean/wcm/AVMWorkflowUtil.java
+++ b/source/java/org/alfresco/web/bean/wcm/AVMWorkflowUtil.java
@@ -23,10 +23,13 @@ import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
+import java.util.StringTokenizer;
import javax.faces.context.FacesContext;
+import org.alfresco.config.ConfigElement;
import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.model.WCMAppModel;
import org.alfresco.repo.avm.AVMNodeConverter;
@@ -42,12 +45,16 @@ import org.alfresco.service.cmr.repository.ContentService;
import org.alfresco.service.cmr.repository.ContentWriter;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
+import org.alfresco.service.cmr.workflow.WorkflowDefinition;
import org.alfresco.service.cmr.workflow.WorkflowPath;
import org.alfresco.service.cmr.workflow.WorkflowService;
import org.alfresco.service.namespace.QName;
import org.alfresco.util.GUID;
+import org.alfresco.web.app.Application;
import org.alfresco.web.bean.repository.Repository;
import org.alfresco.web.bean.workflow.WorkflowUtil;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
/**
* AVM Specific workflow related helper methods.
@@ -57,11 +64,16 @@ import org.alfresco.web.bean.workflow.WorkflowUtil;
*/
public class AVMWorkflowUtil extends WorkflowUtil
{
+ private static final Log logger = LogFactory.getLog(AVMWorkflowUtil.class);
+
// Common workflow definitions
private static final String WCM_WORKFLOW_MODEL_1_0_URI = "http://www.alfresco.org/model/wcmworkflow/1.0";
public static final QName PROP_FROM_PATH = QName.createQName(WCM_WORKFLOW_MODEL_1_0_URI, "fromPath");
public static final QName PROP_LABEL = QName.createQName(WCM_WORKFLOW_MODEL_1_0_URI, "label");
+ // cached configured lists
+ private static List configuredWorkflowDefs = null;
+
public static NodeRef createWorkflowPackage(final List srcPaths,
final String storeId,
final WorkflowPath path,
@@ -156,4 +168,50 @@ public class AVMWorkflowUtil extends WorkflowUtil
throw new AlfrescoRuntimeException("Unable to deserialize workflow default parameters: " + classErr.getMessage());
}
}
+
+ /**
+ * @return the list of WorkflowDefinition objects as configured in the wcm/workflows client config.
+ */
+ public static List getConfiguredWorkflows()
+ {
+ if (configuredWorkflowDefs == null)
+ {
+ FacesContext fc = FacesContext.getCurrentInstance();
+ List defs = Collections.emptyList();
+ ConfigElement config = Application.getConfigService(fc).getGlobalConfig().getConfigElement("wcm");
+ if (config != null)
+ {
+ ConfigElement workflowConfig = config.getChild("workflows");
+ if (workflowConfig != null)
+ {
+ WorkflowService service = Repository.getServiceRegistry(fc).getWorkflowService();
+ StringTokenizer t = new StringTokenizer(workflowConfig.getValue().trim(), ", ");
+ defs = new ArrayList(t.countTokens());
+ while (t.hasMoreTokens())
+ {
+ String wfName = t.nextToken();
+ WorkflowDefinition def = service.getDefinitionByName("jbpm$" + wfName);
+ if (def != null)
+ {
+ defs.add(def);
+ }
+ else
+ {
+ logger.warn("WARNING: Cannot find WCM workflow def for configured definition name: " + wfName);
+ }
+ }
+ }
+ else
+ {
+ logger.warn("WARNING: Unable to find WCM 'workflows' config element definition.");
+ }
+ }
+ else
+ {
+ logger.warn("WARNING: Unable to find 'wcm' config element definition.");
+ }
+ configuredWorkflowDefs = defs;
+ }
+ return configuredWorkflowDefs;
+ }
}
diff --git a/source/java/org/alfresco/web/bean/wcm/CreateFormWizard.java b/source/java/org/alfresco/web/bean/wcm/CreateFormWizard.java
index a8d322ce05..d7b10f7e79 100644
--- a/source/java/org/alfresco/web/bean/wcm/CreateFormWizard.java
+++ b/source/java/org/alfresco/web/bean/wcm/CreateFormWizard.java
@@ -19,19 +19,26 @@ package org.alfresco.web.bean.wcm;
import java.io.File;
import java.io.Serializable;
import java.text.MessageFormat;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.ResourceBundle;
+
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.event.ValueChangeEvent;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import javax.faces.model.SelectItem;
-import org.alfresco.error.AlfrescoRuntimeException;
+
import org.alfresco.model.ContentModel;
import org.alfresco.model.WCMAppModel;
import org.alfresco.repo.content.MimetypeMap;
-import org.alfresco.service.cmr.model.FileInfo;
import org.alfresco.service.cmr.model.FileExistsException;
+import org.alfresco.service.cmr.model.FileInfo;
import org.alfresco.service.cmr.repository.ContentService;
import org.alfresco.service.cmr.repository.ContentWriter;
import org.alfresco.service.cmr.repository.MimetypeService;
@@ -44,15 +51,22 @@ import org.alfresco.web.bean.FileUploadBean;
import org.alfresco.web.bean.wizard.BaseWizardBean;
import org.alfresco.web.data.IDataContainer;
import org.alfresco.web.data.QuickSort;
-import org.alfresco.web.forms.*;
+import org.alfresco.web.forms.FormsService;
+import org.alfresco.web.forms.RenderingEngine;
+import org.alfresco.web.forms.RenderingEngineTemplate;
+import org.alfresco.web.forms.RenderingEngineTemplateImpl;
+import org.alfresco.web.forms.XMLUtil;
import org.alfresco.web.forms.xforms.SchemaUtil;
-import org.alfresco.web.ui.common.component.UIListItem;
import org.alfresco.web.ui.common.Utils;
+import org.alfresco.web.ui.common.component.UIListItem;
import org.alfresco.web.ui.wcm.WebResources;
+import org.apache.commons.io.FilenameUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.xerces.xs.*;
-import org.apache.commons.io.FilenameUtils;
+import org.apache.xerces.xs.XSConstants;
+import org.apache.xerces.xs.XSElementDeclaration;
+import org.apache.xerces.xs.XSModel;
+import org.apache.xerces.xs.XSNamedMap;
import org.w3c.dom.Document;
/**
@@ -989,9 +1003,8 @@ public class CreateFormWizard
{
if (this.defaultWorkflowChoices == null)
{
- // TODO: add list of workflows from config
- // @see org.alfresco.web.wcm.FormDetailsDialog#getWorkflowList()
- final List workflowDefs = this.workflowService.getDefinitions();
+ // get list of workflows from config definitions
+ final List workflowDefs = AVMWorkflowUtil.getConfiguredWorkflows();
this.defaultWorkflowChoices = new ArrayList(workflowDefs.size() + 1);
for (WorkflowDefinition workflowDef : workflowDefs)
diff --git a/source/java/org/alfresco/web/bean/wcm/CreateWebsiteWizard.java b/source/java/org/alfresco/web/bean/wcm/CreateWebsiteWizard.java
index d004b8dc4e..bda55fabe4 100644
--- a/source/java/org/alfresco/web/bean/wcm/CreateWebsiteWizard.java
+++ b/source/java/org/alfresco/web/bean/wcm/CreateWebsiteWizard.java
@@ -643,9 +643,8 @@ public class CreateWebsiteWizard extends BaseWizardBean
*/
public List getWorkflowList()
{
- // TODO: add list of workflows from config
- // @see org.alfresco.web.wcm.FormDetailsDialog#getWorkflowList()
- List workflowDefs = this.workflowService.getDefinitions();
+ // get list of workflows from config definitions
+ List workflowDefs = AVMWorkflowUtil.getConfiguredWorkflows();
List items = new ArrayList(workflowDefs.size());
for (WorkflowDefinition workflowDef : workflowDefs)
{
diff --git a/source/java/org/alfresco/web/bean/wcm/FormDetailsDialog.java b/source/java/org/alfresco/web/bean/wcm/FormDetailsDialog.java
index 08f2a0388d..11ae0c978e 100644
--- a/source/java/org/alfresco/web/bean/wcm/FormDetailsDialog.java
+++ b/source/java/org/alfresco/web/bean/wcm/FormDetailsDialog.java
@@ -188,9 +188,8 @@ public class FormDetailsDialog extends BaseDialogBean
*/
public List getWorkflowList()
{
- // TODO: add list of workflows from config
- // @see org.alfresco.web.wcm.CreateWebsiteWizard#getWorkflowList()
- List workflowDefs = this.workflowService.getDefinitions();
+ // get list of workflows from config definitions
+ List workflowDefs = AVMWorkflowUtil.getConfiguredWorkflows();
List items = new ArrayList(workflowDefs.size());
for (WorkflowDefinition workflowDef : workflowDefs)
{