As we transition to the new Hyland Community, some post links may be temporarily disrupted as we finalize redirects. We apologize for the inconvenience and are working to resolve this as quickly as possible. Details.
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
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/application/1.0}dictionary/{http://www.alfresco.org/model/content/1.0}Under Review");//var targetFolder = companyhome.childByNamePath("Under Review");@!"+targetFolder);var res = document.move(targetFolder);
@!null
//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"); } }