提交 ac537d52 编写于 作者: N nilspreusker

Merged changes from cycle branch r1100 through r1138 into trunk

上级 cf384f7c
......@@ -184,32 +184,34 @@ public class SignavioConnector extends AbstractRepositoryConnector<SignavioConne
throw new RepositoryException(jsonDirectoryObject + " is not a directory");
}
String directoryName = jsonDirectoryObject.getJSONObject("rep").getString("name");
if (jsonDirectoryObject.getJSONObject("rep").has("type")) {
// need hard coded translation of some special folders with special
// treatment by signavio
// see https://app.camunda.com/jira/browse/HEMERA-328
String type = jsonDirectoryObject.getJSONObject("rep").optString("type");
if ("public".equals(type)) {
// TODO: Think about what to show here (I18n?)
directoryName = "Public";
}
if ("private".equals(type)) {
directoryName = "Private";
}
}
log.finest("Directoryname: " + directoryName);
// String directoryDescription =
// jsonDirectoryObject.getJSONObject("rep").getString("description");
String href = jsonDirectoryObject.getString("href");
// for (JSONObject subDirectoryInfo : getSubDirectoryInfos(href)) {
// printDirectory(subDirectoryInfo, indention);
// }
//
// for (JSONObject modelInfo : getSubModelInfos(href)) {
// String modelName = modelInfo.getJSONObject("rep").getString("name");
// String modelType = modelInfo.getJSONObject("rep").getString("type");
// System.out.println(indention + "- MODEL " + modelName + " (" + modelType
// + ")");
// }
// folderInfo.setId( directoryId );
// TODO: Check where we get the real ID from!
String id = getConfiguration().getDirectoryIdFromUrl(href);
RepositoryFolderImpl folderInfo = new RepositoryFolderImpl(getConfiguration().getId(), id);
folderInfo.getMetadata().setName(directoryName);
// TODO: Where do we get the path from?
// folderInfo.getMetadata().setPath();
return folderInfo;
}
......@@ -235,7 +237,7 @@ public class SignavioConnector extends AbstractRepositoryConnector<SignavioConne
fileInfo.getMetadata().setLastAuthor(json.optString("author"));
fileInfo.getMetadata().setCreated(SignavioJsonHelper.getDateValueIfExists(json, "created"));
fileInfo.getMetadata().setLastChanged(SignavioJsonHelper.getDateValueIfExists(json, "updated"));
// relObject.getJSONObject("rep").getString("revision"); --> UUID of
// revision
// relObject.getJSONObject("rep").getString("description");
......@@ -455,41 +457,47 @@ public class SignavioConnector extends AbstractRepositoryConnector<SignavioConne
public RepositoryArtifact createArtifactFromJSON(String containingFolderId, String artifactName, String artifactType, String jsonContent)
throws RepositoryNodeNotFoundException {
// TODO: Add check if model already exists (overwrite or throw exception?)
String revisionComment = null;
String description = null;
// public void createNewModel(String parentFolderId, String name, String
// jsonData, String revisionComment, String description) throws IOException
// {
try {
// do this to check if jsonString is valid
JSONObject jsonModel = new JSONObject(jsonContent);
Form modelForm = new Form();
// TODO: Check if this is correct, maybe we need to include an empty
// string
Form modelForm = new Form();
if (revisionComment != null) {
modelForm.add("comment", revisionComment);
}
else {
modelForm.add("comment", "");
}
if (description != null) {
modelForm.add("description", description);
}
else {
modelForm.add("description", "");
}
modelForm.add("glossary_xml", new JSONArray().toString());
// signavio generates a new id for POSTed models
// modelForm.add("id", null);
// signavio generates a new id for POSTed models, so don't set an id
modelForm.add("json_xml", jsonModel.toString());
modelForm.add("name", artifactName);
// TODO: Check ArtifactType here correctly
modelForm.add("namespace", "http://b3mn.org/stencilset/bpmn2.0#");
modelForm.add("parent", "/directory/" + containingFolderId);
modelForm.add("namespace", SignavioPluginDefinition.SIGNAVIO_NAMESPACE_FOR_BPMN_2_0);
// Important: Don't set the type attribute here, otherwise it will not
// work!
modelForm.add("parent", "/" + getConfiguration().DIRECTORY_URL_SUFFIX + containingFolderId);
// we have to provide a SVG (even if don't have the correct one) because
// otherwise Signavio throws an exception in its GUI
modelForm
.add(
"svg_xml",
"svg_xml", //
"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:oryx=\"http://oryx-editor.org\" id=\"sid-80D82B67-3B30-4B35-A6CB-16EEE17A719F\" width=\"50\" height=\"50\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:svg=\"http://www.w3.org/2000/svg\"><defs/><g stroke=\"black\" font-family=\"Verdana, sans-serif\" font-size-adjust=\"none\" font-style=\"normal\" font-variant=\"normal\" font-weight=\"normal\" line-heigth=\"normal\" font-size=\"12\"><g class=\"stencils\" transform=\"translate(25, 25)\"><g class=\"me\"/><g class=\"children\"/><g class=\"edge\"/></g></g></svg>");
modelForm.add("type", "BPMN 2.0");
// modelForm.add("views", new JSONArray().toString());
Representation modelRep = modelForm.getWebRepresentation();
......
......@@ -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);
......
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<String, Object> 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();
}
}
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;
}
}
......@@ -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";
......
<h1>Copy artifact</h1>
<table>
<tr>
<td>
<label>
Target folder:<br/>
<input type="text" name="targetFolderId" value="" />
<input type="hidden" name="targetFolderId_required" value="true" />
<input type="hidden" name="targetFolderId_type" value="Event" />
<input type="hidden" name="targetConnectorId" value="" />
</label><br/>
</td>
</tr>
<tr>
<td>
<label>
Name of process file (same as model if skipped):<br/>
<input type="text" name="targetName" value="" />
<input type="hidden" name="targetName_required" value="false" />
<input type="hidden" name="targetName_type" value="String" />
</label>
</td>
</tr>
<tr>
<td>
<label>
Comment:<br/>
<textarea name="comment" value=""></textarea>
</label>
</td>
</tr>
</table>
......@@ -5,9 +5,10 @@
<td>
<label>
Target folder:<br/>
<input type="text" name="targetFolder" value="" />
<input type="hidden" name="targetFolder_required" value="true" />
<input type="hidden" name="targetFolder_type" value="RepositoryFolder" />
<input type="text" name="targetFolderId" value="" />
<input type="hidden" name="targetFolderId_required" value="true" />
<input type="hidden" name="targetFolderId_type" value="Event" />
<input type="hidden" name="targetConnectorId" value="" />
</label><br/>
</td>
</tr>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册