cloudflightio / structurizr-autoconfigure

Apache License 2.0
3 stars 4 forks source link

Sequence diagrams are not supported by C4-PlantUML #3

Open myvocabu opened 1 year ago

myvocabu commented 1 year ago

Hi Klaus, fist of all thank you a lot for you job and this lib, extremely useful but there is one thing about dynamic diagram which blocks me from usage as a replacement the original com.structurizr ones - its imposibility of exporting DynamicView to PlantUml.

So, can u please activate DynamicView rendering for PlanUML exporter as its supported by com.structurizr:structurizr-export, here is an example: https://github.com/structurizr/examples/blob/main/java/src/main/java/com/structurizr/example/MicroservicesExample.java#L61 and as an output you're getting is the next: `@startuml title Customer Information System - Dynamic

!includeurl https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4.puml !includeurl https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Context.puml !includeurl https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml LAYOUT_WITH_LEGEND()

Person(2, "Customer", "A customer")

System_Boundary("1_boundary", "Customer Information System") { Container(3, "Customer Application", "Angular", "Allows customers to manage their profile.") Container(4, "Customer Service", "Java and Spring Boot", "The point of access for customer information.") ContainerDb(5, "Customer Database", "Oracle 12c", "Stores customer information.") Container(6, "Reporting Service", "Ruby", "Creates normalised data for reporting purposes.") ContainerDb(7, "Reporting Database", "MySQL", "Stores a normalised version of all business data for ad hoc reporting purposes.") Container(8, "Audit Service", "C# .NET", "Provides organisation-wide auditing facilities.") ContainerDb(9, "Audit Store", "Event Store", "Stores information about events that have happened.") ContainerQueue(10, "Message Bus", "RabbitMQ", "Transport for business events.") }

Rel_D(2, 3, "1. Uses") Rel_D(3, 4, "2. Updates customer information using", "JSON/HTTPS") Rel_D(4, 5, "3. Stores data in", "JDBC") Rel_D(4, 10, "4. Sends customer update events to") Rel_D(4, 3, "5. Confirms update to", "WebSocket") Rel_D(10, 8, "5. Sends customer update events to") Rel_D(10, 6, "5. Sends customer update events to") Rel_D(8, 9, "6. Stores events in") Rel_D(6, 7, "6. Stores data in") @enduml`

Basicaly, could you please make sure all overridden properties are configurable on you lib side, like these ones in here: io/cloudflight/architecture/structurizr/service/export/C4PlantUmlExportService.kt:18 configuration.addProperty(ExtendedC4PlantUmlExporter.PLANTUML_SEQUENCE_DIAGRAMS_PROPERTY, true.toString()) configuration.addProperty(ExtendedC4PlantUmlExporter.PLANTUML_ADD_PROPERTIES_PROPERTY, true.toString()) configuration.addProperty(ExtendedC4PlantUmlExporter.PLANTUML_ADD_TAGS_PROPERTY, true.toString())

otherwise that violates open/close principle

Thanks and Happy New Year!

klu2 commented 2 months ago

Dear @myvocabu

really really sorry for replying so incredibly late, I just really didn't get any notification on that issue. I'm about to migrate the library to the latest dependencies (and already released a first RC), and I will take your input into consideration as well.

Please some more days of patience