blob: 7e710bedcbc5ac85455d27c7a65acd04ea0cade7 [file] [log] [blame]
@namespace(uri="http://eclipse.org/eugenia/simplebpmn", prefix="sbpmn")
@gmf
package SimpleBPMN;
@gmf.diagram
class BusinessProcessDiagram {
val BPMNElement[*] elements;
}
class BPMNElement {
attr String name;
}
/* SWIMLANES */
@gmf.node(label="name")
abstract class Swimlane extends BPMNElement {
}
class Lane extends Swimlane {
@gmf.compartment
val FlowObject[*] flowObjects;
}
class Pool extends Swimlane {
@gmf.compartment
val Lane[*] lanes;
}
/* CONNECTING OBJECTS */
@gmf.link(label="name", source="from", target="to", color="0,0,0")
abstract class ConnectingObject extends BPMNElement {
ref FlowObject from;
ref FlowObject to;
}
@gmf.link(tool.name="Message Flow", style="dash", target.decoration="closedarrow")
class MessageFlow extends ConnectingObject {
}
@gmf.link(tool.name="Sequence Flow", target.decoration="filledclosedarrow")
class SequenceFlow extends ConnectingObject {
}
@gmf.link(style="dot", target.decoration="arrow")
class Association extends ConnectingObject {
}
/* FLOW OBJECTS */
@gmf.node(label="name")
abstract class FlowObject extends BPMNElement {
}
abstract class Gateway extends FlowObject {
}
@gmf.node(tool.name="XOR Gateway",
figure="svg",
svg.uri="platform:/plugin/org.eclipse.epsilon.eugenia.bpmn/svg/xor-gateway.svg",
label.icon="false",
label.placement="external",
resizable="false",
margin="2")
class XOR extends Gateway {
}
@gmf.node(tool.name="OR Gateway",
figure="svg",
svg.uri="platform:/plugin/org.eclipse.epsilon.eugenia.bpmn/svg/or-gateway.svg",
label.icon="false",
label.placement="external",
resizable="false",
margin="2")
class OR extends Gateway {
}
@gmf.node(tool.name="AND Gateway",
figure="svg",
svg.uri="platform:/plugin/org.eclipse.epsilon.eugenia.bpmn/svg/and-gateway.svg",
label.icon="false",
label.placement="external",
resizable="false",
margin="2")
class AND extends Gateway {
}
@gmf.node(tool.name="Start Event",
figure="svg",
svg.uri="platform:/plugin/org.eclipse.epsilon.eugenia.bpmn/svg/start-event.svg",
label.icon="false",
label.placement="external",
resizable="false",
margin="2")
class StartEvent extends FlowObject {
}
@gmf.node(tool.name="Intermediate Event",
figure="svg",
svg.uri="platform:/plugin/org.eclipse.epsilon.eugenia.bpmn/svg/intermediate-event.svg",
label.icon="false",
label.placement="external",
resizable="false",
margin="2")
class IntermediateEvent extends FlowObject {
}
@gmf.node(tool.name="End Event",
figure="svg",
svg.uri="platform:/plugin/org.eclipse.epsilon.eugenia.bpmn/svg/end-event.svg",
label.icon="false",
label.placement="external",
resizable="false",
margin="2")
class EndEvent extends FlowObject {
}
class Activity extends FlowObject {
}
/* ARTIFACTS */
@gmf.node(label="name")
abstract class Artifact extends BPMNElement {
}
@gmf.node(tool.name="Data Object",
figure="svg",
svg.uri="platform:/plugin/org.eclipse.epsilon.eugenia.bpmn/svg/data-object.svg",
label.icon="false",
label.placement="external",
resizable="false",
margin="2")
class DataObject extends Artifact {
}
@gmf.node(label.placement="external", label.icon="false", border.style="dash", margin="2")
class Group extends Artifact {
@gmf.compartment
val BPMNElement[*] elements;
}