aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/frontend/src/persistence/initialValue.ts
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects/frontend/src/persistence/initialValue.ts')
-rw-r--r--subprojects/frontend/src/persistence/initialValue.ts103
1 files changed, 103 insertions, 0 deletions
diff --git a/subprojects/frontend/src/persistence/initialValue.ts b/subprojects/frontend/src/persistence/initialValue.ts
new file mode 100644
index 00000000..25b24813
--- /dev/null
+++ b/subprojects/frontend/src/persistence/initialValue.ts
@@ -0,0 +1,103 @@
1/*
2 * SPDX-FileCopyrightText: 2023 The Refinery Authors <https://refinery.tools/>
3 *
4 * SPDX-License-Identifier: EPL-2.0
5 */
6
7export default `% Metamodel
8
9abstract class CompositeElement {
10 contains Region[] regions
11}
12
13class Region {
14 contains Vertex[] vertices opposite region
15}
16
17abstract class Vertex {
18 container Region region opposite vertices
19 contains Transition[] outgoingTransition opposite source
20 Transition[] incomingTransition opposite target
21}
22
23class Transition {
24 container Vertex source opposite outgoingTransition
25 Vertex[1] target opposite incomingTransition
26}
27
28abstract class Pseudostate extends Vertex.
29
30abstract class RegularState extends Vertex.
31
32class Entry extends Pseudostate.
33
34class Exit extends Pseudostate.
35
36class Choice extends Pseudostate.
37
38class FinalState extends RegularState.
39
40class State extends RegularState, CompositeElement.
41
42class Statechart extends CompositeElement.
43
44% Constraints
45
46%% Entry
47
48pred entryInRegion(Region r, Entry e) <->
49 vertices(r, e).
50
51error noEntryInRegion(Region r) <->
52 !entryInRegion(r, _).
53
54error multipleEntryInRegion(Region r) <->
55 entryInRegion(r, e1),
56 entryInRegion(r, e2),
57 e1 != e2.
58
59error incomingToEntry(Transition t, Entry e) <->
60 target(t, e).
61
62error noOutgoingTransitionFromEntry(Entry e) <->
63 !source(_, e).
64
65error multipleTransitionFromEntry(Entry e, Transition t1, Transition t2) <->
66 outgoingTransition(e, t1),
67 outgoingTransition(e, t2),
68 t1 != t2.
69
70%% Exit
71
72error outgoingFromExit(Transition t, Exit e) <->
73 source(t, e).
74
75%% Final
76
77error outgoingFromFinal(Transition t, FinalState e) <->
78 source(t, e).
79
80%% State vs Region
81
82pred stateInRegion(Region r, State s) <->
83 vertices(r, s).
84
85error noStateInRegion(Region r) <->
86 !stateInRegion(r, _).
87
88%% Choice
89
90error choiceHasNoOutgoing(Choice c) <->
91 !source(_, c).
92
93error choiceHasNoIncoming(Choice c) <->
94 !target(_, c).
95
96% Instance model
97
98Statechart(sct).
99
100% Scope
101
102scope node = 20..30, Region = 2..*, Choice = 1..*, Statechart += 0.
103`;