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:
David Caruana
2006-12-07 00:05:28 +00:00
parent 43b533cd3f
commit 0a69421b22
12 changed files with 93 additions and 21 deletions

View File

@@ -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

View File

@@ -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>

View File

@@ -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";

View File

@@ -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()

View File

@@ -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);

View File

@@ -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.
*/

View File

@@ -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));

View File

@@ -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;
}

View File

@@ -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);

View File

@@ -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)
{

View File

@@ -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);
}

View File

@@ -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 />