mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-24 17:32:48 +00:00
Working implementation of basic WCM submit workflow.
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/WCM-DEV2/root@4444 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -156,12 +156,6 @@
|
|||||||
<bean id="workflowBootstrap" parent="workflowDeployer">
|
<bean id="workflowBootstrap" parent="workflowDeployer">
|
||||||
<property name="workflowDefinitions">
|
<property name="workflowDefinitions">
|
||||||
<list>
|
<list>
|
||||||
<props>
|
|
||||||
<prop key="engineId">jbpm</prop>
|
|
||||||
<prop key="location">alfresco/workflow/wcmSubmit.xml</prop>
|
|
||||||
<prop key="mimetype">text/xml</prop>
|
|
||||||
<prop key="redeploy">false</prop>
|
|
||||||
</props>
|
|
||||||
<props>
|
<props>
|
||||||
<prop key="engineId">jbpm</prop>
|
<prop key="engineId">jbpm</prop>
|
||||||
<prop key="location">alfresco/workflow/review_processdefinition.xml</prop>
|
<prop key="location">alfresco/workflow/review_processdefinition.xml</prop>
|
||||||
@@ -174,6 +168,12 @@
|
|||||||
<prop key="mimetype">text/xml</prop>
|
<prop key="mimetype">text/xml</prop>
|
||||||
<prop key="redeploy">false</prop>
|
<prop key="redeploy">false</prop>
|
||||||
</props>
|
</props>
|
||||||
|
<props>
|
||||||
|
<prop key="engineId">jbpm</prop>
|
||||||
|
<prop key="location">alfresco/workflow/submit_processdefinition.xml</prop>
|
||||||
|
<prop key="mimetype">text/xml</prop>
|
||||||
|
<prop key="redeploy">false</prop>
|
||||||
|
</props>
|
||||||
</list>
|
</list>
|
||||||
</property>
|
</property>
|
||||||
<property name="models">
|
<property name="models">
|
||||||
|
@@ -1,15 +0,0 @@
|
|||||||
<?xml version='1.0' encoding='UTF-8'?>
|
|
||||||
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
|
|
||||||
|
|
||||||
<beans>
|
|
||||||
|
|
||||||
<!-- Registration of new models -->
|
|
||||||
<bean id="wcmwf.dictionaryBootstrap" parent="dictionaryModelBootstrap" depends-on="dictionaryBootstrap">
|
|
||||||
<property name="models">
|
|
||||||
<list>
|
|
||||||
<value>alfresco/workflow/wcmSubmitModel.xml</value>
|
|
||||||
</list>
|
|
||||||
</property>
|
|
||||||
</bean>
|
|
||||||
|
|
||||||
</beans>
|
|
@@ -29,6 +29,9 @@
|
|||||||
|
|
||||||
<bean id="workflowInterpreter" class="org.alfresco.repo.workflow.WorkflowInterpreter">
|
<bean id="workflowInterpreter" class="org.alfresco.repo.workflow.WorkflowInterpreter">
|
||||||
<property name="workflowService" ref="WorkflowService"/>
|
<property name="workflowService" ref="WorkflowService"/>
|
||||||
|
<property name="AVMService" ref="AVMService"/>
|
||||||
|
<property name="AVMSyncService" ref="AVMSyncService"/>
|
||||||
|
<property name="nodeService" ref="NodeService"/>
|
||||||
<property name="namespaceService" ref="namespaceService"/>
|
<property name="namespaceService" ref="namespaceService"/>
|
||||||
<property name="personService" ref="PersonService"/>
|
<property name="personService" ref="PersonService"/>
|
||||||
</bean>
|
</bean>
|
||||||
|
28
config/alfresco/workflow/submit_processdefinition.xml
Normal file
28
config/alfresco/workflow/submit_processdefinition.xml
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<!-- This describes a process for submitting changed content in a user -->
|
||||||
|
<!-- sandbox, via an approver, to the staging sandbox. -->
|
||||||
|
|
||||||
|
<process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="wf:submit">
|
||||||
|
|
||||||
|
<swimlane name="initiator"/>
|
||||||
|
|
||||||
|
<start-state name="start">
|
||||||
|
<task name="wf:submitWebContentTask" swimlane="initiator"/>
|
||||||
|
<transition name="" to="review"/>
|
||||||
|
</start-state>
|
||||||
|
|
||||||
|
<swimlane name="assignee">
|
||||||
|
<assignment actor-id="#{bpm_assignee.properties['cm:userName']}"/>
|
||||||
|
</swimlane>
|
||||||
|
|
||||||
|
<task-node name="review">
|
||||||
|
<task name="wf:reviewTask" swimlane="assignee"/>
|
||||||
|
<transition name="Approve" to="end">
|
||||||
|
<action class="org.alfresco.repo.avm.wf.AVMSubmitPackageHandler"/>
|
||||||
|
</transition>
|
||||||
|
</task-node>
|
||||||
|
|
||||||
|
<end-state name="end"/>
|
||||||
|
|
||||||
|
</process-definition>
|
@@ -1,53 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
|
|
||||||
<!-- This describes a process for submitting changed content in a user -->
|
|
||||||
<!-- sandbox, via an approver, to the staging sandbox. -->
|
|
||||||
|
|
||||||
<process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="wcmwf:submit">
|
|
||||||
|
|
||||||
<swimlane name="initiator"/>
|
|
||||||
|
|
||||||
<start-state name="start">
|
|
||||||
<task name="wcmwf:startSubmit" swimlane="initiator">
|
|
||||||
<controller>
|
|
||||||
<!-- <variable name="assignee" access="write" mapped-name="wcmwf:assignee"/> -->
|
|
||||||
<!-- <variable name="description" access="write" mapped-name="wcmwf:description"/> -->
|
|
||||||
<variable name="package" access="write" mapped-name="bpm:package"/>
|
|
||||||
<variable name="workflowcontext" access="write" mapped-name="bpm:context"/>
|
|
||||||
</controller>
|
|
||||||
</task>
|
|
||||||
<transition name="" to="setup"/>
|
|
||||||
</start-state>
|
|
||||||
|
|
||||||
<task-node name="setup">
|
|
||||||
<task name="wcmwf:setupSubmit" swimlane="initiator">
|
|
||||||
<controller>
|
|
||||||
<variable name="assignee" access="write" mapped-name="bpm:assignee"/>
|
|
||||||
<variable name="description" access="write" mapped-name="wcmwf:description"/>
|
|
||||||
<variable name="package" access="write" mapped-name="bpm:package"/>
|
|
||||||
<variable name="workflowcontext" access="write" mapped-name="bpm:context"/>
|
|
||||||
</controller>
|
|
||||||
</task>
|
|
||||||
<transition name="" to="review"/>
|
|
||||||
</task-node>
|
|
||||||
|
|
||||||
<swimlane name="assignee">
|
|
||||||
<assignment actor-id="#{bpm_assignee.properties['cm:userName']}"/>
|
|
||||||
</swimlane>
|
|
||||||
|
|
||||||
<task-node name="review">
|
|
||||||
<task name="wcmwf:review" swimlane="assignee">
|
|
||||||
<controller>
|
|
||||||
<variable name="description" access="read,required" mapped-name="wcmwf:description"/>
|
|
||||||
<variable name="package" access="read,required" mapped-name="bpm:package"/>
|
|
||||||
<variable name="workflowcontext" access="read,required" mapped-name="bpm:context"/>
|
|
||||||
</controller>
|
|
||||||
</task>
|
|
||||||
<transition name="Approve" to="end">
|
|
||||||
<action class="org.alfresco.repo.avm.wf.AVMSubmitPackageHandler"/>
|
|
||||||
</transition>
|
|
||||||
</task-node>
|
|
||||||
|
|
||||||
<end-state name="end"/>
|
|
||||||
|
|
||||||
</process-definition>
|
|
@@ -1,47 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
|
|
||||||
<model name="wcmwf:submitmodel" xmlns="http://www.alfresco.org/model/dictionary/1.0">
|
|
||||||
|
|
||||||
<imports>
|
|
||||||
<import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d"/>
|
|
||||||
<import uri="http://www.alfresco.org/model/content/1.0" prefix="cm"/>
|
|
||||||
<import uri="http://www.alfresco.org/model/bpm/1.0" prefix="bpm"/>
|
|
||||||
</imports>
|
|
||||||
|
|
||||||
<namespaces>
|
|
||||||
<namespace uri="http://www.alfresco.org/model/wcmwf/1.0" prefix="wcmwf"/>
|
|
||||||
</namespaces>
|
|
||||||
|
|
||||||
<types>
|
|
||||||
<type name="wcmwf:baseSubmitTask">
|
|
||||||
<parent>bpm:workflowTask</parent>
|
|
||||||
|
|
||||||
<properties>
|
|
||||||
<property name="wcmwf:description">
|
|
||||||
<title>Description</title>
|
|
||||||
<type>d:text</type>
|
|
||||||
</property>
|
|
||||||
</properties>
|
|
||||||
|
|
||||||
|
|
||||||
</type>
|
|
||||||
|
|
||||||
<type name="wcmwf:startSubmit">
|
|
||||||
<title>Submit Web Content</title>
|
|
||||||
<parent>wcmwf:baseSubmitTask</parent>
|
|
||||||
<mandatory-aspects>
|
|
||||||
<aspect>bpm:assignee</aspect>
|
|
||||||
</mandatory-aspects>
|
|
||||||
</type>
|
|
||||||
|
|
||||||
<type name="wcmwf:setupSubmit">
|
|
||||||
<title>Submit Web Content</title>
|
|
||||||
<parent>wcmwf:baseSubmitTask</parent>
|
|
||||||
</type>
|
|
||||||
|
|
||||||
<type name="wcmwf:review">
|
|
||||||
<title>Review</title>
|
|
||||||
<parent>wcmwf:baseSubmitTask</parent>
|
|
||||||
</type>
|
|
||||||
</types>
|
|
||||||
</model>
|
|
@@ -67,6 +67,23 @@
|
|||||||
<parent>bpm:workflowTask</parent>
|
<parent>bpm:workflowTask</parent>
|
||||||
</type>
|
</type>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- -->
|
||||||
|
<!-- WCM Tasks -->
|
||||||
|
<!-- -->
|
||||||
|
|
||||||
|
<type name="wf:submitWebContentTask">
|
||||||
|
<parent>bpm:startTask</parent>
|
||||||
|
<properties>
|
||||||
|
<property name="wf:from">
|
||||||
|
<type>d:text</type>
|
||||||
|
</property>
|
||||||
|
</properties>
|
||||||
|
<mandatory-aspects>
|
||||||
|
<aspect>bpm:assignee</aspect>
|
||||||
|
</mandatory-aspects>
|
||||||
|
</type>
|
||||||
|
|
||||||
</types>
|
</types>
|
||||||
|
|
||||||
</model>
|
</model>
|
@@ -1,23 +1,17 @@
|
|||||||
package org.alfresco.repo.avm.wf;
|
package org.alfresco.repo.avm.wf;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import org.alfresco.model.ContentModel;
|
|
||||||
import org.alfresco.repo.avm.AVMNodeConverter;
|
import org.alfresco.repo.avm.AVMNodeConverter;
|
||||||
import org.alfresco.repo.workflow.jbpm.JBPMNode;
|
import org.alfresco.repo.workflow.jbpm.JBPMNode;
|
||||||
import org.alfresco.repo.workflow.jbpm.JBPMSpringActionHandler;
|
import org.alfresco.repo.workflow.jbpm.JBPMSpringActionHandler;
|
||||||
|
import org.alfresco.service.cmr.avm.AVMNodeDescriptor;
|
||||||
import org.alfresco.service.cmr.avm.AVMService;
|
import org.alfresco.service.cmr.avm.AVMService;
|
||||||
import org.alfresco.service.cmr.avmsync.AVMDifference;
|
import org.alfresco.service.cmr.avmsync.AVMDifference;
|
||||||
import org.alfresco.service.cmr.avmsync.AVMSyncException;
|
|
||||||
import org.alfresco.service.cmr.avmsync.AVMSyncService;
|
import org.alfresco.service.cmr.avmsync.AVMSyncService;
|
||||||
import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
import org.alfresco.service.cmr.repository.NodeService;
|
import org.alfresco.service.cmr.repository.NodeService;
|
||||||
import org.alfresco.service.namespace.QName;
|
|
||||||
import org.alfresco.util.Pair;
|
import org.alfresco.util.Pair;
|
||||||
import org.jbpm.graph.exe.ExecutionContext;
|
import org.jbpm.graph.exe.ExecutionContext;
|
||||||
import org.springframework.beans.factory.BeanFactory;
|
import org.springframework.beans.factory.BeanFactory;
|
||||||
@@ -60,38 +54,48 @@ public class AVMSubmitPackageHandler extends JBPMSpringActionHandler implements
|
|||||||
*/
|
*/
|
||||||
public void execute(ExecutionContext executionContext) throws Exception
|
public void execute(ExecutionContext executionContext) throws Exception
|
||||||
{
|
{
|
||||||
NodeRef pkg = ((JBPMNode)executionContext.getContextInstance().getVariable("package")).getNodeRef();
|
NodeRef pkg = ((JBPMNode)executionContext.getContextInstance().getVariable("bpm_package")).getNodeRef();
|
||||||
List<ChildAssociationRef> children = fNodeService.getChildAssocs(pkg);
|
Pair<Integer, String> pkgPath = AVMNodeConverter.ToAVMVersionPath(pkg);
|
||||||
List<AVMDifference> diffs = new ArrayList<AVMDifference>();
|
|
||||||
Map<String, String> storesHit = new HashMap<String, String>();
|
AVMNodeDescriptor pkgDesc = fAVMService.lookup(pkgPath.getFirst(), pkgPath.getSecond());
|
||||||
for (ChildAssociationRef child : children)
|
String targetPath = pkgDesc.getIndirection();
|
||||||
{
|
List<AVMDifference> diff = fAVMSyncService.compare(pkgPath.getFirst(), pkgPath.getSecond(), -1, targetPath);
|
||||||
NodeRef childRef = child.getChildRef();
|
fAVMSyncService.update(diff, true, true, false, false, null, null);
|
||||||
if (!fNodeService.hasAspect(childRef, ContentModel.ASPECT_REFERENCES_NODE))
|
|
||||||
{
|
String from = (String)executionContext.getContextInstance().getVariable("wf_from");
|
||||||
throw new AVMSyncException("Package node does not have cm:referencesnode.");
|
fAVMSyncService.flatten(from, targetPath);
|
||||||
}
|
|
||||||
NodeRef toSubmit = (NodeRef)fNodeService.getProperty(childRef, ContentModel.PROP_NODE_REF);
|
// List<ChildAssociationRef> children = fNodeService.getChildAssocs(pkg);
|
||||||
Pair<Integer, String> versionPath = AVMNodeConverter.ToAVMVersionPath(toSubmit);
|
// List<AVMDifference> diffs = new ArrayList<AVMDifference>();
|
||||||
String avmPath = versionPath.getSecond();
|
// Map<String, String> storesHit = new HashMap<String, String>();
|
||||||
String [] storePath = avmPath.split(":");
|
// for (ChildAssociationRef child : children)
|
||||||
String websiteName = fAVMService.getStoreProperty(storePath[0],
|
// {
|
||||||
QName.createQName(null, ".website.name")).
|
// NodeRef childRef = child.getChildRef();
|
||||||
getStringValue();
|
// if (!fNodeService.hasAspect(childRef, ContentModel.ASPECT_REFERENCES_NODE))
|
||||||
String stagingName = websiteName + "-staging";
|
// {
|
||||||
AVMDifference diff =
|
// throw new AVMSyncException("Package node does not have cm:referencesnode.");
|
||||||
new AVMDifference(-1, avmPath,
|
// }
|
||||||
-1, stagingName + ":" + storePath[1],
|
// NodeRef toSubmit = (NodeRef)fNodeService.getProperty(childRef, ContentModel.PROP_NODE_REF);
|
||||||
AVMDifference.NEWER);
|
// Pair<Integer, String> versionPath = AVMNodeConverter.ToAVMVersionPath(toSubmit);
|
||||||
diffs.add(diff);
|
// String avmPath = versionPath.getSecond();
|
||||||
storesHit.put(storePath[0], stagingName);
|
// String [] storePath = avmPath.split(":");
|
||||||
}
|
// String websiteName = fAVMService.getStoreProperty(storePath[0],
|
||||||
// TODO fix update comments if needed.
|
// QName.createQName(null, ".website.name")).
|
||||||
fAVMSyncService.update(diffs, true, true, false, false, null, null);
|
// getStringValue();
|
||||||
for (Map.Entry<String, String> entry : storesHit.entrySet())
|
// String stagingName = websiteName + "-staging";
|
||||||
{
|
// AVMDifference diff =
|
||||||
fAVMSyncService.flatten(entry.getKey() + ":/appBase",
|
// new AVMDifference(-1, avmPath,
|
||||||
entry.getValue() + ":/appBase");
|
// -1, stagingName + ":" + storePath[1],
|
||||||
}
|
// AVMDifference.NEWER);
|
||||||
|
// diffs.add(diff);
|
||||||
|
// storesHit.put(storePath[0], stagingName);
|
||||||
|
// }
|
||||||
|
// // TODO fix update comments if needed.
|
||||||
|
// fAVMSyncService.update(diffs, true, true, false, false, null, null);
|
||||||
|
// for (Map.Entry<String, String> entry : storesHit.entrySet())
|
||||||
|
// {
|
||||||
|
// fAVMSyncService.flatten(entry.getKey() + ":/appBase",
|
||||||
|
// entry.getValue() + ":/appBase");
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -29,9 +29,15 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.alfresco.i18n.I18NUtil;
|
import org.alfresco.i18n.I18NUtil;
|
||||||
|
import org.alfresco.repo.avm.AVMNodeConverter;
|
||||||
import org.alfresco.repo.content.MimetypeMap;
|
import org.alfresco.repo.content.MimetypeMap;
|
||||||
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
import org.alfresco.repo.security.authentication.AuthenticationUtil;
|
||||||
|
import org.alfresco.service.cmr.avm.AVMNodeDescriptor;
|
||||||
|
import org.alfresco.service.cmr.avm.AVMService;
|
||||||
|
import org.alfresco.service.cmr.avmsync.AVMDifference;
|
||||||
|
import org.alfresco.service.cmr.avmsync.AVMSyncService;
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
|
import org.alfresco.service.cmr.repository.NodeService;
|
||||||
import org.alfresco.service.cmr.security.PersonService;
|
import org.alfresco.service.cmr.security.PersonService;
|
||||||
import org.alfresco.service.cmr.workflow.WorkflowDefinition;
|
import org.alfresco.service.cmr.workflow.WorkflowDefinition;
|
||||||
import org.alfresco.service.cmr.workflow.WorkflowDeployment;
|
import org.alfresco.service.cmr.workflow.WorkflowDeployment;
|
||||||
@@ -44,6 +50,7 @@ import org.alfresco.service.cmr.workflow.WorkflowTransition;
|
|||||||
import org.alfresco.service.namespace.NamespaceService;
|
import org.alfresco.service.namespace.NamespaceService;
|
||||||
import org.alfresco.service.namespace.QName;
|
import org.alfresco.service.namespace.QName;
|
||||||
import org.alfresco.util.ApplicationContextHelper;
|
import org.alfresco.util.ApplicationContextHelper;
|
||||||
|
import org.alfresco.util.GUID;
|
||||||
import org.springframework.context.ApplicationContext;
|
import org.springframework.context.ApplicationContext;
|
||||||
import org.springframework.core.io.ClassPathResource;
|
import org.springframework.core.io.ClassPathResource;
|
||||||
|
|
||||||
@@ -57,6 +64,9 @@ public class WorkflowInterpreter
|
|||||||
// Service dependencies
|
// Service dependencies
|
||||||
private WorkflowService workflowService;
|
private WorkflowService workflowService;
|
||||||
private NamespaceService namespaceService;
|
private NamespaceService namespaceService;
|
||||||
|
private NodeService nodeService;
|
||||||
|
private AVMService avmService;
|
||||||
|
private AVMSyncService avmSyncService;
|
||||||
private PersonService personService;
|
private PersonService personService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -112,6 +122,30 @@ public class WorkflowInterpreter
|
|||||||
this.workflowService = workflowService;
|
this.workflowService = workflowService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param nodeService The Node Service
|
||||||
|
*/
|
||||||
|
public void setNodeService(NodeService nodeService)
|
||||||
|
{
|
||||||
|
this.nodeService = nodeService;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param avmService The AVM Service
|
||||||
|
*/
|
||||||
|
public void setAVMService(AVMService avmService)
|
||||||
|
{
|
||||||
|
this.avmService = avmService;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param avmSyncService The AVM Sync Service
|
||||||
|
*/
|
||||||
|
public void setAVMSyncService(AVMSyncService avmSyncService)
|
||||||
|
{
|
||||||
|
this.avmSyncService = avmSyncService;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param namespaceService namespaceService
|
* @param namespaceService namespaceService
|
||||||
*/
|
*/
|
||||||
@@ -661,6 +695,49 @@ public class WorkflowInterpreter
|
|||||||
}
|
}
|
||||||
out.println("set var " + qname + " = " + vars.get(qname));
|
out.println("set var " + qname + " = " + vars.get(qname));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
else if (command[2].equals("avmpackage"))
|
||||||
|
{
|
||||||
|
// lookup source folder of changes
|
||||||
|
AVMNodeDescriptor avmSource = avmService.lookup(-1, command[3]);
|
||||||
|
if (avmSource == null || !avmSource.isDirectory())
|
||||||
|
{
|
||||||
|
return command[3] + " must refer to a directory.";
|
||||||
|
}
|
||||||
|
|
||||||
|
// create container for avm workflow packages
|
||||||
|
String packagesPath = "workflow-system:/packages";
|
||||||
|
AVMNodeDescriptor packagesDesc = avmService.lookup(-1, packagesPath);
|
||||||
|
if (packagesDesc == null)
|
||||||
|
{
|
||||||
|
avmService.createAVMStore("workflow-system");
|
||||||
|
avmService.createDirectory("workflow-system:/", "packages");
|
||||||
|
}
|
||||||
|
|
||||||
|
// create package (layered to target, if target is specified)
|
||||||
|
String packageName = GUID.generate();
|
||||||
|
String avmSourceIndirection = avmSource.getIndirection();
|
||||||
|
if (avmSourceIndirection != null)
|
||||||
|
{
|
||||||
|
avmService.createLayeredDirectory(avmSourceIndirection, packagesPath, packageName);
|
||||||
|
List<AVMDifference> diff = avmSyncService.compare(-1, avmSource.getPath(), -1, packagesPath + "/" + packageName);
|
||||||
|
avmSyncService.update(diff, true, true, false, false, null, null);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// copy source folder to package folder
|
||||||
|
avmService.copy(-1, avmSource.getPath(), packagesPath, packageName);
|
||||||
|
}
|
||||||
|
|
||||||
|
// convert package to workflow package
|
||||||
|
AVMNodeDescriptor packageDesc = avmService.lookup(-1, packagesPath + "/" + packageName);
|
||||||
|
NodeRef packageNodeRef = workflowService.createPackage(AVMNodeConverter.ToNodeRef(-1, packageDesc.getPath()));
|
||||||
|
nodeService.setProperty(packageNodeRef, WorkflowModel.PROP_IS_SYSTEM_PACKAGE, true);
|
||||||
|
QName qname = QName.createQName(command[1], namespaceService);
|
||||||
|
vars.put(qname, packageNodeRef);
|
||||||
|
out.println("set var " + qname + " = " + vars.get(qname));
|
||||||
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return "Syntax Error.\n";
|
return "Syntax Error.\n";
|
||||||
|
Reference in New Issue
Block a user