mirror of
https://github.com/plantuml-stdlib/C4-PlantUML.git
synced 2022-10-18 01:14:54 +00:00
#95 Dynamic diagrams supports Index(), LastIndex() and SetIndex()
This commit is contained in:
+53
-56
@@ -10,22 +10,45 @@
|
||||
' Intended audience: Technical and non-technical people, inside and outside of the software development team.
|
||||
|
||||
' Dynamic diagram introduces (automatically) numbered interactions:
|
||||
' SetIndex(): set the next index,
|
||||
' GetIndex(): get the index and automatically increase index
|
||||
' (lowercase) increment($offset=1): increase current index (procedure which has no direct output)
|
||||
' (lowercase) setIndex($new_index): set the new index (procedure which has no direct output)
|
||||
'
|
||||
' (Uppercase) LastIndex(): return the last used index (function which can be used as argument)
|
||||
' (Uppercase) Index($offset=1): returns current index and calculates next index (function which can be used as argument)
|
||||
' (Uppercase) SetIndex($new_index): returns new set index and calculates next index (function which can be used as argument)
|
||||
|
||||
' Index
|
||||
' ##################################
|
||||
|
||||
!$index=1
|
||||
!$lastIndex = 0
|
||||
!$index = 1
|
||||
|
||||
!procedure increment($step=1)
|
||||
!$index = $index + $step
|
||||
!procedure increment($offset=1)
|
||||
!$lastIndex = $index
|
||||
!$index = $index + $offset
|
||||
!endprocedure
|
||||
|
||||
!procedure setIndex($new_index)
|
||||
!$index=$new_index
|
||||
!$lastIndex = $index
|
||||
!$index= $new_index
|
||||
!endprocedure
|
||||
|
||||
!function Index($offset=1)
|
||||
!$lastIndex = $index
|
||||
!$index = $lastIndex + $offset
|
||||
!return $lastIndex
|
||||
!endfunction
|
||||
|
||||
!function LastIndex()
|
||||
!return $lastIndex
|
||||
!endfunction
|
||||
|
||||
!function SetIndex($new_index, $offset=1)
|
||||
!$lastIndex = $new_index
|
||||
!$index = $new_index + $offset
|
||||
!return $lastIndex
|
||||
!endfunction
|
||||
|
||||
' Relationship override
|
||||
' ##################################
|
||||
|
||||
@@ -40,12 +63,10 @@ $alias1 $direction $alias2 : **$e_index: $label**\n//<size:$TECHN_FONT_SIZE>[$te
|
||||
!endprocedure
|
||||
|
||||
!unquoted procedure Rel($from, $to, $label)
|
||||
Rel_($index, $from, $to, $label, "-->>")
|
||||
increment()
|
||||
Rel_(Index(), $from, $to, $label, "-->>")
|
||||
!endprocedure
|
||||
!unquoted procedure Rel($from, $to, $label, $techn)
|
||||
Rel_($index, $from, $to, $label, $techn, "-->>")
|
||||
increment()
|
||||
Rel_(Index(), $from, $to, $label, $techn, "-->>")
|
||||
!endprocedure
|
||||
!unquoted procedure RelIndex($e_index, $from, $to, $label)
|
||||
Rel_($e_index, $from, $to, $label, "-->>")
|
||||
@@ -55,12 +76,10 @@ Rel_($e_index, $from, $to, $label, $tech, "-->>")
|
||||
!endprocedure
|
||||
|
||||
!unquoted procedure Rel_Back($from, $to, $label)
|
||||
Rel_($index, $from, $to, $label, "<<--")
|
||||
increment()
|
||||
Rel_(Index(), $from, $to, $label, "<<--")
|
||||
!endprocedure
|
||||
!unquoted procedure Rel_Back($from, $to, $label, $techn)
|
||||
Rel_($index, $from, $to, $label, $techn, "<<--")
|
||||
increment()
|
||||
Rel_(Index(), $from, $to, $label, $techn, "<<--")
|
||||
!endprocedure
|
||||
!unquoted procedure RelIndex_Back($e_index, $from, $to, $label)
|
||||
Rel_($e_index, $from, $to, $label, "<<--")
|
||||
@@ -70,12 +89,10 @@ Rel_($e_index, $from, $to, $label, $techn, "<<--")
|
||||
!endprocedure
|
||||
|
||||
!unquoted procedure Rel_Neighbor($from, $to, $label)
|
||||
Rel_($index, $from, $to, $label, "->>")
|
||||
increment()
|
||||
Rel_(Index(), $from, $to, $label, "->>")
|
||||
!endprocedure
|
||||
!unquoted procedure Rel_Neighbor($from, $to, $label, $techn)
|
||||
Rel_($index, $from, $to, $label, $techn, "->>")
|
||||
increment()
|
||||
Rel_(Index(), $from, $to, $label, $techn, "->>")
|
||||
!endprocedure
|
||||
!unquoted procedure RelIndex_Neighbor($e_index, $from, $to, $label)
|
||||
Rel_($e_index, $from, $to, $label, "->>")
|
||||
@@ -85,12 +102,10 @@ Rel_($e_index, $from, $to, $label, $techn, "->>")
|
||||
!endprocedure
|
||||
|
||||
!unquoted procedure Rel_Back_Neighbor($from, $to, $label)
|
||||
Rel_($index, $from, $to, $label, "<<-")
|
||||
increment()
|
||||
Rel_(Index(), $from, $to, $label, "<<-")
|
||||
!endprocedure
|
||||
!unquoted procedure Rel_Back_Neighbor($from, $to, $label, $techn)
|
||||
Rel_($index, $from, $to, $label, $techn, "<<-")
|
||||
increment()
|
||||
Rel_(Index(), $from, $to, $label, $techn, "<<-")
|
||||
!endprocedure
|
||||
!unquoted procedure RelIndex_Back_Neighbor($e_index, $from, $to, $label)
|
||||
Rel_($e_index, $from, $to, $label, "<<-")
|
||||
@@ -100,20 +115,16 @@ Rel_($e_index, $from, $to, $label, $techn, "<<-")
|
||||
!endprocedure
|
||||
|
||||
!unquoted procedure Rel_D($from, $to, $label)
|
||||
Rel_($index, $from, $to, $label, "-DOWN->>")
|
||||
increment()
|
||||
Rel_(Index(), $from, $to, $label, "-DOWN->>")
|
||||
!endprocedure
|
||||
!unquoted procedure Rel_D($from, $to, $label, $techn)
|
||||
Rel_($index, $from, $to, $label, $techn, "-DOWN->>")
|
||||
increment()
|
||||
Rel_(Index(), $from, $to, $label, $techn, "-DOWN->>")
|
||||
!endprocedure
|
||||
!unquoted procedure Rel_Down($from, $to, $label)
|
||||
Rel_($index, $from, $to, $label, "-DOWN->>")
|
||||
increment()
|
||||
Rel_(Index(), $from, $to, $label, "-DOWN->>")
|
||||
!endprocedure
|
||||
!unquoted procedure Rel_Down($from, $to, $label, $techn)
|
||||
Rel_($index, $from, $to, $label, $techn, "-DOWN->>")
|
||||
increment()
|
||||
Rel_(Index(), $from, $to, $label, $techn, "-DOWN->>")
|
||||
!endprocedure
|
||||
!unquoted procedure RelIndex_D($e_index, $from, $to, $label)
|
||||
Rel_($e_index, $from, $to, $label, "-DOWN->>")
|
||||
@@ -129,20 +140,16 @@ Rel_($e_index, $from, $to, $label, $techn, "-DOWN->>")
|
||||
!endprocedure
|
||||
|
||||
!unquoted procedure Rel_U($from, $to, $label)
|
||||
Rel_($index, $from, $to, $label, "-UP->>")
|
||||
increment()
|
||||
Rel_(Index(), $from, $to, $label, "-UP->>")
|
||||
!endprocedure
|
||||
!unquoted procedure Rel_U($from, $to, $label, $techn)
|
||||
Rel_($index, $from, $to, $label, $techn, "-UP->>")
|
||||
increment()
|
||||
Rel_(Index(), $from, $to, $label, $techn, "-UP->>")
|
||||
!endprocedure
|
||||
!unquoted procedure Rel_Up($from, $to, $label)
|
||||
Rel_($index, $from, $to, $label, "-UP->>")
|
||||
increment()
|
||||
Rel_(Index(), $from, $to, $label, "-UP->>")
|
||||
!endprocedure
|
||||
!unquoted procedure Rel_Up($from, $to, $label, $techn)
|
||||
Rel_($index, $from, $to, $label, $techn, "-UP->>")
|
||||
increment()
|
||||
Rel_(Index(), $from, $to, $label, $techn, "-UP->>")
|
||||
!endprocedure
|
||||
!unquoted procedure RelIndex_U($e_index, $from, $to, $label)
|
||||
Rel_($e_index, $from, $to, $label, "-UP->>")
|
||||
@@ -158,20 +165,16 @@ Rel_($e_index, $from, $to, $label, $techn, "-UP->>")
|
||||
!endprocedure
|
||||
|
||||
!unquoted procedure Rel_L($from, $to, $label)
|
||||
Rel_($index, $from, $to, $label, "-LEFT->>")
|
||||
increment()
|
||||
Rel_(Index(), $from, $to, $label, "-LEFT->>")
|
||||
!endprocedure
|
||||
!unquoted procedure Rel_L($from, $to, $label, $techn)
|
||||
Rel_($index, $from, $to, $label, $techn, "-LEFT->>")
|
||||
increment()
|
||||
Rel_(Index(), $from, $to, $label, $techn, "-LEFT->>")
|
||||
!endprocedure
|
||||
!unquoted procedure Rel_Left($from, $to, $label)
|
||||
Rel_($index, $from, $to, $label, "-LEFT->>")
|
||||
increment()
|
||||
Rel_(Index(), $from, $to, $label, "-LEFT->>")
|
||||
!endprocedure
|
||||
!unquoted procedure Rel_Left($from, $to, $label, $techn)
|
||||
Rel_($index, $from, $to, $label, $techn, "-LEFT->>")
|
||||
increment()
|
||||
Rel_(Index(), $from, $to, $label, $techn, "-LEFT->>")
|
||||
!endprocedure
|
||||
!unquoted procedure RelIndex_L($e_index, $from, $to, $label)
|
||||
Rel_($e_index, $from, $to, $label, "-LEFT->>")
|
||||
@@ -187,20 +190,16 @@ Rel_($e_index, $from, $to, $label, $techn, "-LEFT->>")
|
||||
!endprocedure
|
||||
|
||||
!unquoted procedure Rel_R($from, $to, $label)
|
||||
Rel_($index, $from, $to, $label, "-RIGHT->>")
|
||||
increment()
|
||||
Rel_(Index(), $from, $to, $label, "-RIGHT->>")
|
||||
!endprocedure
|
||||
!unquoted procedure Rel_R($from, $to, $label, $techn)
|
||||
Rel_($index, $from, $to, $label, $techn, "-RIGHT->>")
|
||||
increment()
|
||||
Rel_(Index(), $from, $to, $label, $techn, "-RIGHT->>")
|
||||
!endprocedure
|
||||
!unquoted procedure Rel_Right($from, $to, $label)
|
||||
Rel_($index, $from, $to, $label, "-RIGHT->>")
|
||||
increment()
|
||||
Rel_(Index(), $from, $to, $label, "-RIGHT->>")
|
||||
!endprocedure
|
||||
!unquoted procedure Rel_Right($from, $to, $label, $techn)
|
||||
Rel_($index, $from, $to, $label, $techn, "-RIGHT->>")
|
||||
increment()
|
||||
Rel_(Index(), $from, $to, $label, $techn, "-RIGHT->>")
|
||||
!endprocedure
|
||||
!unquoted procedure RelIndex_R($e_index, $from, $to, $label)
|
||||
Rel_($e_index, $from, $to, $label, "-RIGHT->>")
|
||||
@@ -214,5 +213,3 @@ Rel_($e_index, $from, $to, $label, "-RIGHT->>")
|
||||
!unquoted procedure RelIndex_Right($e_index, $from, $to, $label, $techn)
|
||||
Rel_($e_index, $from, $to, $label, $techn, "-RIGHT->>")
|
||||
!endprocedure
|
||||
|
||||
|
||||
|
||||
@@ -140,8 +140,14 @@ Diagram types
|
||||
* Import: `!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Dynamic.puml`
|
||||
* Additional Macros:
|
||||
* `RelIndex(index, from, to, label)`
|
||||
* `increment()`
|
||||
* `setIndex(number)`
|
||||
* (lowercase) `increment($offset=1)`: increase current index (procedure which has no direct output)
|
||||
* (lowercase) `setIndex($new_index)`: set the new index (procedure which has no direct output)
|
||||
* `LastIndex()`: return the last used index (function which can be used as argument)
|
||||
|
||||
following 2 macros requires V1.2020.24Beta4 (can be already tested with http://www.plantuml.com/plantuml/)
|
||||
* `Index($offset=1)`: returns current index and calculates next index (function which can be used as argument)
|
||||
* `SetIndex($new_index)`: returns new set index and calculates next index (function which can be used as argument)
|
||||
|
||||
* Deployment diagram
|
||||
* Import: `!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Deployment.puml`
|
||||
* Additional Macros:
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
@startuml
|
||||
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Dynamic.puml
|
||||
|
||||
LAYOUT_TOP_DOWN()
|
||||
LAYOUT_WITH_LEGEND()
|
||||
|
||||
Person(customer, Customer, "A customer")
|
||||
System_Boundary(c1, "Customer Information") {
|
||||
Container(app, "Customer Application", "Javascript, Angular", "Allows customers to manage their profile")
|
||||
Container(customer_service, "Customer Service", "Java, Spring Boot", "The point of access for customer information")
|
||||
Container(message_bus, "Message Bus", "RabbitMQ", "Transport for business events")
|
||||
Container(reporting_service, "Reporting Service", "Ruby", "Creates normalised data for reporting purposes")
|
||||
Container(audit_service, "Audit Service", "C#/.NET", "Provides organisation-wide auditing facilities")
|
||||
ContainerDb(customer_db, "Customer Database", "Oracle 12c", "Stores customer information")
|
||||
ContainerDb(reporting_db, "Reporting Database", "MySQL", "Stores a normalized version of all business data for ad hoc reporting purposes")
|
||||
Container(audit_store, "Audit Store", "Event Store", "Stores information about events that have happened")
|
||||
}
|
||||
|
||||
Rel_D(customer, app, "Updates his profile using", "HTTPS")
|
||||
Rel(app, customer_service, "Updates customer information using", "JSON/HTTPS")
|
||||
Rel_R(customer_service, customer_db, "Stores data in", "JDBC")
|
||||
|
||||
RelIndex_D($index-1, customer_service, message_bus, "Sends customer update events to", "async")
|
||||
RelIndex_U($index-2, customer_service, app, "Confirm update to", "async")
|
||||
increment()
|
||||
|
||||
RelIndex_L($index-1, message_bus, reporting_service, "Sends customer update events to", "async")
|
||||
increment()
|
||||
RelIndex($index-1, reporting_service, reporting_db, "Stores data in")
|
||||
|
||||
setIndex(5)
|
||||
RelIndex_R($index-2, message_bus, audit_service, "Sends customer update events to", "async")
|
||||
increment()
|
||||
RelIndex($index-2, audit_service, audit_store, "Stores events in")
|
||||
@enduml
|
||||
@@ -16,20 +16,16 @@ System_Boundary(c1, "Customer Information") {
|
||||
Container(audit_store, "Audit Store", "Event Store", "Stores information about events that have happened")
|
||||
}
|
||||
|
||||
Rel(customer, app, "Updates his profile using", "HTTPS")
|
||||
Rel_D(customer, app, "Updates his profile using", "HTTPS")
|
||||
Rel(app, customer_service, "Updates customer information using", "JSON/HTTPS")
|
||||
Rel(customer_service, customer_db, "Stores data in", "JDBC")
|
||||
Rel_R(customer_service, customer_db, "Stores data in", "JDBC")
|
||||
|
||||
RelIndex($index-1, customer_service, message_bus, "Sends customer update events to", "async")
|
||||
RelIndex($index-2, customer_service, app, "Confirm update to", "async")
|
||||
increment()
|
||||
RelIndex_D(Index()-1, customer_service, message_bus, "Sends customer update events to", "async")
|
||||
RelIndex_U(LastIndex()-2, customer_service, app, "Confirm update to", "async")
|
||||
|
||||
RelIndex($index-1, message_bus, reporting_service, "Sends customer update events to", "async")
|
||||
increment()
|
||||
RelIndex($index-1, reporting_service, reporting_db, "Stores data in")
|
||||
RelIndex_L(Index()-1, message_bus, reporting_service, "Sends customer update events to", "async")
|
||||
RelIndex(Index()-1, reporting_service, reporting_db, "Stores data in")
|
||||
|
||||
setIndex(5)
|
||||
RelIndex($index-2, message_bus, audit_service, "Sends customer update events to", "async")
|
||||
increment()
|
||||
RelIndex($index-2, audit_service, audit_store, "Stores events in")
|
||||
RelIndex_R(SetIndex(5)-2, message_bus, audit_service, "Sends customer update events to", "async")
|
||||
RelIndex(Index()-2, audit_service, audit_store, "Stores events in")
|
||||
@enduml
|
||||
Reference in New Issue
Block a user