#95 Dynamic diagrams supports Index(), LastIndex() and SetIndex()

pull/98/head
KIRCHSTH 5 years ago
parent 0129f67cfe
commit cc9235cd2d

@ -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
Loading…
Cancel
Save