提交 15c55556 编写于 作者: B bernd.ruecker

merged latest changes from Cycle branch, some adjusted to latest cycle changes

上级 e22e1856
package org.activiti.cycle;
import org.activiti.cycle.impl.db.entity.CycleLink;
import org.activiti.cycle.impl.db.entity.RepositoryArtifactLinkImpl;
/**
* Object given back by the {@link CycleService} for a {@link CycleLink} where
* Object given back by the {@link CycleService} for a {@link RepositoryArtifactLinkImpl} where
* the {@link RepositoryArtifact}s are already resolved.
*
* @author polenz
......
......@@ -28,7 +28,7 @@ import org.activiti.cycle.impl.connector.view.TagConnectorConfiguration;
import org.activiti.cycle.impl.db.CycleConfigurationService;
import org.activiti.cycle.impl.db.CycleDAO;
import org.activiti.cycle.impl.db.entity.CycleArtifactTagEntity;
import org.activiti.cycle.impl.db.entity.CycleLink;
import org.activiti.cycle.impl.db.entity.RepositoryArtifactLinkImpl;
import org.activiti.cycle.impl.db.impl.CycleConfigurationServiceImpl;
import org.activiti.cycle.impl.db.impl.CycleDaoMyBatisImpl;
import org.activiti.cycle.impl.plugin.PluginFinder;
......@@ -47,10 +47,8 @@ public class CycleServiceImpl implements CycleService {
private List<RepositoryConnector> repositoryConnectors;
/**
* TODO: Check if list roots can return an empty array
*/
private static final File fsBaseDir = File.listRoots()[0];
// private static ThreadLocal<CycleService> currentCycleService = new
// ThreadLocal<CycleService>();
public CycleServiceImpl(List<RepositoryConnector> repositoryConnectors) {
......@@ -59,6 +57,10 @@ public class CycleServiceImpl implements CycleService {
this.repositoryConnectors = repositoryConnectors;
for (RepositoryConnector repositoryConnector : repositoryConnectors) {
repositoryConnector.getConfiguration().setCycleService(this);
}
// add tag connector hard coded for the moment
this.repositoryConnectors.add(new TagConnectorConfiguration(this).createConnector());
}
......@@ -116,7 +118,7 @@ public class CycleServiceImpl implements CycleService {
ConfigurationContainer configuration = new ConfigurationContainer(currentUserId);
configuration.addRepositoryConnectorConfiguration(new DemoConnectorConfiguration("demo"));
configuration.addRepositoryConnectorConfiguration(new SignavioConnectorConfiguration("signavio", "http://localhost:8080/activiti-modeler/"));
configuration.addRepositoryConnectorConfiguration(new FileSystemConnectorConfiguration("files", fsBaseDir));
configuration.addRepositoryConnectorConfiguration(new FileSystemConnectorConfiguration("files", File.listRoots()[0]));
return configuration;
}
......@@ -250,10 +252,10 @@ public class CycleServiceImpl implements CycleService {
// RepositoryArtifactLink specific methods
public void addArtifactLink(RepositoryArtifactLink repositoryArtifactLink) {
if (repositoryArtifactLink instanceof CycleLink) {
cycleDAO.insertCycleLink((CycleLink) repositoryArtifactLink);
if (repositoryArtifactLink instanceof RepositoryArtifactLinkImpl) {
cycleDAO.insertCycleLink((RepositoryArtifactLinkImpl) repositoryArtifactLink);
} else {
CycleLink cycleLink = new CycleLink();
RepositoryArtifactLinkImpl cycleLink = new RepositoryArtifactLinkImpl();
cycleLink.setId(repositoryArtifactLink.getId());
......@@ -282,8 +284,8 @@ public class CycleServiceImpl implements CycleService {
public List<RepositoryArtifactLink> getArtifactLinks(String sourceConnectorId, String sourceArtifactId) {
List<RepositoryArtifactLink> artifactLinks = new ArrayList<RepositoryArtifactLink>();
List<CycleLink> linkResultList = cycleDAO.getOutgoingCycleLinks(sourceConnectorId, sourceArtifactId);
for (CycleLink entity : linkResultList) {
List<RepositoryArtifactLinkImpl> linkResultList = cycleDAO.getOutgoingCycleLinks(sourceConnectorId, sourceArtifactId);
for (RepositoryArtifactLinkImpl entity : linkResultList) {
entity.resolveArtifacts(this);
artifactLinks.add(entity);
}
......
......@@ -7,6 +7,7 @@ import java.util.Map;
import java.util.Properties;
import org.activiti.cycle.ArtifactType;
import org.activiti.cycle.CycleService;
import org.activiti.cycle.RepositoryConnector;
import org.activiti.cycle.RepositoryException;
import org.activiti.cycle.impl.plugin.ActivitiCyclePluginDefinition;
......@@ -39,13 +40,17 @@ public abstract class RepositoryConnectorConfiguration {
*/
private String configurationScope;
private static Map<Class< ? extends RepositoryConnectorConfiguration>, List<ArtifactType>> registeredArtifactTypesPerConnector = new HashMap<Class< ? extends RepositoryConnectorConfiguration>, List<ArtifactType>>();
private static Map<Class< ? extends RepositoryConnectorConfiguration>, List<ArtifactType>> registeredArtifactTypesPerConnector = new HashMap<Class< ? extends RepositoryConnectorConfiguration>, List<ArtifactType>>();
private CycleService cycleService;
/**
* TODO: Decide if we want to keep that here
*
* @param cycleService
*/
public abstract RepositoryConnector createConnector();
public static void addPluginDefinition(ActivitiCyclePluginDefinition definition) {
List<ArtifactType> registeredArtifactTypes = new ArrayList<ArtifactType>();
definition.addArtifactTypes(registeredArtifactTypes);
......@@ -154,6 +159,16 @@ public abstract class RepositoryConnectorConfiguration {
this.loginHelp = loginHelp;
}
public CycleService getCycleService() {
return cycleService;
}
public void setCycleService(CycleService cycleService) {
this.cycleService = cycleService;
}
// @Override
// public String toString() {
// return "RepositoryConnectorConfiguration '" +
......
......@@ -14,6 +14,7 @@ package org.activiti.cycle.impl.connector.signavio;
import java.io.IOException;
import java.util.ArrayList;
import java.util.UUID;
import java.util.logging.Level;
import java.util.logging.Logger;
......@@ -480,7 +481,6 @@ public class SignavioConnector extends AbstractRepositoryConnector<SignavioConne
modelForm.add("description", "");
}
modelForm.add("glossary_xml", new JSONArray().toString());
// signavio generates a new id for POSTed models, so don't set an id
modelForm.add("json_xml", jsonModel.toString());
modelForm.add("name", artifactName);
......@@ -498,6 +498,13 @@ public class SignavioConnector extends AbstractRepositoryConnector<SignavioConne
"<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");
// Signavio generates a new id for POSTed models, so we don't have to set
// this ID ourself.
// But anyway, then we don't know the id and cannot load the artifact down
// to return it correctly, so we generate one ourself
String id = UUID.randomUUID().toString();
modelForm.add("id", id);
// modelForm.add("views", new JSONArray().toString());
Representation modelRep = modelForm.getWebRepresentation();
......@@ -506,7 +513,7 @@ public class SignavioConnector extends AbstractRepositoryConnector<SignavioConne
sendRequest(jsonRequest);
// TODO: return the object
return null;
return getRepositoryArtifact(id);
} catch (Exception je) {
throw new RepositoryException("Unable to create model '" + artifactName + "' in parent folder '" + containingFolderId + "'", je);
}
......
......@@ -4,8 +4,10 @@ import java.util.Map;
import org.activiti.cycle.Content;
import org.activiti.cycle.RepositoryArtifact;
import org.activiti.cycle.RepositoryArtifactLink;
import org.activiti.cycle.RepositoryConnector;
import org.activiti.cycle.impl.ParameterizedHtmlFormTemplateAction;
import org.activiti.cycle.impl.db.entity.RepositoryArtifactLinkImpl;
/**
* This action copies any artifact to another location. Extend it to specify the
......@@ -22,7 +24,8 @@ public abstract class AbstractCopyBaseAction extends ParameterizedHtmlFormTempla
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 static final String PARAM_COMMENT_NAME = "comment";
public static final String CREATE_LINK_NAME = "createLink";
public AbstractCopyBaseAction(String actionId) {
super(actionId);
......@@ -31,16 +34,27 @@ public abstract class AbstractCopyBaseAction extends ParameterizedHtmlFormTempla
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);
String comment = (String) getParameter(parameters, PARAM_COMMENT_NAME, false, null, String.class);
RepositoryConnector targetConnector = (RepositoryConnector) getParameter(parameters, PARAM_TARGET_CONNECTOR, true, null, RepositoryConnector.class);
boolean createLink = (Boolean) getParameter(parameters, CREATE_LINK_NAME, true, Boolean.TRUE, Boolean.class);
String contentAsString = connector.getContent(artifact.getNodeId(), getContentRepresentationIdToUse()).asString();
Content content = new Content();
content.setValue(contentAsString);
targetConnector.createArtifact(targetFolderId, targetName, artifact.getArtifactType().getId(), content);
RepositoryArtifact targetArtifact = targetConnector.createArtifact(targetFolderId, targetName, artifact.getArtifactType().getId(), content);
// TODO: Think about that more, does it make sense like this?
targetConnector.commitPendingChanges(comment);
if (createLink) {
RepositoryArtifactLink link = new RepositoryArtifactLinkImpl();
link.setSourceArtifact(artifact);
link.setTargetArtifact(targetArtifact);
link.setComment(comment);
link.setLinkType(RepositoryArtifactLinkImpl.TYPE_COPY);
connector.getConfiguration().getCycleService().addArtifactLink(link);
}
}
public abstract String getContentRepresentationIdToUse();
......
......@@ -6,6 +6,7 @@ import java.util.Map;
import org.activiti.cycle.Content;
import org.activiti.cycle.RepositoryArtifact;
import org.activiti.cycle.RepositoryArtifactLink;
import org.activiti.cycle.RepositoryConnector;
import org.activiti.cycle.RepositoryException;
import org.activiti.cycle.RepositoryFolder;
......@@ -13,6 +14,7 @@ import org.activiti.cycle.impl.ParameterizedHtmlFormTemplateAction;
import org.activiti.cycle.impl.connector.fs.FileSystemPluginDefinition;
import org.activiti.cycle.impl.connector.signavio.SignavioConnector;
import org.activiti.cycle.impl.connector.signavio.SignavioPluginDefinition;
import org.activiti.cycle.impl.db.entity.RepositoryArtifactLinkImpl;
import org.activiti.cycle.impl.transform.JsonTransformation;
import org.activiti.cycle.impl.transform.signavio.AdjustShapeNamesTransformation;
import org.activiti.cycle.impl.transform.signavio.BpmnPoolExtraction;
......@@ -37,6 +39,7 @@ public class CreateTechnicalBpmnXmlAction extends ParameterizedHtmlFormTemplateA
public static final String PARAM_TARGET_CONNECTOR = "targetConnectorId";
public static final String PARAM_TARGET_NAME = "targetName";
public static final String PARAM_COMMENT = "comment";
public static final String CREATE_LINK_NAME = "createLink";
/**
* Where do we get the transformations from? How are they registered?
......@@ -75,14 +78,35 @@ public class CreateTechnicalBpmnXmlAction extends ParameterizedHtmlFormTemplateA
String targetName = (String) getParameter(parameters, PARAM_TARGET_NAME, false, getProcessName(artifact), 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 sourceJson = getBpmn20Json((SignavioConnector) connector, artifact);
String transformedJson = applyJsonTransformations(sourceJson);
String bpmnXml = transformToBpmn20((SignavioConnector) connector, transformedJson);
createTargetArtifact(targetConnector, targetFolderId, targetName + ".bpmn20.xml", bpmnXml, FileSystemPluginDefinition.ARTIFACT_TYPE_BPMN_20_XML);
boolean createLink = (Boolean) getParameter(parameters, CREATE_LINK_NAME, true, Boolean.TRUE, Boolean.class);
RepositoryArtifact targetArtifact = createArtifact(connector, artifact, targetFolderId, targetName, targetConnector);
// TODO: Think about that more, does it make sense like this?
targetConnector.commitPendingChanges(comment);
if (createLink) {
RepositoryArtifactLink link = new RepositoryArtifactLinkImpl();
link.setSourceArtifact(artifact);
link.setTargetArtifact(targetArtifact);
link.setComment(comment);
link.setLinkType(getLinkType());
connector.getConfiguration().getCycleService().addArtifactLink(link);
}
}
public String getLinkType() {
return RepositoryArtifactLinkImpl.TYPE_IMPLEMENTS;
}
public RepositoryArtifact createArtifact(RepositoryConnector connector, RepositoryArtifact artifact, String targetFolderId, String targetName,
RepositoryConnector targetConnector) throws Exception {
String sourceJson = getBpmn20Json((SignavioConnector) connector, artifact);
String transformedJson = applyJsonTransformations(sourceJson);
String bpmnXml = transformToBpmn20((SignavioConnector) connector, transformedJson);
RepositoryArtifact targetArtifact = createTargetArtifact(targetConnector, targetFolderId, targetName + ".bpmn20.xml", bpmnXml,
FileSystemPluginDefinition.ARTIFACT_TYPE_BPMN_20_XML);
return targetArtifact;
}
protected String getBpmn20Json(RepositoryConnector connector, RepositoryArtifact artifact) {
......@@ -109,10 +133,11 @@ public class CreateTechnicalBpmnXmlAction extends ParameterizedHtmlFormTemplateA
return bpmnXml;
}
public void createTargetArtifact(RepositoryConnector targetConnector, String targetFolderId, String artifactId, String bpmnXml, String artifactTypeId) {
public RepositoryArtifact createTargetArtifact(RepositoryConnector targetConnector, String targetFolderId, String artifactId, String bpmnXml,
String artifactTypeId) {
Content content = new Content();
content.setValue(bpmnXml);
targetConnector.createArtifact(targetFolderId, artifactId, artifactTypeId, content);
return targetConnector.createArtifact(targetFolderId, artifactId, artifactTypeId, content);
}
public String getProcessName(RepositoryArtifact artifact) {
......
......@@ -10,6 +10,7 @@ import org.activiti.engine.impl.ProcessEngineImpl;
import org.activiti.engine.impl.bpmn.parser.BpmnParser;
import org.activiti.engine.impl.cfg.ProcessEngineConfiguration;
import org.activiti.engine.impl.el.ExpressionManager;
import org.activiti.engine.impl.repository.DeploymentEntity;
public class ValidateActivitiDeployment extends CreateTechnicalBpmnXmlAction {
......@@ -38,8 +39,14 @@ public class ValidateActivitiDeployment extends CreateTechnicalBpmnXmlAction {
String bpmnXml = transformToBpmn20((SignavioConnector) connector, transformedJson);
BpmnParser bpmnParser = new BpmnParser(expressionManager);
// Unfortunately the deployment id is requested while parsing, so we have to
// set a DeploymentEntity to avoid a NPE
DeploymentEntity deployment = new DeploymentEntity();
deployment.setId("VALIDATION_DEPLOYMENT");
// parse to validate
bpmnParser.createParse().sourceString(bpmnXml).name(artifact.getNodeId()).execute();
bpmnParser.createParse().deployment(deployment).sourceString(bpmnXml).name(artifact.getNodeId()).execute();
// That's it, now we get an exception is the file is invalid
}
......
......@@ -4,18 +4,18 @@ import java.util.List;
import org.activiti.cycle.impl.CycleTagContentImpl;
import org.activiti.cycle.impl.db.entity.CycleArtifactTagEntity;
import org.activiti.cycle.impl.db.entity.CycleLink;
import org.activiti.cycle.impl.db.entity.RepositoryArtifactLinkImpl;
public interface CycleDAO {
public List<CycleLink> getOutgoingCycleLinks(String sourceConnectorId, String sourceArtifactId);
public List<CycleLink> getIncomingCycleLinks(String targetConnectorId, String targetArtifactId);
public List<RepositoryArtifactLinkImpl> getOutgoingCycleLinks(String sourceConnectorId, String sourceArtifactId);
public List<RepositoryArtifactLinkImpl> getIncomingCycleLinks(String targetConnectorId, String targetArtifactId);
// public CycleLink findCycleLinkById(String id);
// public void updateCycleLink(CycleLink cycleLink);
public void insertCycleLink(CycleLink cycleLink);
public void insertCycleLink(RepositoryArtifactLinkImpl cycleLink);
public void deleteCycleLink(String id);
public List<CycleTagContentImpl> getTagsGroupedByName();
......
......@@ -14,15 +14,16 @@ import org.activiti.engine.impl.db.PersistentObject;
*
* @author ruecker, polenz
*/
public class CycleLink implements PersistentObject, RepositoryArtifactLink {
public class RepositoryArtifactLinkImpl implements PersistentObject, RepositoryArtifactLink {
/**
* TODO: Add own mini repository for types incling names for forward and
* reverse direction (like "is implemented by" in this case)
*/
public static String TYPE_IMPLEMENTS = "implements";
public static String TYPE_REFINES = "refines";
public static String TYPE_UNSPECIFIED = "unspecified link";
public static final String TYPE_IMPLEMENTS = "implements";
public static final String TYPE_REFINES = "refines";
public static final String TYPE_UNSPECIFIED = "unspecified link";
public static final String TYPE_COPY = "copy";
/**
* artificial id used as primary key to identify this link
......
......@@ -9,7 +9,6 @@ import org.apache.ibatis.session.SqlSessionFactory;
import com.thoughtworks.xstream.XStream;
public class CycleConfigurationServiceImpl extends AbstractCycleDaoMyBatisImpl implements CycleConfigurationService {
private XStream xStream = new XStream();
......
......@@ -7,46 +7,46 @@ import java.util.List;
import org.activiti.cycle.impl.CycleTagContentImpl;
import org.activiti.cycle.impl.db.CycleDAO;
import org.activiti.cycle.impl.db.entity.CycleArtifactTagEntity;
import org.activiti.cycle.impl.db.entity.CycleLink;
import org.activiti.cycle.impl.db.entity.RepositoryArtifactLinkImpl;
import org.apache.ibatis.session.SqlSession;
public class CycleDaoMyBatisImpl extends AbstractCycleDaoMyBatisImpl implements CycleDAO {
@SuppressWarnings("unchecked")
public List<CycleLink> getOutgoingCycleLinks(String sourceConnectorId, String sourceArtifactId) {
public List<RepositoryArtifactLinkImpl> getOutgoingCycleLinks(String sourceConnectorId, String sourceArtifactId) {
SqlSession session = openSession();
try {
HashMap<String, Object> parameters = new HashMap<String, Object>();
parameters.put("connectorId", sourceConnectorId);
parameters.put("artifactId", sourceArtifactId);
List<CycleLink> linkResultList = session.selectList("org.activiti.cycle.impl.db.entity.CycleLink.selectArtifactLinkForSourceArtifact", parameters);
List<RepositoryArtifactLinkImpl> linkResultList = session.selectList("org.activiti.cycle.impl.db.entity.CycleLink.selectArtifactLinkForSourceArtifact", parameters);
if (linkResultList != null) {
return linkResultList;
}
return new ArrayList<CycleLink>();
return new ArrayList<RepositoryArtifactLinkImpl>();
} finally {
session.close();
}
}
@SuppressWarnings("unchecked")
public List<CycleLink> getIncomingCycleLinks(String targetConnectorId, String targetArtifactId) {
public List<RepositoryArtifactLinkImpl> getIncomingCycleLinks(String targetConnectorId, String targetArtifactId) {
SqlSession session = openSession();
try {
HashMap<String, Object> parameters = new HashMap<String, Object>();
parameters.put("connectorId", targetConnectorId);
parameters.put("artifactId", targetArtifactId);
List<CycleLink> linkResultList = session.selectList("org.activiti.cycle.impl.db.entity.CycleLink.selectArtifactLinkForTargetArtifact", parameters);
List<RepositoryArtifactLinkImpl> linkResultList = session.selectList("org.activiti.cycle.impl.db.entity.CycleLink.selectArtifactLinkForTargetArtifact", parameters);
if (linkResultList != null) {
return linkResultList;
}
return new ArrayList<CycleLink>();
return new ArrayList<RepositoryArtifactLinkImpl>();
} finally {
session.close();
}
}
public void insertCycleLink(CycleLink cycleLink) {
public void insertCycleLink(RepositoryArtifactLinkImpl cycleLink) {
SqlSession session = openSession();
try {
session.insert("org.activiti.cycle.impl.db.entity.CycleLink.insertCycleLink", cycleLink);
......
......@@ -22,6 +22,16 @@
</label>
</td>
</tr>
<tr>
<td>
<label>
Keep link between models:<br/>
<input type="checkbox" name="createLink" value="true" checked/>
<input type="hidden" name="createLink_required" value="true" />
<input type="hidden" name="createLink_type" value="Boolean" />
</label><br/>
</td>
</tr>
<tr>
<td>
<label>
......
......@@ -22,6 +22,16 @@
</label>
</td>
</tr>
<tr>
<td>
<label>
Keep link between models:<br/>
<input type="checkbox" name="createLink" value="true" checked/>
<input type="hidden" name="createLink_required" value="true" />
<input type="hidden" name="createLink_type" value="Boolean" />
</label><br/>
</td>
</tr>
<tr>
<td>
<label>
......
......@@ -4,7 +4,7 @@
<mapper namespace="org.activiti.cycle">
<resultMap id="resultMapCycleLink" type="org.activiti.cycle.impl.db.entity.CycleLink">
<resultMap id="resultMapCycleLink" type="org.activiti.cycle.impl.db.entity.RepositoryArtifactLinkImpl">
<id property="id" column="ID_"/>
<result property="sourceConnectorId" column="SOURCE_CONNECTOR_ID_"/>
<result property="targetConnectorId" column="TARGET_CONNECTOR_ID_"/>
......@@ -33,7 +33,7 @@
select * from ACT_CY_LINK where TARGET_CONNECTOR_ID_ = #{connectorId} and TARGET_ARTIFACT_ID_ = #{artifactId}
</select>
<insert id="insertCycleLink" parameterType="org.activiti.cycle.impl.db.entity.CycleLink">
<insert id="insertCycleLink" parameterType="org.activiti.cycle.impl.db.entity.RepositoryArtifactLinkImpl">
insert into ACT_CY_LINK (ID_,SOURCE_CONNECTOR_ID_, TARGET_CONNECTOR_ID_, SOURCE_ARTIFACT_ID_,TARGET_ARTIFACT_ID_,SOURCE_ELEMENT_ID_,TARGET_ELEMENT_ID_,SOURCE_ELEMENT_NAME_,TARGET_ELEMENT_NAME_, SOURCE_REVISION_, TARGET_REVISION_ , LINK_TYPE_, COMMENT_, LINKED_BOTH_WAYS_)
values (
#{id, jdbcType=VARCHAR},
......
......@@ -18,7 +18,7 @@ import javax.servlet.http.HttpSession;
import org.activiti.cycle.CycleService;
import org.activiti.cycle.impl.CycleServiceImpl;
import org.activiti.cycle.impl.db.entity.CycleLink;
import org.activiti.cycle.impl.db.entity.RepositoryArtifactLinkImpl;
import org.activiti.rest.util.ActivitiRequest;
import org.activiti.rest.util.ActivitiRequestObject;
import org.activiti.rest.util.ActivitiWebScript;
......@@ -58,7 +58,7 @@ public class ArtifactLinkPost extends ActivitiWebScript {
String targetConnectorId = req.getMandatoryString(obj, "targetConnectorId");
String targetArtifactId = req.getMandatoryString(obj, "targetArtifactId");
CycleLink link = new CycleLink();
RepositoryArtifactLinkImpl link = new RepositoryArtifactLinkImpl();
link.setSourceConnectorId(sourceConnectorId);
link.setSourceArtifactId(sourceArtifactId);
link.setTargetConnectorId(targetConnectorId);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册