diff --git a/modules/activiti-cycle/src/main/java/org/activiti/cycle/impl/connector/signavio/SignavioConnector.java b/modules/activiti-cycle/src/main/java/org/activiti/cycle/impl/connector/signavio/SignavioConnector.java index 0e7574b34501ad6798bbe33ecdc5037c6dbbdbc6..4c865bb2c32b348d9f8e34124264375ee5530b84 100644 --- a/modules/activiti-cycle/src/main/java/org/activiti/cycle/impl/connector/signavio/SignavioConnector.java +++ b/modules/activiti-cycle/src/main/java/org/activiti/cycle/impl/connector/signavio/SignavioConnector.java @@ -184,32 +184,34 @@ public class SignavioConnector extends AbstractRepositoryConnector UUID of // revision // relObject.getJSONObject("rep").getString("description"); @@ -455,41 +457,47 @@ public class SignavioConnector extends AbstractRepositoryConnector"); modelForm.add("type", "BPMN 2.0"); + // modelForm.add("views", new JSONArray().toString()); Representation modelRep = modelForm.getWebRepresentation(); diff --git a/modules/activiti-cycle/src/main/java/org/activiti/cycle/impl/connector/signavio/SignavioPluginDefinition.java b/modules/activiti-cycle/src/main/java/org/activiti/cycle/impl/connector/signavio/SignavioPluginDefinition.java index f8572e3ef011c6d5ba87a660d7f2714e09034d23..24741c9b620d56f0153ed6a23449d1f3fc9303c7 100644 --- a/modules/activiti-cycle/src/main/java/org/activiti/cycle/impl/connector/signavio/SignavioPluginDefinition.java +++ b/modules/activiti-cycle/src/main/java/org/activiti/cycle/impl/connector/signavio/SignavioPluginDefinition.java @@ -3,11 +3,12 @@ package org.activiti.cycle.impl.connector.signavio; import java.util.List; import org.activiti.cycle.ArtifactType; -import org.activiti.cycle.RenderInfo; import org.activiti.cycle.CycleDefaultMimeType; +import org.activiti.cycle.RenderInfo; import org.activiti.cycle.impl.ArtifactTypeImpl; import org.activiti.cycle.impl.ContentRepresentationImpl; import org.activiti.cycle.impl.conf.RepositoryConnectorConfiguration; +import org.activiti.cycle.impl.connector.signavio.action.CopySignavioModelAction; import org.activiti.cycle.impl.connector.signavio.action.CreateTechnicalBpmnXmlAction; import org.activiti.cycle.impl.connector.signavio.action.OpenModelerAction; import org.activiti.cycle.impl.connector.signavio.action.ValidateActivitiDeployment; @@ -15,8 +16,8 @@ import org.activiti.cycle.impl.connector.signavio.provider.ActivitiCompliantBpmn import org.activiti.cycle.impl.connector.signavio.provider.Bpmn20Provider; import org.activiti.cycle.impl.connector.signavio.provider.Jpdl4Provider; import org.activiti.cycle.impl.connector.signavio.provider.JsonProvider; -import org.activiti.cycle.impl.connector.signavio.provider.SvgApiProvider; import org.activiti.cycle.impl.connector.signavio.provider.PngProvider; +import org.activiti.cycle.impl.connector.signavio.provider.SvgApiProvider; import org.activiti.cycle.impl.plugin.ActivitiCyclePlugin; import org.activiti.cycle.impl.plugin.ActivitiCyclePluginDefinition; @@ -72,6 +73,7 @@ public class SignavioPluginDefinition implements ActivitiCyclePluginDefinition { artifactType1.addParameterizedAction(new CreateTechnicalBpmnXmlAction()); artifactType1.addParameterizedAction(new ValidateActivitiDeployment()); + artifactType1.addParameterizedAction(new CopySignavioModelAction()); artifactType1.addOpenUrlAction(new OpenModelerAction()); artifactType1.addDownloadContentAction(CONTENT_REPRESENTATION_ID_BPMN_20_DEVELOPER); artifactType1.addDownloadContentAction(CONTENT_REPRESENTATION_ID_BPMN_20_RAW); diff --git a/modules/activiti-cycle/src/main/java/org/activiti/cycle/impl/connector/signavio/action/AbstractCopyBaseAction.java b/modules/activiti-cycle/src/main/java/org/activiti/cycle/impl/connector/signavio/action/AbstractCopyBaseAction.java new file mode 100644 index 0000000000000000000000000000000000000000..291615f22641b35e9c8f09a81bad6b1fe434b98c --- /dev/null +++ b/modules/activiti-cycle/src/main/java/org/activiti/cycle/impl/connector/signavio/action/AbstractCopyBaseAction.java @@ -0,0 +1,53 @@ +package org.activiti.cycle.impl.connector.signavio.action; + +import java.util.Map; + +import org.activiti.cycle.Content; +import org.activiti.cycle.RepositoryArtifact; +import org.activiti.cycle.RepositoryConnector; +import org.activiti.cycle.impl.ParameterizedHtmlFormTemplateAction; + +/** + * This action copies any artifact to another location. Extend it to specify the + * used content representation id + * + * TODO: Move to a folder for generic base classes + * + * @author bernd.ruecker@camunda.com + */ +public abstract class AbstractCopyBaseAction extends ParameterizedHtmlFormTemplateAction { + + private static final long serialVersionUID = 1L; + + public static final String PARAM_TARGET_FOLDER = "targetFolderId"; + public static final String PARAM_TARGET_CONNECTOR = "targetConnectorId"; + public static final String PARAM_TARGET_NAME = "targetName"; + public static final String PARAM_COMMENT = "comment"; + + public AbstractCopyBaseAction(String actionId) { + super(actionId); + } + + public void execute(RepositoryConnector connector, RepositoryArtifact artifact, Map parameters) throws Exception { + String targetFolderId = (String) getParameter(parameters, PARAM_TARGET_FOLDER, true, null, String.class); + String targetName = (String) getParameter(parameters, PARAM_TARGET_NAME, false, artifact.getMetadata().getName(), String.class); + String comment = (String) getParameter(parameters, PARAM_COMMENT, false, null, String.class); + RepositoryConnector targetConnector = (RepositoryConnector) getParameter(parameters, PARAM_TARGET_CONNECTOR, true, null, RepositoryConnector.class); + + String contentAsString = connector.getContent(artifact.getNodeId(), getContentRepresentationIdToUse()).asString(); + Content content = new Content(); + content.setValue(contentAsString); + targetConnector.createArtifact(targetFolderId, targetName, artifact.getArtifactType().getId(), content); + + // TODO: Think about that more, does it make sense like this? + targetConnector.commitPendingChanges(comment); + } + + public abstract String getContentRepresentationIdToUse(); + + @Override + public String getFormResourceName() { + return getDefaultFormName(); + } + +} diff --git a/modules/activiti-cycle/src/main/java/org/activiti/cycle/impl/connector/signavio/action/CopySignavioModelAction.java b/modules/activiti-cycle/src/main/java/org/activiti/cycle/impl/connector/signavio/action/CopySignavioModelAction.java new file mode 100644 index 0000000000000000000000000000000000000000..75d7f5b1b29bfba47651fdf9a9e9ec4528884db4 --- /dev/null +++ b/modules/activiti-cycle/src/main/java/org/activiti/cycle/impl/connector/signavio/action/CopySignavioModelAction.java @@ -0,0 +1,24 @@ +package org.activiti.cycle.impl.connector.signavio.action; + +import org.activiti.cycle.impl.connector.signavio.SignavioPluginDefinition; + +/** + * This action copies a Signavio model to another repository (ideally another + * Signavio). + * + * @author bernd.ruecker@camunda.com + */ +public class CopySignavioModelAction extends AbstractCopyBaseAction { + + private static final long serialVersionUID = 1L; + + public CopySignavioModelAction() { + // TODO: remove when real labels are introduced in the GUI + super("Copy model"); + } + + public String getContentRepresentationIdToUse() { + return SignavioPluginDefinition.CONTENT_REPRESENTATION_ID_JSON; + } + +} diff --git a/modules/activiti-cycle/src/main/java/org/activiti/cycle/impl/connector/signavio/action/CreateTechnicalBpmnXmlAction.java b/modules/activiti-cycle/src/main/java/org/activiti/cycle/impl/connector/signavio/action/CreateTechnicalBpmnXmlAction.java index 6871f256fdde056acddd8189c7261d68251b0c2a..ab1d29c2890d070c6e5ac93e5ea5d49242dec059 100644 --- a/modules/activiti-cycle/src/main/java/org/activiti/cycle/impl/connector/signavio/action/CreateTechnicalBpmnXmlAction.java +++ b/modules/activiti-cycle/src/main/java/org/activiti/cycle/impl/connector/signavio/action/CreateTechnicalBpmnXmlAction.java @@ -33,8 +33,8 @@ public class CreateTechnicalBpmnXmlAction extends ParameterizedHtmlFormTemplateA private static final long serialVersionUID = 1L; - public static final String PARAM_TARGET_FOLDER = "targetFolder"; - public static final String PARAM_TARGET_CONNECTOR = "targetFolderConnector"; + public static final String PARAM_TARGET_FOLDER = "targetFolderId"; + public static final String PARAM_TARGET_CONNECTOR = "targetConnectorId"; public static final String PARAM_TARGET_NAME = "targetName"; public static final String PARAM_COMMENT = "comment"; diff --git a/modules/activiti-cycle/src/main/resources/org/activiti/cycle/impl/connector/signavio/action/CopySignavioModelAction.html b/modules/activiti-cycle/src/main/resources/org/activiti/cycle/impl/connector/signavio/action/CopySignavioModelAction.html new file mode 100644 index 0000000000000000000000000000000000000000..5c61fc6dfb0d6bffe58609915b70b223f4cbac31 --- /dev/null +++ b/modules/activiti-cycle/src/main/resources/org/activiti/cycle/impl/connector/signavio/action/CopySignavioModelAction.html @@ -0,0 +1,33 @@ +

Copy artifact

+ + + + + + + + + + + +
+
+
+ +
+ +
diff --git a/modules/activiti-cycle/src/main/resources/org/activiti/cycle/impl/connector/signavio/action/CreateTechnicalBpmnXmlAction.html b/modules/activiti-cycle/src/main/resources/org/activiti/cycle/impl/connector/signavio/action/CreateTechnicalBpmnXmlAction.html index 258f82792a817c8eb60ce6ba73608cd7fc0e4399..5c61fc6dfb0d6bffe58609915b70b223f4cbac31 100644 --- a/modules/activiti-cycle/src/main/resources/org/activiti/cycle/impl/connector/signavio/action/CreateTechnicalBpmnXmlAction.html +++ b/modules/activiti-cycle/src/main/resources/org/activiti/cycle/impl/connector/signavio/action/CreateTechnicalBpmnXmlAction.html @@ -5,9 +5,10 @@