03-26-2010 05:39 AM
Please correct the errors below then click OK.
Failed to create content due to error: 02260020 Failed to execute script 'workspace://SpacesStore/8667c518-3ca3-4e45-9a4e-fa949b6d50d1': Destination Node is a mandatory parameter
04-12-2010 05:17 AM
document.owner='admin';
companyhome.owner='admin';
space.owner='admin';
var targetFolder = companyhome.childByNamePath("/{http://www.alfresco.org/model/application/1.0}company_home/{http://www.alfresco.org/model/applicatio... Review");
//var targetFolder = companyhome.childByNamePath("Under Review");
logger.log("targetFolder !@@!"+targetFolder);
var res = document.move(targetFolder);
14:10:14,599 User:xxxxx DEBUG [repo.jscript.ScriptLogger] targetFolder !@@!null
04-16-2010 05:00 AM
//This worlfow is triggered as any content is uploaded in repository using DM.
logger.log('************* Starting Approval workflow! *************');
var workflow = actions.create("start-workflow");
workflow.parameters.workflowName = "jbpm$workflwo_name";
var APPROVER_GROUP="APPROVER_GROUP_NAME";
var approverGroup=people.getGroup("GROUP_"+APPROVER_GROUP);
workflow.parameters["bpm_groupAssignee"] = approverGroup;
workflow.parameters["bpm:workflowDescription"] = "This document is pending for your approval.";
workflow.execute(document);
<?xml version="1.0" encoding="UTF-8"?>
<process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="KPDocsReview">
<swimlane name="initiator" />
<start-state name="start">
<task name="wf:submitReviewTask" swimlane="initiator" />
<transition name="" to="review" />
</start-state>
<swimlane name="reviewer">
<assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
<pooledactors>#{bpm_assignee}</pooledactors>
</assignment>
</swimlane>
<task-node name="review">
<task name="wf:reviewTask" swimlane="reviewer">
<event type="task-create">
<script>
<variable name="wfFlag" access="write"/>
<expression>
wfFlag = "Moved";
</expression>
</script>
<action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
<runas>admin</runas>
<script>
logger.log("In Workflow,Content moved.");
executionContext.setVariable("wfFlag", wfFlag);
logger.log("wfFlag in WF "+wfFlag);
for (var i = 0; i < bpm_package.children.length; i++) {
var nodeRef = bpm_package.children[i].nodeRef;
logger.log("nodeRef "+nodeRef);
executionContext.setVariable("nodeRef", nodeRef);
var docParentRef = bpm_package.children[i].parent.nodeRef;
logger.log("docParentRef "+docParentRef);
executionContext.setVariable("docParentRef", docParentRef);
}
var finalLoc = companyhome.childByNamePath("/xxxx Knowledge Management/Under Review");
var targetNodeRef = finalLoc.nodeRef;
logger.log("targetNodeRef "+targetNodeRef);
executionContext.setVariable("targetNodeRef", targetNodeRef);
var userHomeRef = userhome.nodeRef;
logger.log("userHomeRef "+userHomeRef);
executionContext.setVariable("userHomeRef", userHomeRef);
</script>
</action>
<action class="com.xxxx.alfresco.km.bpm.KMReviewProcessAction" name="test123"/>
</event>
</task>
<transition name="Approve" to="approved" />
<transition name="Disapprove" to="rejected" />
</task-node>
<node name="rejected">
<event type="node-leave">
<script>
<variable name="wfFlag" access="write"/>
<expression>
wfFlag = "Rejected";
</expression>
</script>
<action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
<runas>admin</runas>
<script>
logger.log("In Rejection Process.");
</script>
</action>
<action class="com.xxxx.alfresco.km.bpm.KMReviewProcessAction" name="test123"/>
</event>
<transition name="" to="end" />
</node>
<node name="approved">
<event type="node-leave">
<script>
<variable name="wfFlag" access="write"/>
<expression>
wfFlag = "Approved";
</expression>
</script>
<action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
<runas>admin</runas>
<script>
logger.log("In Approval Process,changing Owner to Admin.");
bpm_package.children[0].owner = "admin";
</script>
</action>
<action class="com.xxxx.alfresco.km.bpm.KMReviewProcessAction" name="test123"/>
</event>
<transition name="" to="end" />
</node>
<end-state name="end" />
</process-definition>package com.xxxx.alfresco.km.bpm;
import java.util.List;
import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.repo.workflow.jbpm.JBPMSpringActionHandler;
import org.alfresco.service.ServiceRegistry;
import org.alfresco.service.cmr.model.FileFolderService;
import org.alfresco.service.cmr.model.FileInfo;
import org.alfresco.service.cmr.repository.ChildAssociationRef;
import org.alfresco.service.cmr.repository.NodeRef;
import org.apache.log4j.Logger;
import org.jbpm.context.exe.ContextInstance;
import org.jbpm.graph.exe.ExecutionContext;
import org.springframework.beans.factory.BeanFactory;
/**
*
* @author Lalit Jangra
* Action Class for xxxxx Approval Workflow.
* Content is moved to "Under Review" once it is uploaded.
* If content is approved, it will be moved back to original location.
* If content is rejected, it will be moved to User Home of Workflow initiator.
*
*/
public class KMReviewProcessAction extends JBPMSpringActionHandler {
private static final long serialVersionUID = 1L;
private static Logger logger = Logger
.getLogger(KMReviewProcessAction.class);
private ServiceRegistry services;
private FileFolderService fileFolderService;
/**
* Method to initialize services.
*/
@Override
protected void initialiseHandler(BeanFactory factory) {
logger.debug("Inside initialiseHandler of KMReviewProcessAction!!!!");
services = (ServiceRegistry) factory
.getBean(ServiceRegistry.SERVICE_REGISTRY);
fileFolderService = services.getFileFolderService();
}
/**
* Method to move content in workflow.
* It will move content depending upon wfFlag variable value.
*/
public void execute(ExecutionContext context) throws Exception {
logger.debug("Inside execute of KMReviewProcessAction");
final ContextInstance contextInstance = context.getContextInstance();
String systemUserName = AuthenticationUtil.getSystemUserName();
logger.debug("systemUserName " + systemUserName);
AuthenticationUtil.runAs(new AuthenticationUtil.RunAsWork<Object>() {
String wfFlag = (String) contextInstance.getVariable("wfFlag");
NodeRef nodeRef = (NodeRef) contextInstance.getVariable("nodeRef");
NodeRef targetNodeRef = (NodeRef) contextInstance
.getVariable("targetNodeRef");
NodeRef docParentRef = (NodeRef) contextInstance
.getVariable("docParentRef");
NodeRef userHomeRef = (NodeRef) contextInstance
.getVariable("userHomeRef");
List<ChildAssociationRef> children = null;
public Object doWork() throws Exception {
logger.debug("wfFlag in KMReviewProcessAction "
+ wfFlag);
logger.debug("nodeRef in execute() " + nodeRef);
logger.debug("targetNodeRef in execute() "
+ targetNodeRef);
logger.debug("docParentRef in execute() " + docParentRef);
logger.debug("userHomeRef in execute() " + userHomeRef);
if (wfFlag.equalsIgnoreCase("Moved")) {
// Moving Content from its original location to Under
// Review.
logger.debug("Moving content to Under Review");
try {
@SuppressWarnings("unused")
FileInfo fileInfo = fileFolderService.move(nodeRef,
targetNodeRef, null);
} catch (Exception e) {
logger
.error("Error while moving content to Under Review "
+ e.getMessage());
}
} else if (wfFlag.equalsIgnoreCase("Approved")) {
// Move Content back to original location.
logger.debug("Moving Content back after Approval");
try {
@SuppressWarnings("unused")
FileInfo fileInfo = fileFolderService.move(nodeRef,
docParentRef, null);
} catch (Exception e) {
logger
.error("Error while moving content to original location "
+ e.getMessage());
}
} else if (wfFlag.equalsIgnoreCase("Rejected")) {
// Move content to User Home.
logger.debug("Moving Content to User Home after Rejection");
try {
FileInfo fileInfo = fileFolderService.move(nodeRef,
userHomeRef, null);
System.out.println("After Rejection "
+ fileInfo.getName());
} catch (Exception e) {
logger
.error("Error while moving content to User Home "
+ e.getMessage());
}
}
return children;
}
}, "admin");
}
}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.