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
|
@@ -1,161 +1,161 @@
|
|
|
1
|
-
standard library package Observation {
|
|
2
|
-
doc
|
|
3
|
-
/*
|
|
4
|
-
* This package models a framework for monitoring Boolean conditions and notifying
|
|
5
|
-
* registered observers when they change from false to true.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
private import ScalarValues::Boolean;
|
|
9
|
-
private import Occurrences::Occurrence;
|
|
10
|
-
private import Occurrences::Life;
|
|
11
|
-
private import SequenceFunctions::including;
|
|
12
|
-
private import SequenceFunctions::excluding;
|
|
13
|
-
private import ControlFunctions::select;
|
|
14
|
-
private import ControlPerformances::DecisionPerformance;
|
|
15
|
-
private import ControlPerformances::IfThenPerformance;
|
|
16
|
-
private import FeatureReferencingPerformances::FeatureWritePerformance;
|
|
17
|
-
private import FeatureReferencingPerformances::BooleanEvaluationResultToMonitorPerformance;
|
|
18
|
-
private import Transfers::TransferBefore;
|
|
19
|
-
|
|
20
|
-
private struct DefaultMonitorLife[1] :> ChangeMonitor, Life {
|
|
21
|
-
doc
|
|
22
|
-
/*
|
|
23
|
-
* DefaultMonitorLife is the classifier of the singleton Life of the defaultMonitor.
|
|
24
|
-
*/
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
feature defaultMonitor[1] : DefaultMonitorLife {
|
|
28
|
-
doc
|
|
29
|
-
/*
|
|
30
|
-
* defaultMonitor is a single ChangeMonitor that can be used as a default.
|
|
31
|
-
*/
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
struct ChangeSignal {
|
|
35
|
-
doc
|
|
36
|
-
/*
|
|
37
|
-
* A ChangeSignal is a signal to be sent when the Boolean result of its
|
|
38
|
-
* changeCondition Expression changes from false to true.
|
|
39
|
-
*/
|
|
40
|
-
|
|
41
|
-
bool signalCondition {
|
|
42
|
-
doc
|
|
43
|
-
/*
|
|
44
|
-
* A BooleanExpression whose result is being monitored.
|
|
45
|
-
*/
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
feature signalMonitor : ChangeMonitor {
|
|
49
|
-
doc
|
|
50
|
-
/*
|
|
51
|
-
* The ChangeMonitor responsible for monitoring the signalCondition.
|
|
52
|
-
*/
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
private behavior ObserveChange {
|
|
57
|
-
doc
|
|
58
|
-
/*
|
|
59
|
-
* Each Performance of ObserveChange waits for the result of the Boolean
|
|
60
|
-
* condition of a given ChangeSignal to change from false to true, and, when
|
|
61
|
-
* it does, sends the ChangeSignal to a given observer Occurrence.
|
|
62
|
-
*/
|
|
63
|
-
|
|
64
|
-
in feature changeObserver : Occurrence[1];
|
|
65
|
-
in feature changeSignal : ChangeSignal[1];
|
|
66
|
-
|
|
67
|
-
composite step wait : IfThenPerformance {
|
|
68
|
-
doc
|
|
69
|
-
/*
|
|
70
|
-
* If the result of the changeSignal.signalCondition is false, then wait for
|
|
71
|
-
* it to become true.
|
|
72
|
-
*/
|
|
73
|
-
|
|
74
|
-
in bool redefines ifTest {
|
|
75
|
-
not changeSignal.signalCondition()
|
|
76
|
-
}
|
|
77
|
-
in step redefines thenClause : BooleanEvaluationResultToMonitorPerformance {
|
|
78
|
-
in bool onOccurrence = changeSignal.signalCondition;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
succession wait then transfer;
|
|
83
|
-
|
|
84
|
-
step transfer : TransferBefore[1]
|
|
85
|
-
redefines outgoingTransfersFromSelf
|
|
86
|
-
subsets changeObserver.incomingTransfers {
|
|
87
|
-
doc
|
|
88
|
-
/*
|
|
89
|
-
* Then send changeSignal to changeObserver.
|
|
90
|
-
*/
|
|
91
|
-
|
|
92
|
-
end feature source {
|
|
93
|
-
feature redefines sourceOutput = changeSignal;
|
|
94
|
-
}
|
|
95
|
-
end feature target;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
struct ChangeMonitor {
|
|
100
|
-
doc
|
|
101
|
-
/*
|
|
102
|
-
* A ChangeMonitor is a collection of ongoing ChangeSignal observations
|
|
103
|
-
* for various observer Occurrences. It provides convenient operations for
|
|
104
|
-
* starting and canceling the observations it manages.
|
|
105
|
-
*/
|
|
106
|
-
|
|
107
|
-
private thisMonitor : ChangeMonitor redefines self;
|
|
108
|
-
private composite feature observations[0..*] : ObserveChange;
|
|
109
|
-
|
|
110
|
-
private behavior AssignObservations specializes FeatureWritePerformance {
|
|
111
|
-
doc
|
|
112
|
-
/*
|
|
113
|
-
* Assign a replacement set of observations as those being managed by a
|
|
114
|
-
* given ChangeMonitor.
|
|
115
|
-
*/
|
|
116
|
-
|
|
117
|
-
in feature monitor : ChangeMonitor redefines onOccurrence {
|
|
118
|
-
feature redefines startingAt {
|
|
119
|
-
feature redefines accessedFeature, observations;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
inout feature redefines replacementValues[0..*] : ObserveChange;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
step startObservation {
|
|
126
|
-
doc
|
|
127
|
-
/*
|
|
128
|
-
* Start an observation of a given ChangeSignal for a given Occurrence.
|
|
129
|
-
*/
|
|
130
|
-
|
|
131
|
-
in observer : Occurrence[1];
|
|
132
|
-
in signal : ChangeSignal[1];
|
|
133
|
-
private composite step observation : ObserveChange {
|
|
134
|
-
in changeObserver = observer;
|
|
135
|
-
in changeSignal = signal;
|
|
136
|
-
}
|
|
137
|
-
private composite step addObservation : AssignObservations[1] {
|
|
138
|
-
in monitor = thisMonitor;
|
|
139
|
-
inout replacementValues = observations->including(observation);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
step cancelObservation {
|
|
144
|
-
doc
|
|
145
|
-
/*
|
|
146
|
-
* Cancel all observations of a given ChangeSignal for a given Occurrence.
|
|
147
|
-
*/
|
|
148
|
-
|
|
149
|
-
in observer : Occurrence[1];
|
|
150
|
-
in signal : ChangeSignal[1];
|
|
151
|
-
private feature observations[0..*] : ObserveChange =
|
|
152
|
-
observations->select{in observation : ObserveChange;
|
|
153
|
-
observation.changeObserver == observer and observation.changeSignal == signal
|
|
154
|
-
};
|
|
155
|
-
private composite step removeObservation : AssignObservations[1] {
|
|
156
|
-
in monitor = thisMonitor;
|
|
157
|
-
inout replacementValues = observations->excluding(observations);
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
}
|
|
1
|
+
standard library package Observation {
|
|
2
|
+
doc
|
|
3
|
+
/*
|
|
4
|
+
* This package models a framework for monitoring Boolean conditions and notifying
|
|
5
|
+
* registered observers when they change from false to true.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
private import ScalarValues::Boolean;
|
|
9
|
+
private import Occurrences::Occurrence;
|
|
10
|
+
private import Occurrences::Life;
|
|
11
|
+
private import SequenceFunctions::including;
|
|
12
|
+
private import SequenceFunctions::excluding;
|
|
13
|
+
private import ControlFunctions::select;
|
|
14
|
+
private import ControlPerformances::DecisionPerformance;
|
|
15
|
+
private import ControlPerformances::IfThenPerformance;
|
|
16
|
+
private import FeatureReferencingPerformances::FeatureWritePerformance;
|
|
17
|
+
private import FeatureReferencingPerformances::BooleanEvaluationResultToMonitorPerformance;
|
|
18
|
+
private import Transfers::TransferBefore;
|
|
19
|
+
|
|
20
|
+
private struct DefaultMonitorLife[1] :> ChangeMonitor, Life {
|
|
21
|
+
doc
|
|
22
|
+
/*
|
|
23
|
+
* DefaultMonitorLife is the classifier of the singleton Life of the defaultMonitor.
|
|
24
|
+
*/
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
feature defaultMonitor[1] : DefaultMonitorLife {
|
|
28
|
+
doc
|
|
29
|
+
/*
|
|
30
|
+
* defaultMonitor is a single ChangeMonitor that can be used as a default.
|
|
31
|
+
*/
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
struct ChangeSignal {
|
|
35
|
+
doc
|
|
36
|
+
/*
|
|
37
|
+
* A ChangeSignal is a signal to be sent when the Boolean result of its
|
|
38
|
+
* changeCondition Expression changes from false to true.
|
|
39
|
+
*/
|
|
40
|
+
|
|
41
|
+
bool signalCondition {
|
|
42
|
+
doc
|
|
43
|
+
/*
|
|
44
|
+
* A BooleanExpression whose result is being monitored.
|
|
45
|
+
*/
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
feature signalMonitor : ChangeMonitor {
|
|
49
|
+
doc
|
|
50
|
+
/*
|
|
51
|
+
* The ChangeMonitor responsible for monitoring the signalCondition.
|
|
52
|
+
*/
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
private behavior ObserveChange {
|
|
57
|
+
doc
|
|
58
|
+
/*
|
|
59
|
+
* Each Performance of ObserveChange waits for the result of the Boolean
|
|
60
|
+
* condition of a given ChangeSignal to change from false to true, and, when
|
|
61
|
+
* it does, sends the ChangeSignal to a given observer Occurrence.
|
|
62
|
+
*/
|
|
63
|
+
|
|
64
|
+
in feature changeObserver : Occurrence[1];
|
|
65
|
+
in feature changeSignal : ChangeSignal[1];
|
|
66
|
+
|
|
67
|
+
composite step wait : IfThenPerformance {
|
|
68
|
+
doc
|
|
69
|
+
/*
|
|
70
|
+
* If the result of the changeSignal.signalCondition is false, then wait for
|
|
71
|
+
* it to become true.
|
|
72
|
+
*/
|
|
73
|
+
|
|
74
|
+
in bool redefines ifTest {
|
|
75
|
+
not changeSignal.signalCondition()
|
|
76
|
+
}
|
|
77
|
+
in step redefines thenClause : BooleanEvaluationResultToMonitorPerformance {
|
|
78
|
+
in bool onOccurrence = changeSignal.signalCondition;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
succession wait then transfer;
|
|
83
|
+
|
|
84
|
+
step transfer : TransferBefore[1]
|
|
85
|
+
redefines outgoingTransfersFromSelf
|
|
86
|
+
subsets changeObserver.incomingTransfers {
|
|
87
|
+
doc
|
|
88
|
+
/*
|
|
89
|
+
* Then send changeSignal to changeObserver.
|
|
90
|
+
*/
|
|
91
|
+
|
|
92
|
+
end feature source {
|
|
93
|
+
feature redefines sourceOutput = changeSignal;
|
|
94
|
+
}
|
|
95
|
+
end feature target;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
struct ChangeMonitor {
|
|
100
|
+
doc
|
|
101
|
+
/*
|
|
102
|
+
* A ChangeMonitor is a collection of ongoing ChangeSignal observations
|
|
103
|
+
* for various observer Occurrences. It provides convenient operations for
|
|
104
|
+
* starting and canceling the observations it manages.
|
|
105
|
+
*/
|
|
106
|
+
|
|
107
|
+
private thisMonitor : ChangeMonitor redefines self;
|
|
108
|
+
private composite feature observations[0..*] : ObserveChange;
|
|
109
|
+
|
|
110
|
+
private behavior AssignObservations specializes FeatureWritePerformance {
|
|
111
|
+
doc
|
|
112
|
+
/*
|
|
113
|
+
* Assign a replacement set of observations as those being managed by a
|
|
114
|
+
* given ChangeMonitor.
|
|
115
|
+
*/
|
|
116
|
+
|
|
117
|
+
in feature monitor : ChangeMonitor redefines onOccurrence {
|
|
118
|
+
feature redefines startingAt {
|
|
119
|
+
feature redefines accessedFeature, observations;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
inout feature redefines replacementValues[0..*] : ObserveChange;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
step startObservation {
|
|
126
|
+
doc
|
|
127
|
+
/*
|
|
128
|
+
* Start an observation of a given ChangeSignal for a given Occurrence.
|
|
129
|
+
*/
|
|
130
|
+
|
|
131
|
+
in observer : Occurrence[1];
|
|
132
|
+
in signal : ChangeSignal[1];
|
|
133
|
+
private composite step observation : ObserveChange {
|
|
134
|
+
in changeObserver = observer;
|
|
135
|
+
in changeSignal = signal;
|
|
136
|
+
}
|
|
137
|
+
private composite step addObservation : AssignObservations[1] {
|
|
138
|
+
in monitor = thisMonitor;
|
|
139
|
+
inout replacementValues = observations->including(observation);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
step cancelObservation {
|
|
144
|
+
doc
|
|
145
|
+
/*
|
|
146
|
+
* Cancel all observations of a given ChangeSignal for a given Occurrence.
|
|
147
|
+
*/
|
|
148
|
+
|
|
149
|
+
in observer : Occurrence[1];
|
|
150
|
+
in signal : ChangeSignal[1];
|
|
151
|
+
private feature observations[0..*] : ObserveChange =
|
|
152
|
+
observations->select{in observation : ObserveChange;
|
|
153
|
+
observation.changeObserver == observer and observation.changeSignal == signal
|
|
154
|
+
};
|
|
155
|
+
private composite step removeObservation : AssignObservations[1] {
|
|
156
|
+
in monitor = thisMonitor;
|
|
157
|
+
inout replacementValues = observations->excluding(observations);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
161
|
}
|