sysml-validate 0.10.18 → 0.14.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +27 -27
- package/README.md +200 -200
- package/out/main.js +596 -141
- package/out/main.js.map +4 -4
- package/package.json +57 -57
- package/resources/sysml.dimension-table.json +1 -1
- package/resources/sysml.library/Domain Libraries/Analysis/.meta.json +9 -9
- package/resources/sysml.library/Domain Libraries/Analysis/.project.json +26 -26
- package/resources/sysml.library/Domain Libraries/Analysis/AnalysisTooling.sysml +33 -33
- package/resources/sysml.library/Domain Libraries/Analysis/SampledFunctions.sysml +118 -118
- package/resources/sysml.library/Domain Libraries/Analysis/StateSpaceRepresentation.sysml +143 -143
- package/resources/sysml.library/Domain Libraries/Analysis/TradeStudies.sysml +170 -170
- package/resources/sysml.library/Domain Libraries/Cause and Effect/.meta.json +7 -7
- package/resources/sysml.library/Domain Libraries/Cause and Effect/.project.json +22 -22
- package/resources/sysml.library/Domain Libraries/Cause and Effect/CausationConnections.sysml +82 -82
- package/resources/sysml.library/Domain Libraries/Cause and Effect/CauseAndEffect.sysml +81 -81
- package/resources/sysml.library/Domain Libraries/Geometry/.meta.json +7 -7
- package/resources/sysml.library/Domain Libraries/Geometry/.project.json +26 -26
- package/resources/sysml.library/Domain Libraries/Geometry/ShapeItems.sysml +898 -898
- package/resources/sysml.library/Domain Libraries/Geometry/SpatialItems.sysml +167 -167
- package/resources/sysml.library/Domain Libraries/Metadata/.meta.json +9 -9
- package/resources/sysml.library/Domain Libraries/Metadata/.project.json +18 -18
- package/resources/sysml.library/Domain Libraries/Metadata/ImageMetadata.sysml +77 -77
- package/resources/sysml.library/Domain Libraries/Metadata/ModelingMetadata.sysml +142 -142
- package/resources/sysml.library/Domain Libraries/Metadata/ParametersOfInterestMetadata.sysml +38 -38
- package/resources/sysml.library/Domain Libraries/Metadata/RiskMetadata.sysml +99 -99
- package/resources/sysml.library/Domain Libraries/Quantities and Units/.meta.json +28 -28
- package/resources/sysml.library/Domain Libraries/Quantities and Units/.project.json +22 -22
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQ.sysml +42 -42
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQAcoustics.sysml +439 -439
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQAtomicNuclear.sysml +2726 -2726
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQBase.sysml +206 -206
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQCharacteristicNumbers.sysml +1991 -1991
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQChemistryMolecular.sysml +1353 -1353
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQCondensedMatter.sysml +1223 -1223
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQElectromagnetism.sysml +2333 -2333
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQInformation.sysml +958 -958
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQLight.sysml +1537 -1537
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQMechanics.sysml +1564 -1564
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQSpaceTime.sysml +1169 -1169
- package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQThermodynamics.sysml +1256 -1256
- package/resources/sysml.library/Domain Libraries/Quantities and Units/MeasurementRefCalculations.sysml +30 -30
- package/resources/sysml.library/Domain Libraries/Quantities and Units/MeasurementReferences.sysml +526 -526
- package/resources/sysml.library/Domain Libraries/Quantities and Units/Quantities.sysml +107 -107
- package/resources/sysml.library/Domain Libraries/Quantities and Units/QuantityCalculations.sysml +70 -70
- package/resources/sysml.library/Domain Libraries/Quantities and Units/SI.sysml +378 -378
- package/resources/sysml.library/Domain Libraries/Quantities and Units/SIPrefixes.sysml +48 -48
- package/resources/sysml.library/Domain Libraries/Quantities and Units/TensorCalculations.sysml +49 -49
- package/resources/sysml.library/Domain Libraries/Quantities and Units/Time.sysml +274 -274
- package/resources/sysml.library/Domain Libraries/Quantities and Units/USCustomaryUnits.sysml +260 -260
- package/resources/sysml.library/Domain Libraries/Quantities and Units/VectorCalculations.sysml +62 -62
- package/resources/sysml.library/Domain Libraries/Requirement Derivation/.meta.json +7 -7
- package/resources/sysml.library/Domain Libraries/Requirement Derivation/.project.json +18 -18
- package/resources/sysml.library/Domain Libraries/Requirement Derivation/DerivationConnections.sysml +62 -62
- package/resources/sysml.library/Domain Libraries/Requirement Derivation/RequirementDerivation.sysml +38 -38
- package/resources/sysml.library/Kernel Libraries/Kernel Data Type Library/.meta.json +8 -8
- package/resources/sysml.library/Kernel Libraries/Kernel Data Type Library/.project.json +10 -10
- package/resources/sysml.library/Kernel Libraries/Kernel Data Type Library/Collections.kerml +176 -176
- package/resources/sysml.library/Kernel Libraries/Kernel Data Type Library/ScalarValues.kerml +23 -23
- package/resources/sysml.library/Kernel Libraries/Kernel Data Type Library/VectorValues.kerml +63 -63
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/.meta.json +22 -22
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/.project.json +14 -14
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/BaseFunctions.kerml +79 -79
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/BooleanFunctions.kerml +22 -22
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/CollectionFunctions.kerml +68 -68
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/ComplexFunctions.kerml +47 -47
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/ControlFunctions.kerml +116 -116
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/DataFunctions.kerml +42 -42
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/IntegerFunctions.kerml +43 -43
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/NaturalFunctions.kerml +27 -27
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/NumericalFunctions.kerml +42 -42
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/OccurrenceFunctions.kerml +153 -153
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/RationalFunctions.kerml +49 -49
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/RealFunctions.kerml +56 -56
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/ScalarFunctions.kerml +32 -32
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/SequenceFunctions.kerml +110 -110
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/StringFunctions.kerml +25 -25
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/TrigFunctions.kerml +34 -34
- package/resources/sysml.library/Kernel Libraries/Kernel Function Library/VectorFunctions.kerml +272 -272
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/.meta.json +21 -21
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/.project.json +14 -14
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Base.kerml +94 -94
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Clocks.kerml +155 -155
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/ControlPerformances.kerml +134 -134
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/FeatureReferencingPerformances.kerml +189 -189
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/KerML.kerml +483 -483
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Links.kerml +66 -66
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Metaobjects.kerml +57 -57
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Objects.kerml +212 -212
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Observation.kerml +160 -160
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Occurrences.kerml +992 -992
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Performances.kerml +292 -292
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/SpatialFrames.kerml +196 -196
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/StatePerformances.kerml +144 -144
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Transfers.kerml +280 -280
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/TransitionPerformances.kerml +65 -65
- package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Triggers.kerml +187 -187
- package/resources/sysml.library/LICENSE +276 -276
- package/resources/sysml.library/NOTICE.md +20 -20
- package/resources/sysml.library/Systems Library/Actions.sysml +556 -556
- package/resources/sysml.library/Systems Library/Allocations.sysml +28 -28
- package/resources/sysml.library/Systems Library/AnalysisCases.sysml +37 -37
- package/resources/sysml.library/Systems Library/Attributes.sysml +24 -24
- package/resources/sysml.library/Systems Library/Calculations.sysml +36 -36
- package/resources/sysml.library/Systems Library/Cases.sysml +70 -70
- package/resources/sysml.library/Systems Library/Connections.sysml +59 -59
- package/resources/sysml.library/Systems Library/Constraints.sysml +43 -43
- package/resources/sysml.library/Systems Library/Flows.sysml +125 -125
- package/resources/sysml.library/Systems Library/Interfaces.sysml +88 -88
- package/resources/sysml.library/Systems Library/Items.sysml +152 -152
- package/resources/sysml.library/Systems Library/Metadata.sysml +31 -31
- package/resources/sysml.library/Systems Library/Parts.sysml +80 -80
- package/resources/sysml.library/Systems Library/Ports.sysml +53 -53
- package/resources/sysml.library/Systems Library/Requirements.sysml +193 -193
- package/resources/sysml.library/Systems Library/StandardViewDefinitions.sysml +123 -123
- package/resources/sysml.library/Systems Library/States.sysml +102 -102
- package/resources/sysml.library/Systems Library/SysML.sysml +539 -539
- package/resources/sysml.library/Systems Library/UseCases.sysml +56 -56
- package/resources/sysml.library/Systems Library/VerificationCases.sysml +102 -102
- package/resources/sysml.library/Systems Library/Views.sysml +163 -163
- package/resources/sysml.library.index.json +1 -1
package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/StatePerformances.kerml
CHANGED
|
@@ -1,145 +1,145 @@
|
|
|
1
|
-
standard library package StatePerformances {
|
|
2
|
-
doc
|
|
3
|
-
/*
|
|
4
|
-
* This package contains a library model of the semantics of state-based behavior,
|
|
5
|
-
* including the performance of (behavioral) states and the transitions between them.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
private import ScalarValues::Boolean;
|
|
9
|
-
private import ScalarValues::Natural;
|
|
10
|
-
private import TransitionPerformances::TransitionPerformance;
|
|
11
|
-
private import Occurrences::Occurrence;
|
|
12
|
-
private import Occurrences::HappensDuring;
|
|
13
|
-
private import Transfers::Transfer;
|
|
14
|
-
private import Transfers::MessageTransfer;
|
|
15
|
-
private import Performances::Performance;
|
|
16
|
-
private import ControlPerformances::DecisionPerformance;
|
|
17
|
-
private import ControlFunctions::forAll;
|
|
18
|
-
private import ControlFunctions::select;
|
|
19
|
-
private import ControlFunctions::collect;
|
|
20
|
-
private import SequenceFunctions::*;
|
|
21
|
-
|
|
22
|
-
behavior StatePerformance specializes DecisionPerformance {
|
|
23
|
-
feature isTriggerDuring: Boolean default true;
|
|
24
|
-
|
|
25
|
-
abstract step middle[1..*] {
|
|
26
|
-
doc
|
|
27
|
-
/*
|
|
28
|
-
* All modeler-defined steps must subset this.
|
|
29
|
-
*/
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/*
|
|
33
|
-
* Note: All steps are implicitly considered to be enclosedPerformances,
|
|
34
|
-
* and hence happening during the state performance.
|
|
35
|
-
*/
|
|
36
|
-
|
|
37
|
-
step entry[1];
|
|
38
|
-
step do[1] subsets middle;
|
|
39
|
-
step exit[1];
|
|
40
|
-
|
|
41
|
-
step nonDoMiddle[*] subsets middle = middle->excluding(do);
|
|
42
|
-
|
|
43
|
-
private succession [1] entry then [*] middle;
|
|
44
|
-
private succession [1] do.startShot then [*] nonDoMiddle.startShot;
|
|
45
|
-
private succession [*] middle then [1] exit;
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
feature incomingTransitionTrigger : MessageTransfer [0..1] default null {
|
|
49
|
-
doc
|
|
50
|
-
/*
|
|
51
|
-
* Transfer that triggered a transition into this state performance.
|
|
52
|
-
*/
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
private inv { isEmpty(accepted) == isEmpty(acceptable) }
|
|
56
|
-
feature accepted: Transfer[0..1] subsets acceptable {
|
|
57
|
-
doc
|
|
58
|
-
/* A transfer to the trigger target of an outgoing transition performance
|
|
59
|
-
* for an outgoing successon that is taken for this state occurrence.
|
|
60
|
-
*/
|
|
61
|
-
}
|
|
62
|
-
feature deferrable: Transfer[0..*] subsets acceptable {
|
|
63
|
-
doc
|
|
64
|
-
/* Transfers to trigger targets of outgoing transition performances can be
|
|
65
|
-
* considered for acceptance more than once.
|
|
66
|
-
*/
|
|
67
|
-
}
|
|
68
|
-
abstract feature acceptable: Transfer[*] {
|
|
69
|
-
doc
|
|
70
|
-
/*
|
|
71
|
-
* Transfers that might be accepted.
|
|
72
|
-
*/
|
|
73
|
-
feature thatSP : StatePerformance [1] = that as StatePerformance;
|
|
74
|
-
feature accableT : Transfer redefines self;
|
|
75
|
-
feature accT : Transfer = thatSP.accepted;
|
|
76
|
-
inv { accableT == accT | incomingTransferSort(accT, accableT) }
|
|
77
|
-
inv { isDispatch implies
|
|
78
|
-
allSubstatePerformances(dispatchScope)->forAll{in oSP : StatePerformance;
|
|
79
|
-
oSP == thatSP | isEmpty(oSP.accepted) |
|
|
80
|
-
includes(thatSP.exit.startShot.successors, oSP.exit.startShot) |
|
|
81
|
-
( oSP.accepted != accableT &
|
|
82
|
-
( incomingTransferSort(oSP.accepted, accableT) |
|
|
83
|
-
includes(oSP.deferrable, accableT) ) ) } }
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
function allSubstatePerformances {
|
|
87
|
-
in p : Performance [1];
|
|
88
|
-
feature substatePerformances: StatePerformance [*] =
|
|
89
|
-
p.subperformances->select{in subp:Performance; subp istype StatePerformance};
|
|
90
|
-
return : StatePerformance [*] =
|
|
91
|
-
union(substatePerformances,
|
|
92
|
-
substatePerformances->collect{in sp:StatePerformance; allSubstatePerformances(sp) } );
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
private succession [*] acceptable then [1] exit;
|
|
96
|
-
|
|
97
|
-
feature redefines isRunToCompletion default this.isRunToCompletion;
|
|
98
|
-
feature redefines runToCompletionScope default this.runToCompletionScope;
|
|
99
|
-
inv { isRunToCompletion implies
|
|
100
|
-
allSubtransitionPerformances(runToCompletionScope)->forAll{in tp : TransitionPerformance;
|
|
101
|
-
includes(tp.successors, entry) | includes(tp.predecessors, entry) }
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
function allSubtransitionPerformances {
|
|
105
|
-
in p : Performance [1];
|
|
106
|
-
feature subtransitionPerformances: TransitionPerformance [*] =
|
|
107
|
-
p.subperformances->select{in subp:Performance;
|
|
108
|
-
subp istype StateTransitionPerformance };
|
|
109
|
-
return : TransitionPerformance [*] =
|
|
110
|
-
union(subtransitionPerformances,
|
|
111
|
-
subtransitionPerformances->collect{in sp:TransitionPerformance;
|
|
112
|
-
allSubtransitionPerformances(sp) } );
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
behavior StateTransitionPerformance specializes TransitionPerformance {
|
|
117
|
-
feature isTriggerDuring: Boolean[1];
|
|
118
|
-
inv { not transitionLinkSource.isTriggerDuring | isTriggerDuring }
|
|
119
|
-
|
|
120
|
-
in feature transitionLinkSource: StatePerformance redefines TransitionPerformance::transitionLinkSource {
|
|
121
|
-
feature redefines accepted;
|
|
122
|
-
feature redefines StatePerformance::acceptable;
|
|
123
|
-
}
|
|
124
|
-
private succession [*] transitionLinkSource.nonDoMiddle then [1] Performance::self;
|
|
125
|
-
|
|
126
|
-
private feature transitionLinkTarget [0..1] : Occurrence = transitionLink.laterOccurrence {
|
|
127
|
-
inv { (that istype StatePerformance) implies
|
|
128
|
-
(that as StatePerformance).incomingTransitionTrigger == trigger }
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
feature acceptable: Transfer [*] subsets transitionLinkSource.acceptable, triggerTarget.incomingTransfersToSelf;
|
|
132
|
-
|
|
133
|
-
feature trigger redefines TransitionPerformance::trigger subsets acceptable, transitionLinkSource.accepted {
|
|
134
|
-
feature redefines endShot;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
private feature tdNum: Natural [1] = if not isTriggerDuring ? 0 else size(trigger);
|
|
138
|
-
private connector linkTriggerDuring: HappensDuring[tdNum] from [*] trigger.endShot to [0..1] transitionLinkSource;
|
|
139
|
-
|
|
140
|
-
private succession all [*] acceptable then [*] guard;
|
|
141
|
-
private succession [*] guard then [1] transitionLinkSource.exit;
|
|
142
|
-
|
|
143
|
-
private succession [accNum] accept then [1] transitionLinkSource.exit;
|
|
144
|
-
}
|
|
1
|
+
standard library package StatePerformances {
|
|
2
|
+
doc
|
|
3
|
+
/*
|
|
4
|
+
* This package contains a library model of the semantics of state-based behavior,
|
|
5
|
+
* including the performance of (behavioral) states and the transitions between them.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
private import ScalarValues::Boolean;
|
|
9
|
+
private import ScalarValues::Natural;
|
|
10
|
+
private import TransitionPerformances::TransitionPerformance;
|
|
11
|
+
private import Occurrences::Occurrence;
|
|
12
|
+
private import Occurrences::HappensDuring;
|
|
13
|
+
private import Transfers::Transfer;
|
|
14
|
+
private import Transfers::MessageTransfer;
|
|
15
|
+
private import Performances::Performance;
|
|
16
|
+
private import ControlPerformances::DecisionPerformance;
|
|
17
|
+
private import ControlFunctions::forAll;
|
|
18
|
+
private import ControlFunctions::select;
|
|
19
|
+
private import ControlFunctions::collect;
|
|
20
|
+
private import SequenceFunctions::*;
|
|
21
|
+
|
|
22
|
+
behavior StatePerformance specializes DecisionPerformance {
|
|
23
|
+
feature isTriggerDuring: Boolean default true;
|
|
24
|
+
|
|
25
|
+
abstract step middle[1..*] {
|
|
26
|
+
doc
|
|
27
|
+
/*
|
|
28
|
+
* All modeler-defined steps must subset this.
|
|
29
|
+
*/
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/*
|
|
33
|
+
* Note: All steps are implicitly considered to be enclosedPerformances,
|
|
34
|
+
* and hence happening during the state performance.
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
step entry[1];
|
|
38
|
+
step do[1] subsets middle;
|
|
39
|
+
step exit[1];
|
|
40
|
+
|
|
41
|
+
step nonDoMiddle[*] subsets middle = middle->excluding(do);
|
|
42
|
+
|
|
43
|
+
private succession [1] entry then [*] middle;
|
|
44
|
+
private succession [1] do.startShot then [*] nonDoMiddle.startShot;
|
|
45
|
+
private succession [*] middle then [1] exit;
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
feature incomingTransitionTrigger : MessageTransfer [0..1] default null {
|
|
49
|
+
doc
|
|
50
|
+
/*
|
|
51
|
+
* Transfer that triggered a transition into this state performance.
|
|
52
|
+
*/
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
private inv { isEmpty(accepted) == isEmpty(acceptable) }
|
|
56
|
+
feature accepted: Transfer[0..1] subsets acceptable {
|
|
57
|
+
doc
|
|
58
|
+
/* A transfer to the trigger target of an outgoing transition performance
|
|
59
|
+
* for an outgoing successon that is taken for this state occurrence.
|
|
60
|
+
*/
|
|
61
|
+
}
|
|
62
|
+
feature deferrable: Transfer[0..*] subsets acceptable {
|
|
63
|
+
doc
|
|
64
|
+
/* Transfers to trigger targets of outgoing transition performances can be
|
|
65
|
+
* considered for acceptance more than once.
|
|
66
|
+
*/
|
|
67
|
+
}
|
|
68
|
+
abstract feature acceptable: Transfer[*] {
|
|
69
|
+
doc
|
|
70
|
+
/*
|
|
71
|
+
* Transfers that might be accepted.
|
|
72
|
+
*/
|
|
73
|
+
feature thatSP : StatePerformance [1] = that as StatePerformance;
|
|
74
|
+
feature accableT : Transfer redefines self;
|
|
75
|
+
feature accT : Transfer = thatSP.accepted;
|
|
76
|
+
inv { accableT == accT | incomingTransferSort(accT, accableT) }
|
|
77
|
+
inv { isDispatch implies
|
|
78
|
+
allSubstatePerformances(dispatchScope)->forAll{in oSP : StatePerformance;
|
|
79
|
+
oSP == thatSP | isEmpty(oSP.accepted) |
|
|
80
|
+
includes(thatSP.exit.startShot.successors, oSP.exit.startShot) |
|
|
81
|
+
( oSP.accepted != accableT &
|
|
82
|
+
( incomingTransferSort(oSP.accepted, accableT) |
|
|
83
|
+
includes(oSP.deferrable, accableT) ) ) } }
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function allSubstatePerformances {
|
|
87
|
+
in p : Performance [1];
|
|
88
|
+
feature substatePerformances: StatePerformance [*] =
|
|
89
|
+
p.subperformances->select{in subp:Performance; subp istype StatePerformance};
|
|
90
|
+
return : StatePerformance [*] =
|
|
91
|
+
union(substatePerformances,
|
|
92
|
+
substatePerformances->collect{in sp:StatePerformance; allSubstatePerformances(sp) } );
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
private succession [*] acceptable then [1] exit;
|
|
96
|
+
|
|
97
|
+
feature redefines isRunToCompletion default this.isRunToCompletion;
|
|
98
|
+
feature redefines runToCompletionScope default this.runToCompletionScope;
|
|
99
|
+
inv { isRunToCompletion implies
|
|
100
|
+
allSubtransitionPerformances(runToCompletionScope)->forAll{in tp : TransitionPerformance;
|
|
101
|
+
includes(tp.successors, entry) | includes(tp.predecessors, entry) }
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
function allSubtransitionPerformances {
|
|
105
|
+
in p : Performance [1];
|
|
106
|
+
feature subtransitionPerformances: TransitionPerformance [*] =
|
|
107
|
+
p.subperformances->select{in subp:Performance;
|
|
108
|
+
subp istype StateTransitionPerformance };
|
|
109
|
+
return : TransitionPerformance [*] =
|
|
110
|
+
union(subtransitionPerformances,
|
|
111
|
+
subtransitionPerformances->collect{in sp:TransitionPerformance;
|
|
112
|
+
allSubtransitionPerformances(sp) } );
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
behavior StateTransitionPerformance specializes TransitionPerformance {
|
|
117
|
+
feature isTriggerDuring: Boolean[1];
|
|
118
|
+
inv { not transitionLinkSource.isTriggerDuring | isTriggerDuring }
|
|
119
|
+
|
|
120
|
+
in feature transitionLinkSource: StatePerformance redefines TransitionPerformance::transitionLinkSource {
|
|
121
|
+
feature redefines accepted;
|
|
122
|
+
feature redefines StatePerformance::acceptable;
|
|
123
|
+
}
|
|
124
|
+
private succession [*] transitionLinkSource.nonDoMiddle then [1] Performance::self;
|
|
125
|
+
|
|
126
|
+
private feature transitionLinkTarget [0..1] : Occurrence = transitionLink.laterOccurrence {
|
|
127
|
+
inv { (that istype StatePerformance) implies
|
|
128
|
+
(that as StatePerformance).incomingTransitionTrigger == trigger }
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
feature acceptable: Transfer [*] subsets transitionLinkSource.acceptable, triggerTarget.incomingTransfersToSelf;
|
|
132
|
+
|
|
133
|
+
feature trigger redefines TransitionPerformance::trigger subsets acceptable, transitionLinkSource.accepted {
|
|
134
|
+
feature redefines endShot;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
private feature tdNum: Natural [1] = if not isTriggerDuring ? 0 else size(trigger);
|
|
138
|
+
private connector linkTriggerDuring: HappensDuring[tdNum] from [*] trigger.endShot to [0..1] transitionLinkSource;
|
|
139
|
+
|
|
140
|
+
private succession all [*] acceptable then [*] guard;
|
|
141
|
+
private succession [*] guard then [1] transitionLinkSource.exit;
|
|
142
|
+
|
|
143
|
+
private succession [accNum] accept then [1] transitionLinkSource.exit;
|
|
144
|
+
}
|
|
145
145
|
}
|