-
Notifications
You must be signed in to change notification settings - Fork 18
/
Copy pathEIP_Elements.puml
507 lines (417 loc) · 23.8 KB
/
EIP_Elements.puml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
/' General Styling '/
!include "sprites/filter.puml"
skinparam defaultTextAlignment center
!procedure HIDE_STEREOTYPES()
Hide <<message>> stereotype
Hide <<command message>> stereotype
Hide <<document message>> stereotype
Hide <<event message>> stereotype
Hide <<request-reply>> stereotype
Hide <<return address>> stereotype
Hide <<correlation identifier>> stereotype
Hide <<message sequence>> stereotype
Hide <<message expiration>> stereotype
Hide <<filter>> stereotype
Hide <<message router>> stereotype
Hide <<content-based router>> stereotype
Hide <<message filter>> stereotype
Hide <<dynamic message router>> stereotype
Hide <<recipient list>> stereotype
Hide <<splitter>> stereotype
Hide <<aggregator>> stereotype
Hide <<aggregator>> stereotype
Hide <<resequencer>> stereotype
Hide <<composed msg processor>> stereotype
Hide <<routing slip>> stereotype
Hide <<process manager>> stereotype
Hide <<message broker>> stereotype
Hide <<message broker>> stereotype
Hide <<message translator>> stereotype
Hide <<wrapper>> stereotype
Hide <<unwrapper>> stereotype
Hide <<data enricher>> stereotype
Hide <<content filter>> stereotype
Hide <<normalizer>> stereotype
Hide <<message endpoint>> stereotype
Hide <<messaging gateway>> stereotype
Hide <<messaging mapper>> stereotype
Hide <<transactional producer>> stereotype
Hide <<transactional consumer>> stereotype
Hide <<polling consumer>> stereotype
Hide <<event-driven consumer>> stereotype
Hide <<message dispatcher>> stereotype
Hide <<selective consumer>> stereotype
Hide <<durable subscriber>> stereotype
Hide <<non-durable subscriber>> stereotype
Hide <<service activator>> stereotype
Hide <<message channel>> stereotype
Hide <<point-to-point channel>> stereotype
Hide <<publish-subscribe channel>> stereotype
Hide <<datatype channel>> stereotype
Hide <<invalid message channel>> stereotype
Hide <<dead letter channel>> stereotype
Hide <<channel adapter left>> stereotype
Hide <<channel adapter right>> stereotype
Hide <<messaging bridge>> stereotype
Hide <<message bus>> stereotype
Hide <<control bus>> stereotype
Hide <<detour>> stereotype
Hide <<wire tap>> stereotype
Hide <<message store>> stereotype
Hide <<smart proxy>> stereotype
Hide <<test message>> stereotype
Hide <<channel purger>> stereotype
!endprocedure
!define LAYOUT_LEFT_RIGHT() left to right direction
/' ########################################################
################## Message Construct ##################
'/ ########################################################
/' EIP Pattern: Message
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/Message.html
'/
!define Message(_alias) rectangle "<$message>" as _alias <<message>>
!define Message(_alias, _label) rectangle "<$message>\r _label" as _alias <<message>>
/' EIP Pattern: Command Message
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/CommandMessage.html
'/
!define CommandMessage(_alias) rectangle "<$command_message>" as _alias <<command message>>
!define CommandMessage(_alias, _label) rectangle "<$command_message>\r _label" as _alias <<command message>>
/' EIP Pattern: Document Message
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/DocumentMessage.html
'/
!define DocumentMessage(_alias) rectangle "<$document_message>" as _alias <<document message>>
!define DocumentMessage(_alias, _label) rectangle "<$document_message>\r _label" as _alias <<document message>>
/' EIP Pattern: Event Message
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/EventMessage.html
'/
!define EventMessage(_alias) rectangle "<$event_message>" as _alias <<event message>>
!define EventMessage(_alias, _label) rectangle "<$event_message>\r _label" as _alias <<event message>>
/' EIP Pattern: Request-Reply
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/RequestReply.html
'/
!define RequestReply(_alias) rectangle "<$request_reply>" as _alias <<request-reply>>
!define RequestReply(_alias, _label) rectangle "<$request_reply>\r _label" as _alias <<request-reply>>
/' EIP Pattern: Return Address
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/ReturnAddress.html
'/
!define ReturnAddress(_alias) rectangle "<$return_address>" as _alias <<return address>>
!define ReturnAddress(_alias, _label) rectangle "<$return_address>\r _label" as _alias <<return address>>
/' EIP Pattern: Correlation Identifier
Link https://www.enterpriseintegrationpatterns.com/patterns/messaging/CorrelationIdentifier.html
'/
!define CorrelationIdentifier(_alias) rectangle "<$correlation_identifier>" as _alias <<correlation identifier>>
!define CorrelationIdentifier(_alias, _label) rectangle "<$correlation_identifier>\r _label" as _alias <<correlation identifier>>
/' EIP Pattern: Message Sequence
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/MessageSequence.html
'/
!define MessageSequence(_alias) rectangle "<$message_sequence>" as _alias <<message sequence>>
!define MessageSequence(_alias, _label) rectangle "<$message_sequence>\r _label" as _alias <<message sequence>>
/' EIP Pattern: Message Expiration
Link https://www.enterpriseintegrationpatterns.com/patterns/messaging/MessageExpiration.html
'/
!define MessageExpiration(_alias) rectangle "<$message_expiration>" as _alias <<message expiration>>
!define MessageExpiration(_alias, _label) rectangle "<$message_expiration>\r _label" as _alias <<message expiration>>
/' EIP Pattern: Format Indicator
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/FormatIndicator.html
'/
/' ########################################################
################### Message Routing ###################
'/ ########################################################
/' EIP Pattern: Pipes-and-Filter
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/PipesAndFilters.html
'/
!define Filter(_alias) rectangle " " as _alias <<filter>>
!define Filter(_alias, _label) rectangle "_label" as _alias <<filter>>
/' EIP Pattern: Message Router
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/MessageRouter.html
'/
!define MessageRouter(_alias) rectangle "<$message_router>" as _alias <<message router>>
!define MessageRouter(_alias, _label) rectangle "<$message_router>\r _label" as _alias <<message router>>
/' EIP Pattern: Contend-based Router
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/ContentBasedRouter.html
TODO: This should be done in a function, with more flexibility
'/
!define ContentBasedRouter(_alias) rectangle "<$content_based_router>" as _alias <<content-based router>>
!define ContentBasedRouter(_alias, _label) rectangle "<$content_based_router>\r _label" as _alias <<content-based router>>
/' EIP Pattern: Message Filter
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/Filter.html
'/
!define MessageFilter(_alias) rectangle "<$message_filter>" as _alias <<message filter>>
!define MessageFilter(_alias, _label) rectangle "<$message_filter>\r _label" as _alias <<message filter>>
/' EIP Pattern: Dynamic Router
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/DynamicRouter.html
'/
' Does require a dynamic rulebase to be linked autoamtically
!definelong DynamicRouter(_alias, _rulebase)
rectangle "<$message_router>\r" as _alias <<dynamic message router>>
_alias -- _rulebase
!enddefinelong
' Does require a dynamic rulebase to be linked autoamtically
!definelong DynamicRouter(_alias, _label, _rulebase)
rectangle "<$message_router>\r _label" as _alias <<dynamic message router>>
_alias -- _rulebase
!enddefinelong
/' EIP Pattern: Recipient List
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/RecipientList.html
'/
!define RecipientList(_alias) rectangle "<$recipient_list>" as _alias <<recipient list>>
!define RecipientList(_alias, _label) rectangle "<$recipient_list>\r _label" as _alias <<recipient list>>
/' EIP Pattern: Splitter
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/Sequencer.html
'/
!define Splitter(_alias) rectangle "<$splitter>" as _alias <<splitter>>
!define Splitter(_alias, _label) rectangle "<$splitter>\r _label" as _alias <<splitter>>
/' EIP Pattern: Aggregator
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/Aggregator.html
'/
!define Aggregator(_alias) rectangle "<$aggregator>" as _alias <<aggregator>>
!define Aggregator(_alias, _label) rectangle "<$aggregator>\r _label" as _alias <<aggregator>>
/' EIP Pattern: Resequencer
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/Resequencer.html
'/
!define Resequencer(_alias) rectangle "<$resequencer>" as _alias <<resequencer>>
!define Resequencer(_alias, _label) rectangle "<$resequencer>\r _label" as _alias <<resequencer>>
/' EIP Pattern: Composed Msg. Processor
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/Resequencer.html
'/
!define ComposedMessageProcessor(_alias) rectangle "<$composed_message_processor>" as _alias <<composed msg processor>>
!define ComposedMessageProcessor(_alias, _label) rectangle "<$composed_message_processor>\r _label" as _alias <<composed msg processor>>
/' EIP Pattern: Scatter-Gather
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/BroadcastAggregate.html
Info: No icon defined yet
'/
/' EIP Pattern: Routing Slip
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/RoutingTable.html
'/
!define RoutingSlip(_alias) rectangle "<$routing_slip>" as _alias <<routing slip>>
!define RoutingSlip(_alias, _label) rectangle "<$routing_slip>\r _label" as _alias <<routing slip>>
/' EIP Pattern: Process Manager
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/ProcessManager.html
'/
!define ProcessManager(_alias) rectangle "<$process_manager>" as _alias <<process manager>>
!define ProcessManager(_alias, _label) rectangle "<$process_manager>\r _label" as _alias <<process manager>>
/' EIP Pattern: Message Broker
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/MessageBroker.html
'/
!define MessageBroker(_alias) rectangle " " as _alias <<message broker>>
!define MessageBroker(_alias, _label) rectangle "_label" as _alias <<message broker>>
/' ########################################################
################ Message Transformation ###############
'/ ########################################################
/' EIP Pattern: Message Translator
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/MessageTranslator.html
'/
!define MessageTranslator(_alias) rectangle "<$message_translator>" as _alias <<message translator>>
!define MessageTranslator(_alias, _label) rectangle "<$message_translator>\r _label" as _alias <<message translator>>
/' EIP Pattern: Envelope Wrapper
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/EnvelopeWrapper.html
'/
!define Wrapper(_alias) rectangle "<$wrapper>" as _alias <<wrapper>>
!define Wrapper(_alias, _label) rectangle "<$wrapper>\r _label" as _alias <<wrapper>>
!define Unwrapper(_alias) rectangle "<$unwrapper>" as _alias <<unwrapper>>
!define Unwrapper(_alias, _label) rectangle "<$unwrapper>\r _label" as _alias <<unwrapper>>
/' EIP Pattern: Data Enricher
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/DataEnricher.html
'/
' Does require a external data source to be linked autoamtically
!definelong DataEnricher(_alias, _datasource)
rectangle "<$data_enricher>\r" as _alias <<data enricher>>
_alias -- _datasource
!enddefinelong
' Does require a external data source to be linked autoamtically
!definelong DataEnricher(_alias, _label, _datasource)
rectangle "<$data_enricher>\r _label" as _alias <<data enricher>>
_alias -- _datasource
!enddefinelong
/' EIP Pattern: Content Filter
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/ContentFilter.html
'/
!define ContentFilter(_alias) rectangle "<$content_filter>" as _alias <<content filter>>
!define ContentFilter(_alias, _label) rectangle "<$content_filter>\r _label" as _alias <<content filter>>
/' EIP Pattern: Claim Check
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/ClaimCheck.html
See below. Can be applied to other patterns,
'/
/' EIP Pattern: Normalizer
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/Normalizer.html
'/
!define Normalizer(_alias) rectangle "<$normalizer>" as _alias <<normalizer>>
!define Normalizer(_alias, _label) rectangle "<$normalizer>\r _label" as _alias <<normalizer>>
/' EIP Pattern: Canonical Data Model
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/CanonicalDataModel.html
Info: No info defined yet
'/
/' ########################################################
################## Messaging Endpoints ##################
'/ ########################################################
/' EIP Pattern: Message Endpoint
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/MessageEndpoint.html
'/
!define MessageEndpoint(_alias) rectangle "<$message_endpoint>" as _alias <<message endpoint>>
!define MessageEndpoint(_alias, _label) rectangle "<$message_endpoint>\r _label" as _alias <<message endpoint>>
/' EIP Pattern: Messaging Gateway
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/MessagingGateway.html
'/
!define MessagingGateway(_alias) rectangle "<$messaging_gateway>" as _alias <<messaging gateway>>
!define MessagingGateway(_alias, _label) rectangle "<$messaging_gateway>\r _label" as _alias <<messaging gateway>>
/' EIP Pattern: Messaging Mapper
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/MessagingMapper.html
'/
!define MessagingMapper(_alias) rectangle "<$messaging_mapper>" as _alias <<messaging mapper>>
!define MessagingMapper(_alias, _label) rectangle "<$messaging_mapper>\r _label" as _alias <<messaging mapper>>
/' EIP Pattern: Transactional client
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/TransactionalClient.html
'/
!define TransactionalProducer(_alias) rectangle "<$transactional_producer>" as _alias <<transactional producer>>
!define TransactionalProducer(_alias, _label) rectangle "<$transactional_producer>\r _label" as _alias <<transactional producer>>
!define TransactionalConsumer(_alias) rectangle "<$transactional_consumer>" as _alias <<transactional consumer>>
!define TransactionalConsumer(_alias, _label) rectangle "<$transactional_consumer>\r _label" as _alias <<transactional consumer>>
/' EIP Pattern: Polling Consumer
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/PollingConsumer.html
'/
!define PollingConsumer(_alias) rectangle "<$polling_consumer>" as _alias <<polling consumer>>
!define PollingConsumer(_alias, _label) rectangle "<$polling_consumer>\r _label" as _alias <<polling consumer>>
/' EIP Pattern: Event-Driven Consumer
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/EventDrivenConsumer.html
'/
!define EventDrivenConsumer(_alias) rectangle "<$eventdriven_consumer>" as _alias <<event-driven consumer>>
!define EventDrivenConsumer(_alias, _label) rectangle "<$eventdriven_consumer>\r _label" as _alias <<event-driven consumer>>
/' EIP Pattern: Competing Consumers
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/CompetingConsumers.html
No special element required. Can be done in code by adding multiple consumers.
'/
/' EIP Pattern: Message Dispatcher
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/MessageDispatcher.html
'/
!define MessageDispatcher(_alias) rectangle "<$message_dispatcher>" as _alias <<message dispatcher>>
!define MessageDispatcher(_alias, _label) rectangle "<$message_dispatcher>\r _label" as _alias <<message dispatcher>>
/' EIP Pattern: Selective Consumer
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/MessageSelector.html
'/
!define SelectiveConsumer(_alias) rectangle "<$selective_consumer>" as _alias <<selective consumer>>
!define SelectiveConsumer(_alias, _label) rectangle "<$selective_consumer>\r _label" as _alias <<selective consumer>>
/' EIP Pattern: Durable Consumer
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/DurableSubscription.html
'/
!define DurableSubscriber(_alias) rectangle "<$durable_subscriber>" as _alias <<durable subscriber>>
!define DurableSubscriber(_alias, _label) rectangle "<$durable_subscriber>\r _label" as _alias <<durable subscriber>>
!define NonDurableSubscriber(_alias) rectangle "<$nondurable_subscriber>" as _alias <<non-durable subscriber>>
!define NonDurableSubscriber(_alias, _label) rectangle "<$nondurable_subscriber>\r _label" as _alias <<non-durable subscriber>>
/' EIP Pattern: Idempotent Receiver
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/IdempotentReceiver.html
TBD, no metapher availalbe at www.enterpriseintegrationpatterns.com
'/
/' EIP Pattern: Service Activator
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/
'/
!define ServiceActivator(_alias) rectangle "<$service_activator>" as _alias <<service activator>>
!define ServiceActivator(_alias, _label) rectangle "<$service_activator>\r _label" as _alias <<service activator>>
/' ########################################################
################## Messaging Channels #################
'/ ########################################################
/' EIP Pattern: Message Channel
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/MessageChannel.html
'/
!define MsgChannel(_alias) rectangle "<$queue>" as _alias <<message channel>>
!define MsgChannel(_alias, _label) rectangle "<$queue>\r _label" as _alias <<message channel>>
/' EIP Pattern: Point-to-Point Channel
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/PointToPointChannel.html
'/
!define P2PChannel(_alias) rectangle "<$queue>" as _alias <<point-to-point channel>>
!define P2PChannel(_alias, _label) rectangle "<$queue>\r _label" as _alias <<point-to-point channel>>
/' EIP Pattern: Publish-Subscribe Channel
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/PublishSubscribeChannel.html
'/
!define PubSubChannel(_alias) rectangle "<$queue>" as _alias <<publish-subscribe channel>>
!define PubSubChannel(_alias, _label) rectangle "<$queue>\r _label" as _alias <<publish-subscribe channel>>
/' EIP Pattern: Datatype Channel
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/DatatypeChannel.html
'/
!define DatatypeChannel(_alias) rectangle "<$datatype_channel>" as _alias <<datatype channel>>
!define DatatypeChannel(_alias, _label) rectangle "<$datatype_channel>\r _label" as _alias <<datatype channel>>
/' EIP Pattern: Invalid Message Channel
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/InvalidMessageChannel.html
'/
!define InvalidMsgChannel(_alias) rectangle "<$invalid_message_channel>" as _alias <<invalid message channel>>
!define InvalidMsgChannel(_alias, _label) rectangle "<$invalid_message_channel>\r _label" as _alias <<invalid message channel>>
/' EIP Pattern: Dead Letter Channel
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/DeadLetterChannel.html
'/
!define DeadLetterChannel(_alias) rectangle "<$dead_letter_queue>" as _alias <<dead letter channel>>
!define DeadLetterChannel(_alias, _label) rectangle "<$dead_letter_queue>\r _label" as _alias <<dead letter channel>>
/' EIP Pattern: Guaranteed Delivery
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/GuaranteedMessaging.html
TBS: THere is no specific metapther for quaranteed delivery
'/
/' EIP Pattern: Channel Adapter
Link: https://www.Leftenterpriseintegrationpatterns.com/patterns/messaging/ChannelAdapter.html
'/
!define ChannelAdapterLeft(_alias) rectangle "<$channel_adapter_left>" as _alias <<channel adapter left>>
!define ChannelAdapterLeft(_alias, _label) rectangle "<$channel_adapter_left>\r _label" as _alias <<channel adapter left>>
!define ChannelAdapterRight(_alias) rectangle "<$channel_adapter_right>" as _alias <<channel adapter right>>
!define ChannelAdapterRight(_alias, _label) rectangle "<$channel_adapter_right>\r _label" as _alias <<channel adapter right>>
/' EIP Pattern: Messaging Bridge
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/MessagingBridge.html
'/
!define MsgBridge(_alias) rectangle "<$bridge>" as _alias <<messaging bridge>>
!define MsgBridge(_alias, _label) rectangle "<$bridge>\r _label" as _alias <<messaging bridge>>
/' EIP Pattern: Message Bus
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/MessageBus.html
'/
!define MsgBus(_alias) rectangle "<$message_bus>" as _alias <<message bus>>
!define MsgBus(_alias, _label) rectangle "<$message_bus>\r _label" as _alias <<message bus>>
/' ########################################################
################## Systems Management #################
'/ ########################################################
/' EIP Pattern: Control Bus
Link: h‚ttps://www.enterpriseintegrationpatterns.com/patterns/messaging/ControlBus.html
'/
Hide <<control bus>> stereotype
!procedure ControlBus($alias)
rectangle "<$control_bus>" as $alias <<control bus>> #transparent
skinparam rectangle {
BorderColor<<control bus>> transparent
Shadowing<<control bus>> false
}
!endprocedure
/' EIP Pattern: Detour
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/Detour.html
'/
!define Detour(_alias) rectangle "<$detour>" as _alias <<detour>>
!define Detour(_alias, _label) rectangle "<$detour>\r _label" as _alias <<detour>>
/' EIP Pattern: Wire Tap
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/WireTap.html
'/
!define WireTap(_alias) rectangle "<$wire_tap>" as _alias <<wire tap>>
!define WireTap(_alias, _label) rectangle "<$wire_tap>\r _label" as _alias <<wire tap>>
/' EIP Pattern: Message History
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/MessageHistory.html
TB: This is rather hard to do
'/
/' EIP Pattern: Message Store
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/MessageStore.html
'/
!define MessageStore(_alias) rectangle "<$message_store>" as _alias <<message store>>
!define MessageStore(_alias, _label) rectangle "<$message_store>\r _label" as _alias <<message store>>
/' EIP Patern: Smart Proxy
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/SmartProxy.html
'/
!define SmartProxy(_alias) rectangle "<$smart_proxy>" as _alias <<smart proxy>>
!define SmartProxy(_alias, _label) rectangle "<$smart_proxy>\r _label" as _alias <<smart proxy>>
/' EIP Pattern: Test Message
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/TestMessage.html
'/
!define TestMessage(_alias) rectangle "<$test_message>" as _alias <<test message>>
!define TestMessage(_alias, _label) rectangle "<$test_message>\r _label" as _alias <<test message>>
/' EIP Pattern: Channel Purger
Link: https://www.enterpriseintegrationpatterns.com/patterns/messaging/ChannelPurger.html
'/
!define ChannelPurger(_alias) rectangle "<$channel_purger>" as _alias <<channel purger>>
!define ChannelPurger(_alias, _label) rectangle "<$channel_purger>\r _label" as _alias <<channel purger>>
/' ########################################################
########################################################
'/ ########################################################
'/ Relations
'/
!define Send(_from, _to) _from --> _to
!define Pipe(_from, _to) _from --> _to : Pipe