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.
Files changed (121) hide show
  1. package/LICENSE +27 -27
  2. package/README.md +200 -200
  3. package/out/main.js +596 -141
  4. package/out/main.js.map +4 -4
  5. package/package.json +57 -57
  6. package/resources/sysml.dimension-table.json +1 -1
  7. package/resources/sysml.library/Domain Libraries/Analysis/.meta.json +9 -9
  8. package/resources/sysml.library/Domain Libraries/Analysis/.project.json +26 -26
  9. package/resources/sysml.library/Domain Libraries/Analysis/AnalysisTooling.sysml +33 -33
  10. package/resources/sysml.library/Domain Libraries/Analysis/SampledFunctions.sysml +118 -118
  11. package/resources/sysml.library/Domain Libraries/Analysis/StateSpaceRepresentation.sysml +143 -143
  12. package/resources/sysml.library/Domain Libraries/Analysis/TradeStudies.sysml +170 -170
  13. package/resources/sysml.library/Domain Libraries/Cause and Effect/.meta.json +7 -7
  14. package/resources/sysml.library/Domain Libraries/Cause and Effect/.project.json +22 -22
  15. package/resources/sysml.library/Domain Libraries/Cause and Effect/CausationConnections.sysml +82 -82
  16. package/resources/sysml.library/Domain Libraries/Cause and Effect/CauseAndEffect.sysml +81 -81
  17. package/resources/sysml.library/Domain Libraries/Geometry/.meta.json +7 -7
  18. package/resources/sysml.library/Domain Libraries/Geometry/.project.json +26 -26
  19. package/resources/sysml.library/Domain Libraries/Geometry/ShapeItems.sysml +898 -898
  20. package/resources/sysml.library/Domain Libraries/Geometry/SpatialItems.sysml +167 -167
  21. package/resources/sysml.library/Domain Libraries/Metadata/.meta.json +9 -9
  22. package/resources/sysml.library/Domain Libraries/Metadata/.project.json +18 -18
  23. package/resources/sysml.library/Domain Libraries/Metadata/ImageMetadata.sysml +77 -77
  24. package/resources/sysml.library/Domain Libraries/Metadata/ModelingMetadata.sysml +142 -142
  25. package/resources/sysml.library/Domain Libraries/Metadata/ParametersOfInterestMetadata.sysml +38 -38
  26. package/resources/sysml.library/Domain Libraries/Metadata/RiskMetadata.sysml +99 -99
  27. package/resources/sysml.library/Domain Libraries/Quantities and Units/.meta.json +28 -28
  28. package/resources/sysml.library/Domain Libraries/Quantities and Units/.project.json +22 -22
  29. package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQ.sysml +42 -42
  30. package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQAcoustics.sysml +439 -439
  31. package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQAtomicNuclear.sysml +2726 -2726
  32. package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQBase.sysml +206 -206
  33. package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQCharacteristicNumbers.sysml +1991 -1991
  34. package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQChemistryMolecular.sysml +1353 -1353
  35. package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQCondensedMatter.sysml +1223 -1223
  36. package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQElectromagnetism.sysml +2333 -2333
  37. package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQInformation.sysml +958 -958
  38. package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQLight.sysml +1537 -1537
  39. package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQMechanics.sysml +1564 -1564
  40. package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQSpaceTime.sysml +1169 -1169
  41. package/resources/sysml.library/Domain Libraries/Quantities and Units/ISQThermodynamics.sysml +1256 -1256
  42. package/resources/sysml.library/Domain Libraries/Quantities and Units/MeasurementRefCalculations.sysml +30 -30
  43. package/resources/sysml.library/Domain Libraries/Quantities and Units/MeasurementReferences.sysml +526 -526
  44. package/resources/sysml.library/Domain Libraries/Quantities and Units/Quantities.sysml +107 -107
  45. package/resources/sysml.library/Domain Libraries/Quantities and Units/QuantityCalculations.sysml +70 -70
  46. package/resources/sysml.library/Domain Libraries/Quantities and Units/SI.sysml +378 -378
  47. package/resources/sysml.library/Domain Libraries/Quantities and Units/SIPrefixes.sysml +48 -48
  48. package/resources/sysml.library/Domain Libraries/Quantities and Units/TensorCalculations.sysml +49 -49
  49. package/resources/sysml.library/Domain Libraries/Quantities and Units/Time.sysml +274 -274
  50. package/resources/sysml.library/Domain Libraries/Quantities and Units/USCustomaryUnits.sysml +260 -260
  51. package/resources/sysml.library/Domain Libraries/Quantities and Units/VectorCalculations.sysml +62 -62
  52. package/resources/sysml.library/Domain Libraries/Requirement Derivation/.meta.json +7 -7
  53. package/resources/sysml.library/Domain Libraries/Requirement Derivation/.project.json +18 -18
  54. package/resources/sysml.library/Domain Libraries/Requirement Derivation/DerivationConnections.sysml +62 -62
  55. package/resources/sysml.library/Domain Libraries/Requirement Derivation/RequirementDerivation.sysml +38 -38
  56. package/resources/sysml.library/Kernel Libraries/Kernel Data Type Library/.meta.json +8 -8
  57. package/resources/sysml.library/Kernel Libraries/Kernel Data Type Library/.project.json +10 -10
  58. package/resources/sysml.library/Kernel Libraries/Kernel Data Type Library/Collections.kerml +176 -176
  59. package/resources/sysml.library/Kernel Libraries/Kernel Data Type Library/ScalarValues.kerml +23 -23
  60. package/resources/sysml.library/Kernel Libraries/Kernel Data Type Library/VectorValues.kerml +63 -63
  61. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/.meta.json +22 -22
  62. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/.project.json +14 -14
  63. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/BaseFunctions.kerml +79 -79
  64. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/BooleanFunctions.kerml +22 -22
  65. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/CollectionFunctions.kerml +68 -68
  66. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/ComplexFunctions.kerml +47 -47
  67. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/ControlFunctions.kerml +116 -116
  68. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/DataFunctions.kerml +42 -42
  69. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/IntegerFunctions.kerml +43 -43
  70. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/NaturalFunctions.kerml +27 -27
  71. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/NumericalFunctions.kerml +42 -42
  72. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/OccurrenceFunctions.kerml +153 -153
  73. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/RationalFunctions.kerml +49 -49
  74. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/RealFunctions.kerml +56 -56
  75. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/ScalarFunctions.kerml +32 -32
  76. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/SequenceFunctions.kerml +110 -110
  77. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/StringFunctions.kerml +25 -25
  78. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/TrigFunctions.kerml +34 -34
  79. package/resources/sysml.library/Kernel Libraries/Kernel Function Library/VectorFunctions.kerml +272 -272
  80. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/.meta.json +21 -21
  81. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/.project.json +14 -14
  82. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Base.kerml +94 -94
  83. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Clocks.kerml +155 -155
  84. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/ControlPerformances.kerml +134 -134
  85. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/FeatureReferencingPerformances.kerml +189 -189
  86. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/KerML.kerml +483 -483
  87. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Links.kerml +66 -66
  88. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Metaobjects.kerml +57 -57
  89. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Objects.kerml +212 -212
  90. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Observation.kerml +160 -160
  91. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Occurrences.kerml +992 -992
  92. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Performances.kerml +292 -292
  93. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/SpatialFrames.kerml +196 -196
  94. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/StatePerformances.kerml +144 -144
  95. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Transfers.kerml +280 -280
  96. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/TransitionPerformances.kerml +65 -65
  97. package/resources/sysml.library/Kernel Libraries/Kernel Semantic Library/Triggers.kerml +187 -187
  98. package/resources/sysml.library/LICENSE +276 -276
  99. package/resources/sysml.library/NOTICE.md +20 -20
  100. package/resources/sysml.library/Systems Library/Actions.sysml +556 -556
  101. package/resources/sysml.library/Systems Library/Allocations.sysml +28 -28
  102. package/resources/sysml.library/Systems Library/AnalysisCases.sysml +37 -37
  103. package/resources/sysml.library/Systems Library/Attributes.sysml +24 -24
  104. package/resources/sysml.library/Systems Library/Calculations.sysml +36 -36
  105. package/resources/sysml.library/Systems Library/Cases.sysml +70 -70
  106. package/resources/sysml.library/Systems Library/Connections.sysml +59 -59
  107. package/resources/sysml.library/Systems Library/Constraints.sysml +43 -43
  108. package/resources/sysml.library/Systems Library/Flows.sysml +125 -125
  109. package/resources/sysml.library/Systems Library/Interfaces.sysml +88 -88
  110. package/resources/sysml.library/Systems Library/Items.sysml +152 -152
  111. package/resources/sysml.library/Systems Library/Metadata.sysml +31 -31
  112. package/resources/sysml.library/Systems Library/Parts.sysml +80 -80
  113. package/resources/sysml.library/Systems Library/Ports.sysml +53 -53
  114. package/resources/sysml.library/Systems Library/Requirements.sysml +193 -193
  115. package/resources/sysml.library/Systems Library/StandardViewDefinitions.sysml +123 -123
  116. package/resources/sysml.library/Systems Library/States.sysml +102 -102
  117. package/resources/sysml.library/Systems Library/SysML.sysml +539 -539
  118. package/resources/sysml.library/Systems Library/UseCases.sysml +56 -56
  119. package/resources/sysml.library/Systems Library/VerificationCases.sysml +102 -102
  120. package/resources/sysml.library/Systems Library/Views.sysml +163 -163
  121. package/resources/sysml.library.index.json +1 -1
