mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
WCM submit (for approval) workflow.
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4540 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -1220,6 +1220,8 @@ wf_review_options=Review Options
|
||||
wf_review_status=Review Status
|
||||
wf_review_due_date=Review Due Date
|
||||
wf_review_priority=Review Priority
|
||||
wf_review_options=Review Options
|
||||
wf_review_status=Review Status
|
||||
wf_reviewer=Reviewer
|
||||
wf_reviewers=Reviewers
|
||||
wf_adhoc_due_date=Due Date
|
||||
|
@@ -347,6 +347,55 @@
|
||||
</property-sheet>
|
||||
</config>
|
||||
|
||||
<!-- WCM workflow tasks -->
|
||||
|
||||
<config evaluator="node-type" condition="wcmwf:submitReviewTask" replace="true">
|
||||
<property-sheet>
|
||||
<separator name="sep2" display-label-id="wf_review_options" component-generator="HeaderSeparatorGenerator" />
|
||||
<show-property name="wcmwf:reviewType"/>
|
||||
<separator name="sep3" display-label-id="users_and_roles" component-generator="HeaderSeparatorGenerator" />
|
||||
<show-association name="bpm:assignees" display-label-id="wf_reviewers" />
|
||||
</property-sheet>
|
||||
</config>
|
||||
|
||||
<config evaluator="node-type" condition="wcmwf:reviewTask" replace="true">
|
||||
<property-sheet>
|
||||
<separator name="sep1" display-label-id="general" component-generator="HeaderSeparatorGenerator" />
|
||||
<show-property name="bpm:taskId" />
|
||||
<show-property name="bpm:description" component-generator="TextAreaGenerator" read-only="true"/>
|
||||
<show-property name="bpm:status" />
|
||||
<separator name="sep2" display-label-id="wf_reviewers" component-generator="HeaderSeparatorGenerator" />
|
||||
<show-property name="wcmwf:reviewType" read-only="true" />
|
||||
<show-association name="bpm:assignees" display-label-id="wf_reviewers" read-only="true"/>
|
||||
</property-sheet>
|
||||
</config>
|
||||
|
||||
<config evaluator="node-type" condition="wcmwf:rejectedTask" replace="true">
|
||||
<property-sheet>
|
||||
<separator name="sep1" display-label-id="general" component-generator="HeaderSeparatorGenerator" />
|
||||
<show-property name="bpm:taskId" />
|
||||
<show-property name="bpm:description" component-generator="TextAreaGenerator" read-only="true"/>
|
||||
<show-property name="wcmwf:label" />
|
||||
<separator name="sep2" display-label-id="wf_review_status" component-generator="HeaderSeparatorGenerator" />
|
||||
<show-property name="wcmwf:reviewType" read-only="true"/>
|
||||
<show-association name="bpm:assignees" display-label-id="wf_reviewers" read-only="true"/>
|
||||
<show-property name="wcmwf:approveCnt" read-only="true"/>
|
||||
</property-sheet>
|
||||
</config>
|
||||
|
||||
<config evaluator="node-type" condition="wcmwf:approvedTask" replace="true">
|
||||
<property-sheet>
|
||||
<separator name="sep1" display-label-id="general" component-generator="HeaderSeparatorGenerator" />
|
||||
<show-property name="bpm:taskId" />
|
||||
<show-property name="bpm:description" component-generator="TextAreaGenerator" read-only="true"/>
|
||||
<show-property name="wcmwf:label" />
|
||||
<separator name="sep2" display-label-id="wf_review_status" component-generator="HeaderSeparatorGenerator" />
|
||||
<show-property name="wcmwf:reviewType" read-only="true"/>
|
||||
<show-association name="bpm:assignees" display-label-id="wf_reviewers" read-only="true"/>
|
||||
<show-property name="wcmwf:approveCnt" read-only="true"/>
|
||||
</property-sheet>
|
||||
</config>
|
||||
|
||||
<!-- Configuration for wcm types -->
|
||||
<config evaluator="node-type" condition="wca:webfolder">
|
||||
<property-sheet>
|
||||
|
@@ -34,6 +34,7 @@ import org.alfresco.service.cmr.repository.ContentReader;
|
||||
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.namespace.QName;
|
||||
import org.alfresco.util.GUID;
|
||||
import org.alfresco.web.bean.repository.Repository;
|
||||
import org.alfresco.web.bean.workflow.WorkflowUtil;
|
||||
@@ -45,6 +46,11 @@ import org.alfresco.web.bean.workflow.WorkflowUtil;
|
||||
*/
|
||||
public class AVMWorkflowUtil extends WorkflowUtil
|
||||
{
|
||||
// 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");
|
||||
|
||||
private static final String STORE_WORKFLOW_SYSTEM = "workflow-system";
|
||||
private static final String FOLDER_PACKAGES = "packages";
|
||||
|
||||
|
@@ -788,7 +788,7 @@ public class CreateFormWizard
|
||||
{
|
||||
return (this.defaultWorkflowName == null
|
||||
? null
|
||||
: this.workflowService.getDefinitionByName("jbpm$" + this.defaultWorkflowName));
|
||||
: this.workflowService.getDefinitionByName(this.defaultWorkflowName));
|
||||
}
|
||||
|
||||
public String[] getDefaultWorkflowName()
|
||||
|
@@ -266,7 +266,7 @@ public class CreateWebContentWizard extends BaseContentWizard
|
||||
|
||||
if (LOGGER.isDebugEnabled())
|
||||
LOGGER.debug("using workflow " + workflowName + " for form " + formName);
|
||||
wd = this.workflowService.getDefinitionByName("jbpm$" + workflowName);
|
||||
wd = this.workflowService.getDefinitionByName(workflowName);
|
||||
|
||||
// deserialize the workflow parameters
|
||||
parameters = (Map<QName, Serializable>)AVMWorkflowUtil.deserializeWorkflowParams(workflowRef);
|
||||
|
@@ -658,7 +658,7 @@ public class CreateWebsiteWizard extends BaseWizardBean
|
||||
if (index != -1)
|
||||
{
|
||||
WorkflowDefinition workflow = (WorkflowDefinition)this.workflowsList.get(index).getValue();
|
||||
this.workflows.add(new WorkflowWrapper(workflow.getName(), workflow.getTitle()));
|
||||
this.workflows.add(new WorkflowWrapper(workflow.getName(), workflow.getTitle(), workflow.getDescription()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -782,7 +782,7 @@ public class CreateWebsiteWizard extends BaseWizardBean
|
||||
WorkflowDefinition wf = this.form.getDefaultWorkflow();
|
||||
if (this.workflow == null && wf != null)
|
||||
{
|
||||
this.workflow = new WorkflowWrapper(wf.name, wf.getTitle());
|
||||
this.workflow = new WorkflowWrapper(wf.name, wf.getTitle(), wf.getDescription());
|
||||
}
|
||||
return this.workflow;
|
||||
}
|
||||
@@ -937,14 +937,16 @@ public class CreateWebsiteWizard extends BaseWizardBean
|
||||
{
|
||||
private String name;
|
||||
private String title;
|
||||
private String description;
|
||||
private String filenamePattern;
|
||||
private QName type;
|
||||
private Map<QName, Serializable> params;
|
||||
|
||||
public WorkflowWrapper(String name, String title)
|
||||
public WorkflowWrapper(String name, String title, String description)
|
||||
{
|
||||
this.name = name;
|
||||
this.title = title;
|
||||
this.description = description;
|
||||
this.filenamePattern = filenamePattern;
|
||||
}
|
||||
|
||||
@@ -964,6 +966,14 @@ public class CreateWebsiteWizard extends BaseWizardBean
|
||||
return this.title;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the display label of the workflow.
|
||||
*/
|
||||
public String getDescription()
|
||||
{
|
||||
return this.description;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Returns the filename pattern.
|
||||
*/
|
||||
|
@@ -99,10 +99,10 @@ public class EditWebsiteWizard extends CreateWebsiteWizard
|
||||
{
|
||||
NodeRef wfRef = workflowRefs.get(0).getChildRef();
|
||||
String wfName = (String)this.nodeService.getProperty(wfRef, WCMAppModel.PROP_WORKFLOW_NAME);
|
||||
WorkflowDefinition wfDef = this.workflowService.getDefinitionByName("jbpm$" + wfName);
|
||||
WorkflowDefinition wfDef = this.workflowService.getDefinitionByName(wfName);
|
||||
if (wfDef != null)
|
||||
{
|
||||
WorkflowWrapper wfWrapper = new WorkflowWrapper(wfName, wfDef.getTitle());
|
||||
WorkflowWrapper wfWrapper = new WorkflowWrapper(wfName, wfDef.getTitle(), wfDef.getDescription());
|
||||
wfWrapper.setParams((Map<QName, Serializable>)AVMWorkflowUtil.deserializeWorkflowParams(wfRef));
|
||||
if (wfDef.startTaskDefinition != null)
|
||||
{
|
||||
@@ -144,10 +144,10 @@ public class EditWebsiteWizard extends CreateWebsiteWizard
|
||||
{
|
||||
NodeRef wfRef = wChildRef.getChildRef();
|
||||
String wfName = (String)this.nodeService.getProperty(wfRef, WCMAppModel.PROP_WORKFLOW_NAME);
|
||||
WorkflowDefinition wfDef = this.workflowService.getDefinitionByName("jbpm$" + wfName);
|
||||
WorkflowDefinition wfDef = this.workflowService.getDefinitionByName(wfName);
|
||||
if (wfDef != null)
|
||||
{
|
||||
WorkflowWrapper wfWrapper = new WorkflowWrapper(wfName, wfDef.getTitle());
|
||||
WorkflowWrapper wfWrapper = new WorkflowWrapper(wfName, wfDef.getTitle(), wfDef.getDescription());
|
||||
wfWrapper.setParams((Map<QName, Serializable>)AVMWorkflowUtil.deserializeWorkflowParams(wfRef));
|
||||
wfWrapper.setFilenamePattern((String)this.nodeService.getProperty(
|
||||
wfRef, WCMAppModel.PROP_FILENAMEPATTERN));
|
||||
|
@@ -231,8 +231,8 @@ public class FormDetailsDialog extends BaseDialogBean
|
||||
}
|
||||
if (this.workflowSelectedValue != null && this.workflowSelectedValue.length != 0)
|
||||
{
|
||||
WorkflowDefinition def = this.workflowService.getDefinitionByName("jbpm$" + this.workflowSelectedValue[0]);
|
||||
form.setWorkflow(new CreateWebsiteWizard.WorkflowWrapper(def.getName(), def.getTitle()));
|
||||
WorkflowDefinition def = this.workflowService.getDefinitionByName(this.workflowSelectedValue[0]);
|
||||
form.setWorkflow(new CreateWebsiteWizard.WorkflowWrapper(def.getName(), def.getTitle(), def.getDescription()));
|
||||
}
|
||||
return outcome;
|
||||
}
|
||||
|
@@ -121,8 +121,7 @@ public class FormWorkflowDialog extends BaseDialogBean
|
||||
{
|
||||
if (this.workflowNode == null)
|
||||
{
|
||||
// TODO: remove the 'jbpm$' prefix once bug fix to WorkflowService has been merged across!
|
||||
WorkflowDefinition flowDef = this.workflowService.getDefinitionByName("jbpm$" + getActionWorkflow().getName());
|
||||
WorkflowDefinition flowDef = this.workflowService.getDefinitionByName(getActionWorkflow().getName());
|
||||
|
||||
if (logger.isDebugEnabled())
|
||||
logger.debug("Selected workflow: "+ flowDef);
|
||||
|
@@ -174,8 +174,13 @@ public class SubmitDialog extends BaseDialogBean
|
||||
NodeRef workflowPackage = createWorkflowPackage();
|
||||
params.put(WorkflowModel.ASSOC_PACKAGE, workflowPackage);
|
||||
|
||||
// add submission parameters
|
||||
params.put(WorkflowModel.PROP_WORKFLOW_DESCRIPTION, getComment());
|
||||
params.put(AVMWorkflowUtil.PROP_LABEL, getLabel());
|
||||
params.put(AVMWorkflowUtil.PROP_FROM_PATH, AVMConstants.buildAVMStoreRootPath(this.avmBrowseBean.getSandbox()));
|
||||
|
||||
// start the workflow to get access to the start task
|
||||
WorkflowDefinition wfDef = workflowService.getDefinitionByName("jbpm$" + workflowName);
|
||||
WorkflowDefinition wfDef = workflowService.getDefinitionByName(workflowName);
|
||||
WorkflowPath path = this.workflowService.startWorkflow(wfDef.id, params);
|
||||
if (path != null)
|
||||
{
|
||||
@@ -286,7 +291,7 @@ public class SubmitDialog extends BaseDialogBean
|
||||
List<UIListItem> items = new ArrayList<UIListItem>(this.workflows.size());
|
||||
for (FormWorkflowWrapper wrapper : this.workflows)
|
||||
{
|
||||
WorkflowDefinition workflowDef = this.workflowService.getDefinitionByName("jbpm$" + wrapper.Name);
|
||||
WorkflowDefinition workflowDef = this.workflowService.getDefinitionByName(wrapper.Name);
|
||||
UIListItem item = new UIListItem();
|
||||
item.setValue(workflowDef.getName());
|
||||
item.setLabel(workflowDef.getTitle());
|
||||
@@ -423,11 +428,12 @@ public class SubmitDialog extends BaseDialogBean
|
||||
{
|
||||
List<ItemWrapper> items = getSubmitItems();
|
||||
|
||||
// create package paths (layered to user sandbox area as target)
|
||||
String sandboxPath = AVMConstants.buildAVMStoreRootPath(this.avmBrowseBean.getSandbox());
|
||||
String packagesPath = AVMWorkflowUtil.createAVMLayeredPackage(this.avmService, sandboxPath);
|
||||
// create package paths (layered to staging area as target)
|
||||
String stagingPath = AVMConstants.buildAVMStoreRootPath(this.avmBrowseBean.getStagingStore());
|
||||
String packagesPath = AVMWorkflowUtil.createAVMLayeredPackage(this.avmService, stagingPath);
|
||||
|
||||
// construct diffs for selected items for submission
|
||||
String sandboxPath = AVMConstants.buildAVMStoreRootPath(this.avmBrowseBean.getSandbox());
|
||||
List<AVMDifference> diffs = new ArrayList<AVMDifference>(this.submitItems.size());
|
||||
for (ItemWrapper wrapper : this.submitItems)
|
||||
{
|
||||
|
@@ -104,7 +104,7 @@ class FormImpl
|
||||
WCMAppModel.PROP_DEFAULT_WORKFLOW_NAME);
|
||||
final WorkflowService workflowService = this.getServiceRegistry().getWorkflowService();
|
||||
return (defaultWorkflowName != null
|
||||
? workflowService.getDefinitionByName("jbpm$" + defaultWorkflowName)
|
||||
? workflowService.getDefinitionByName(defaultWorkflowName)
|
||||
: null);
|
||||
}
|
||||
|
||||
|
@@ -76,9 +76,9 @@
|
||||
<h:panelGrid columns="2" cellpadding="3" cellspacing="3" border="0" style="margin-left:16px" styleClass="summary">
|
||||
<c:forEach items="${WizardManager.bean.workflows}" var="r">
|
||||
<h:outputText value="#{msg.name}:" styleClass="mainSubTitle" />
|
||||
<f:verbatim>${r.name}</f:verbatim>
|
||||
<h:outputText value="#{msg.title}:" styleClass="mainSubTitle" />
|
||||
<f:verbatim>${r.title}</f:verbatim>
|
||||
<h:outputText value="#{msg.description}:" styleClass="mainSubTitle" />
|
||||
<f:verbatim>${r.description}</f:verbatim>
|
||||
<h:outputText value="#{msg.website_filename_pattern}:" styleClass="mainSubTitle" />
|
||||
<f:verbatim>${r.filenamePattern}</f:verbatim>
|
||||
<f:verbatim />
|
||||
|
Reference in New Issue
Block a user