package org.flexo.model;
import org.flexo.model.impl.EdgeImpl;
import org.openflexo.model.annotations.Getter;
import org.openflexo.model.annotations.ImplementationClass;
import org.openflexo.model.annotations.Initializer;
import org.openflexo.model.annotations.ModelEntity;
import org.openflexo.model.annotations.Parameter;
import org.openflexo.model.annotations.ReturnedValue;
import org.openflexo.model.annotations.Setter;
import org.openflexo.model.annotations.XMLElement;
@ModelEntity(isAbstract = true)
@ImplementationClass(EdgeImpl.class)
public interface Edge extends WKFObject {
public static final String START_NODE = "startNode";
public static final String END_NODE = "endNode";
@Initializer
public Edge init(@Parameter(START_NODE) AbstractNode start, @Parameter(END_NODE) AbstractNode end);
@Initializer
public Edge init(@Parameter(FlexoModelObject.NAME) String name, @Parameter(START_NODE) AbstractNode start,
@Parameter(END_NODE) AbstractNode end);
@Override
@Getter(PROCESS)
@ReturnedValue("startNode.process")
public FlexoProcess getProcess();
@Getter(value = START_NODE, inverse = AbstractNode.OUTGOING_EDGES)
@XMLElement(context = "Start")
public AbstractNode getStartNode();
@Setter(START_NODE)
public void setStartNode(AbstractNode node);
@Getter(value = END_NODE, inverse = AbstractNode.INCOMING_EDGES)
@XMLElement(context = "End")
public AbstractNode getEndNode();
@Setter(END_NODE)
public void setEndNode(AbstractNode node);
}