@@ -1,281 +1,281 @@
1
- standard library package Transfers {
2
- doc
3
- /*
4
- * This package defines the transfer interactions used to type flows.
5
- */
6
-
7
- private import Base::Anything;
8
- private import Occurrences::*;
9
- private import Links::*;
10
- private import Objects::BinaryLinkObject;
11
- private import Performances::Performance;
12
- private import Performances::performances;
13
- private import ScalarValues::Boolean;
14
- private import ScalarValues::Natural;
15
- private import SequenceFunctions::*;
16
-
17
- interaction Transfer specializes Performance, BinaryLink {
18
- doc
19
- /*
20
- * A Transfer represents the transfer of a payload from the source of the interaction
21
- * to the target of the interaction.
22
- */
23
-
24
- end feature source: Occurrence redefines BinaryLink::source {
25
- doc
26
- /*
27
- * The entity whose output is the source of the payload to be transferred.
28
- */
29
-
30
- feature sourceOutput: Anything[0..*];
31
- }
32
-
33
- end feature target: Occurrence redefines BinaryLink::target {
34
- doc
35
- /*
36
- * The entity whose input is the target of the payload to be transferred.
37
- */
38
-
39
- feature targetInput: Anything[0..*];
40
- }
41
-
42
- feature isInstant: Boolean[1] {
43
- doc
44
- /*
45
- * If isInstant is true, then the transfer is instantaneous.
46
- */
47
- }
48
-
49
- feature payload: Anything[1..*] {
50
- doc
51
- /*
52
- * The things that are to be transferred.
53
- */
54
- }
55
-
56
- feature payloadNum: Natural [1] = size(payload);
57
-
58
- private instantNum: Natural[1] = if isInstant? 1 else 0;
59
- private binding instant[instantNum] of [0..1] startShot = [0..1] endShot {
60
- doc
61
- /*
62
- * If isInstant is true, then the start and end of the transfer happen at the same time.
63
- */
64
- }
65
- }
66
-
67
- interaction MessageTransfer specializes Transfer {
68
- doc
69
- /*
70
- * A MessageTransfer is a Transfer that does not specify where the payload is picked
71
- * up and dropped off (see FlowTransfer). They are sent by SendPerformances and
72
- * accepted by AcceptPerformances.
73
- */
74
- }
75
-
76
- interaction FlowTransfer specializes Transfer disjoint from MessageTransfer {
77
- doc
78
- /*
79
- * A FlowTransfer is a Transfer identifying an output feature of the source from which
80
- * to pick up a payload and an input feature of the target to which to drop it off. They can
81
- * start when the payload is available at the source and move or copy it to the target.
82
- */
83
-
84
- feature isMove: Boolean[1] default true {
85
- doc
86
- /*
87
- * If isMove is true, then the entire payload leaves the source at the start
88
- * of the transfer.
89
- */
90
- }
91
-
92
- feature isPush: Boolean[1] default true {
93
- doc
94
- /*
95
- * If isPush is true, then the transfer begins when the payload is available
96
- * at the source.
97
- */
98
- }
99
-
100
- connector sourceOutputLink: BinaryLinkObject[payloadNum] {
101
- doc
102
- /*
103
- * The output of the payloads from the sourceOutput.
104
- */
105
-
106
- end [1] feature transferSource references source;
107
- end [payloadNum] feature transferPayload references payload subsets transferSource.sourceOutput;
108
- }
109
-
110
- connector targetInputLink: BinaryLinkObject[payloadNum] {
111
- doc
112
- /*
113
- * The input of the payload to the targetInput.
114
- */
115
-
116
- end [1] feature transferTarget references target;
117
- end [payloadNum] feature transferPayload references payload subsets transferTarget.targetInput;
118
- }
119
-
120
- private connector sending: HappensDuring[payloadNum] from [1] startShot to [payloadNum] sourceOutputLink {
121
- doc
122
- /*
123
- * The start of the transfer happens during the output of each of the payloads from the
124
- * source.
125
- */
126
- }
127
-
128
- private connector moving: HappensWhile[0..*] from [0..*] sourceOutputLink.endShot to [0..1] startShot {
129
- doc
130
- /*
131
- * If isMove is true, then all payloads leave the source at the start
132
- * of the transfer.
133
- */
134
- }
135
- private inv { isMove implies size(moving) == size(sourceOutputLink) }
136
-
137
- private connector pushing: HappensWhile[0..*] from [0..*] sourceOutputLink.startShot to [0..1] startShot {
138
- doc
139
- /*
140
- * If isPush is true, then the transfer begins when the payloads are available
141
- * at the source.
142
- */
143
- }
144
- private inv { isPush implies size(pushing) == size(sourceOutputLink) }
145
-
146
- private connector delivering: HappensWhile[payloadNum] from [payloadNum] targetInputLink.startShot to [1] endShot {
147
- doc
148
- /*
149
- * The input of each of the payloads to the target starts at the end of the transfer.
150
- */
151
- }
152
- }
153
-
154
- interaction TransferBefore specializes Transfer, HappensBefore intersects Transfer, HappensBefore {
155
- doc
156
- /*
157
- * TransferBefore is a specialization of Transfer in which the source happens before
158
- * the transfer, which happens before the target.
159
- */
160
-
161
- end feature source: Occurrence redefines Transfer::source, HappensBefore::earlierOccurrence;
162
- end feature target: Occurrence redefines Transfer::target, HappensBefore::laterOccurrence;
163
-
164
- feature self: TransferBefore redefines Performance::self;
165
-
166
- private succession source then self;
167
- private succession self then target;
168
- }
169
-
170
- interaction FlowTransferBefore specializes TransferBefore, FlowTransfer intersects FlowTransfer, TransferBefore {
171
- doc
172
- /*
173
- * FlowTransferBefore is a FlowTransfer that is also a TransferBefore.
174
- */
175
-
176
- end feature source: Occurrence redefines Transfer::source, TransferBefore::source;
177
- end feature target: Occurrence redefines Transfer::target, TransferBefore::target;
178
- }
179
-
180
- abstract step transfers: Transfer[0..*] nonunique subsets performances, binaryLinks {
181
- doc
182
- /*
183
- * transfers is a specialization of performances and binaryLinks restricted to type
184
- * Transfer.
185
- */
186
-
187
- end feature source: Occurrence redefines Transfer::source, binaryLinks::source;
188
- end feature target: Occurrence redefines Transfer::target, binaryLinks::target;
189
- }
190
-
191
- abstract step messageTransfers: MessageTransfer[0..*] nonunique subsets transfers {
192
- doc
193
- /*
194
- * messageTransfers is a specialization of transfers restricted to type MessageTransfers.
195
- */
196
-
197
- end feature source: Occurrence redefines MessageTransfer::source, transfers::source;
198
- end feature target: Occurrence redefines MessageTransfer::target, transfers::target;
199
- }
200
-
201
- abstract flow flowTransfers: FlowTransfer[0..*] nonunique subsets transfers {
202
- doc
203
- /*
204
- * flowTransfers is a specialization of transfers restricted to type FlowTransfers.
205
- * It is the default subsetting for non-succession flows.
206
- */
207
-
208
- end feature source: Occurrence redefines FlowTransfer::source, transfers::source;
209
- end feature target: Occurrence redefines FlowTransfer::target, transfers::target;
210
- }
211
-
212
- abstract flow transfersBefore: TransferBefore[0..*] nonunique subsets transfers, happensBeforeLinks
213
- intersects transfers, happensBeforeLinks {
214
- doc
215
- /*
216
- * transfersBefore is a specialization of transfers and happensBeforeLinks restricted to
217
- * type TransferBefore.
218
- */
219
-
220
- end feature source: Occurrence redefines TransferBefore::source, transfers::source, happensBeforeLinks::earlierOccurrence;
221
- end feature target: Occurrence redefines TransferBefore::target, transfers::target, happensBeforeLinks::laterOccurrence;
222
- }
223
-
224
- abstract flow flowTransfersBefore: FlowTransferBefore[0..*] nonunique subsets flowTransfers, transfersBefore
225
- intersects flowTransfers, transfersBefore {
226
- doc
227
- /*
228
- * flowTransfersBefore is a specialization of flowTransfers and transfersBefore that is restricted
229
- * to type FlowTransferBefore. IT is the default subsetting for succession flows.
230
- */
231
-
232
- end feature source: Occurrence redefines FlowTransferBefore::source, flowTransfers::source, transfersBefore::source;
233
- end feature target: Occurrence redefines FlowTransferBefore::target, flowTransfers::target, transfersBefore::target;
234
- }
235
-
236
- behavior SendPerformance specializes Performance {
237
- doc
238
- /*
239
- * SendPerformances are Performance that require an outgoingTransferFromSelf
240
- * from a designated sender Occurrence carrying a given payload, optionally to a designated receiver.
241
- */
242
-
243
- in feature payload [0..*];
244
- in feature sender: Occurrence[1] default this;
245
- in feature receiver: Occurrence[0..1];
246
- feature sentTransfer: MessageTransfer [1] subsets sender.outgoingTransfersFromSelf {
247
- feature redefines payload = SendPerformance::payload;
248
- }
249
- binding [0..1] receiver.incomingTransfersToSelf = [1] sentTransfer;
250
-
251
- succession self then sentTransfer;
252
- }
253
-
254
- behavior AcceptPerformance specializes Performance {
255
- doc
256
- /*
257
- * AcceptPerformance is a performance that requires an incomingTransferToSelf
258
- * of a desigated receiver Occurrence, providing its payload as output.
259
- */
260
- inout feature payload[0..*];
261
- in feature receiver: Occurrence[1] default this;
262
- feature acceptedTransfer: MessageTransfer[1] subsets receiver.incomingTransfersToSelf;
263
- succession acceptedTransfer then self.endShot;
264
-
265
- binding payload = acceptedTransfer.payload;
266
- }
267
-
268
- abstract step sendPerformances: SendPerformance[0..*] nonunique subsets performances {
269
- doc
270
- /*
271
- * sendPerformances is a specialization of performances for SendPerformances.
272
- */
273
- }
274
-
275
- abstract step acceptPerformances: AcceptPerformance[0..*] nonunique subsets performances {
276
- doc
277
- /*
278
- * acceptPerformances is a specialization of performances for AcceptPerformances.
279
- */
280
- }
1
+ standard library package Transfers {
2
+ doc
3
+ /*
4
+ * This package defines the transfer interactions used to type flows.
5
+ */
6
+
7
+ private import Base::Anything;
8
+ private import Occurrences::*;
9
+ private import Links::*;
10
+ private import Objects::BinaryLinkObject;
11
+ private import Performances::Performance;
12
+ private import Performances::performances;
13
+ private import ScalarValues::Boolean;
14
+ private import ScalarValues::Natural;
15
+ private import SequenceFunctions::*;
16
+
17
+ interaction Transfer specializes Performance, BinaryLink {
18
+ doc
19
+ /*
20
+ * A Transfer represents the transfer of a payload from the source of the interaction
21
+ * to the target of the interaction.
22
+ */
23
+
24
+ end feature source: Occurrence redefines BinaryLink::source {
25
+ doc
26
+ /*
27
+ * The entity whose output is the source of the payload to be transferred.
28
+ */
29
+
30
+ feature sourceOutput: Anything[0..*];
31
+ }
32
+
33
+ end feature target: Occurrence redefines BinaryLink::target {
34
+ doc
35
+ /*
36
+ * The entity whose input is the target of the payload to be transferred.
37
+ */
38
+
39
+ feature targetInput: Anything[0..*];
40
+ }
41
+
42
+ feature isInstant: Boolean[1] {
43
+ doc
44
+ /*
45
+ * If isInstant is true, then the transfer is instantaneous.
46
+ */
47
+ }
48
+
49
+ feature payload: Anything[1..*] {
50
+ doc
51
+ /*
52
+ * The things that are to be transferred.
53
+ */
54
+ }
55
+
56
+ feature payloadNum: Natural [1] = size(payload);
57
+
58
+ private instantNum: Natural[1] = if isInstant? 1 else 0;
59
+ private binding instant[instantNum] of [0..1] startShot = [0..1] endShot {
60
+ doc
61
+ /*
62
+ * If isInstant is true, then the start and end of the transfer happen at the same time.
63
+ */
64
+ }
65
+ }
66
+
67
+ interaction MessageTransfer specializes Transfer {
68
+ doc
69
+ /*
70
+ * A MessageTransfer is a Transfer that does not specify where the payload is picked
71
+ * up and dropped off (see FlowTransfer). They are sent by SendPerformances and
72
+ * accepted by AcceptPerformances.
73
+ */
74
+ }
75
+
76
+ interaction FlowTransfer specializes Transfer disjoint from MessageTransfer {
77
+ doc
78
+ /*
79
+ * A FlowTransfer is a Transfer identifying an output feature of the source from which
80
+ * to pick up a payload and an input feature of the target to which to drop it off. They can
81
+ * start when the payload is available at the source and move or copy it to the target.
82
+ */
83
+
84
+ feature isMove: Boolean[1] default true {
85
+ doc
86
+ /*
87
+ * If isMove is true, then the entire payload leaves the source at the start
88
+ * of the transfer.
89
+ */
90
+ }
91
+
92
+ feature isPush: Boolean[1] default true {
93
+ doc
94
+ /*
95
+ * If isPush is true, then the transfer begins when the payload is available
96
+ * at the source.
97
+ */
98
+ }
99
+
100
+ connector sourceOutputLink: BinaryLinkObject[payloadNum] {
101
+ doc
102
+ /*
103
+ * The output of the payloads from the sourceOutput.
104
+ */
105
+
106
+ end [1] feature transferSource references source;
107
+ end [payloadNum] feature transferPayload references payload subsets transferSource.sourceOutput;
108
+ }
109
+
110
+ connector targetInputLink: BinaryLinkObject[payloadNum] {
111
+ doc
112
+ /*
113
+ * The input of the payload to the targetInput.
114
+ */
115
+
116
+ end [1] feature transferTarget references target;
117
+ end [payloadNum] feature transferPayload references payload subsets transferTarget.targetInput;
118
+ }
119
+
120
+ private connector sending: HappensDuring[payloadNum] from [1] startShot to [payloadNum] sourceOutputLink {
121
+ doc
122
+ /*
123
+ * The start of the transfer happens during the output of each of the payloads from the
124
+ * source.
125
+ */
126
+ }
127
+
128
+ private connector moving: HappensWhile[0..*] from [0..*] sourceOutputLink.endShot to [0..1] startShot {
129
+ doc
130
+ /*
131
+ * If isMove is true, then all payloads leave the source at the start
132
+ * of the transfer.
133
+ */
134
+ }
135
+ private inv { isMove implies size(moving) == size(sourceOutputLink) }
136
+
137
+ private connector pushing: HappensWhile[0..*] from [0..*] sourceOutputLink.startShot to [0..1] startShot {
138
+ doc
139
+ /*
140
+ * If isPush is true, then the transfer begins when the payloads are available
141
+ * at the source.
142
+ */
143
+ }
144
+ private inv { isPush implies size(pushing) == size(sourceOutputLink) }
145
+
146
+ private connector delivering: HappensWhile[payloadNum] from [payloadNum] targetInputLink.startShot to [1] endShot {
147
+ doc
148
+ /*
149
+ * The input of each of the payloads to the target starts at the end of the transfer.
150
+ */
151
+ }
152
+ }
153
+
154
+ interaction TransferBefore specializes Transfer, HappensBefore intersects Transfer, HappensBefore {
155
+ doc
156
+ /*
157
+ * TransferBefore is a specialization of Transfer in which the source happens before
158
+ * the transfer, which happens before the target.
159
+ */
160
+
161
+ end feature source: Occurrence redefines Transfer::source, HappensBefore::earlierOccurrence;
162
+ end feature target: Occurrence redefines Transfer::target, HappensBefore::laterOccurrence;
163
+
164
+ feature self: TransferBefore redefines Performance::self;
165
+
166
+ private succession source then self;
167
+ private succession self then target;
168
+ }
169
+
170
+ interaction FlowTransferBefore specializes TransferBefore, FlowTransfer intersects FlowTransfer, TransferBefore {
171
+ doc
172
+ /*
173
+ * FlowTransferBefore is a FlowTransfer that is also a TransferBefore.
174
+ */
175
+
176
+ end feature source: Occurrence redefines Transfer::source, TransferBefore::source;
177
+ end feature target: Occurrence redefines Transfer::target, TransferBefore::target;
178
+ }
179
+
180
+ abstract step transfers: Transfer[0..*] nonunique subsets performances, binaryLinks {
181
+ doc
182
+ /*
183
+ * transfers is a specialization of performances and binaryLinks restricted to type
184
+ * Transfer.
185
+ */
186
+
187
+ end feature source: Occurrence redefines Transfer::source, binaryLinks::source;
188
+ end feature target: Occurrence redefines Transfer::target, binaryLinks::target;
189
+ }
190
+
191
+ abstract step messageTransfers: MessageTransfer[0..*] nonunique subsets transfers {
192
+ doc
193
+ /*
194
+ * messageTransfers is a specialization of transfers restricted to type MessageTransfers.
195
+ */
196
+
197
+ end feature source: Occurrence redefines MessageTransfer::source, transfers::source;
198
+ end feature target: Occurrence redefines MessageTransfer::target, transfers::target;
199
+ }
200
+
201
+ abstract flow flowTransfers: FlowTransfer[0..*] nonunique subsets transfers {
202
+ doc
203
+ /*
204
+ * flowTransfers is a specialization of transfers restricted to type FlowTransfers.
205
+ * It is the default subsetting for non-succession flows.
206
+ */
207
+
208
+ end feature source: Occurrence redefines FlowTransfer::source, transfers::source;
209
+ end feature target: Occurrence redefines FlowTransfer::target, transfers::target;
210
+ }
211
+
212
+ abstract flow transfersBefore: TransferBefore[0..*] nonunique subsets transfers, happensBeforeLinks
213
+ intersects transfers, happensBeforeLinks {
214
+ doc
215
+ /*
216
+ * transfersBefore is a specialization of transfers and happensBeforeLinks restricted to
217
+ * type TransferBefore.
218
+ */
219
+
220
+ end feature source: Occurrence redefines TransferBefore::source, transfers::source, happensBeforeLinks::earlierOccurrence;
221
+ end feature target: Occurrence redefines TransferBefore::target, transfers::target, happensBeforeLinks::laterOccurrence;
222
+ }
223
+
224
+ abstract flow flowTransfersBefore: FlowTransferBefore[0..*] nonunique subsets flowTransfers, transfersBefore
225
+ intersects flowTransfers, transfersBefore {
226
+ doc
227
+ /*
228
+ * flowTransfersBefore is a specialization of flowTransfers and transfersBefore that is restricted
229
+ * to type FlowTransferBefore. IT is the default subsetting for succession flows.
230
+ */
231
+
232
+ end feature source: Occurrence redefines FlowTransferBefore::source, flowTransfers::source, transfersBefore::source;
233
+ end feature target: Occurrence redefines FlowTransferBefore::target, flowTransfers::target, transfersBefore::target;
234
+ }
235
+
236
+ behavior SendPerformance specializes Performance {
237
+ doc
238
+ /*
239
+ * SendPerformances are Performance that require an outgoingTransferFromSelf
240
+ * from a designated sender Occurrence carrying a given payload, optionally to a designated receiver.
241
+ */
242
+
243
+ in feature payload [0..*];
244
+ in feature sender: Occurrence[1] default this;
245
+ in feature receiver: Occurrence[0..1];
246
+ feature sentTransfer: MessageTransfer [1] subsets sender.outgoingTransfersFromSelf {
247
+ feature redefines payload = SendPerformance::payload;
248
+ }
249
+ binding [0..1] receiver.incomingTransfersToSelf = [1] sentTransfer;
250
+
251
+ succession self then sentTransfer;
252
+ }
253
+
254
+ behavior AcceptPerformance specializes Performance {
255
+ doc
256
+ /*
257
+ * AcceptPerformance is a performance that requires an incomingTransferToSelf
258
+ * of a desigated receiver Occurrence, providing its payload as output.
259
+ */
260
+ inout feature payload[0..*];
261
+ in feature receiver: Occurrence[1] default this;
262
+ feature acceptedTransfer: MessageTransfer[1] subsets receiver.incomingTransfersToSelf;
263
+ succession acceptedTransfer then self.endShot;
264
+
265
+ binding payload = acceptedTransfer.payload;
266
+ }
267
+
268
+ abstract step sendPerformances: SendPerformance[0..*] nonunique subsets performances {
269
+ doc
270
+ /*
271
+ * sendPerformances is a specialization of performances for SendPerformances.
272
+ */
273
+ }
274
+
275
+ abstract step acceptPerformances: AcceptPerformance[0..*] nonunique subsets performances {
276
+ doc
277
+ /*
278
+ * acceptPerformances is a specialization of performances for AcceptPerformances.
279
+ */
280
+ }
281
281
  }