Flowgraph

Flowgraph Screenshot.
Flowgraph Screenshot.

Start modeling!

Getting Started

Create an account

Create a project

Build a Flowgraph

Features

Flowgraph MGL

While you’re modeling the story, compare the definitions from the specification MGL file with the behavior of the modeling tool.

import "platform:/resource/info.scce.cinco.product.flowgraph/model/ExternalLibrary.ecore" as externalLibrary

@style("model/FlowGraph.style")
@primeviewer
@generatable("info.scce.cinco.product.flowgraph.codegen.Generate","/src-gen/")
graphModel FlowGraph {
	package info.scce.cinco.product.flowgraph
	nsURI "http://cinco.scce.info/product/flowgraph"
	iconPath "icons/FlowGraph.png"
	diagramExtension "flowgraph"

	attr EString as modelName

	@style(greenCircle)
	@contextMenuAction("info.scce.cinco.product.flowgraph.action.ShortestPathToEnd")
	@doubleClickAction("info.scce.cinco.product.flowgraph.action.ShortestPathToEnd")
	@icon("icons/Start.png")
	@palette("Round Elements")
	node Start {
		// allow exactly one outgoing Transition
		outgoingEdges (Transition[1,1])
	}


	@style(redCircle)
	@icon("icons/End.png")
	@palette("Round Elements")
	node End{
		/*

		allow an arbitrary number (>0) of incoming edges

		the following would have been valid as well, meaning the same:
		  incomingEdges (*[1,*])

		*/
		incomingEdges (*[1,*])
	}

	// use the "blueTextRectangle" as style and pass the attribute "text" as parameter
	@style(blueTextRectangle, "${name}")
	@icon("icons/Activity.png")
	@palette("Rectangular Elements")
	@postCreate("info.scce.cinco.product.flowgraph.hooks.RandomActivityName")
	node Activity {
		attr EString as name
		incomingEdges (*[1,*])
		outgoingEdges (LabeledTransition[1,*])
	}

	@style(greenTextRectangle, "${activity.name}")
	node ExternalActivity {
		@pvLabel(name)
		@pvFileExtension("elib")
		prime externalLibrary.ExternalActivity as activity
		incomingEdges (*[1,*])
		outgoingEdges (LabeledTransition[1,*])
	}

	@style(greenTextRectangle, "${subFlowGraph.modelName}")
	node SubFlowGraph {
		prime this::FlowGraph as subFlowGraph
		incomingEdges (*[1,*])
		outgoingEdges (LabeledTransition[1,*])
	}

	@style(swimlane, "${actor}")
	@icon("icons/Swimlane.png")
	@palette("Rectangular Elements")
	container Swimlane {
		attr EString as actor
		attr EBoolean as foo
		containableElements (Start[1,1], Activity, End, ExternalActivity, SubFlowGraph)
	}

	@style(simpleArrow)
	edge Transition {
	}

	@style(labeledArrow, "${label}")
	edge LabeledTransition {
		attr EString as label
	}
}