diff --git a/docs/images/plantuml-display-json-data-complex-example.png b/docs/images/plantuml-display-json-data-complex-example.png new file mode 100644 index 0000000..90265d5 Binary files /dev/null and b/docs/images/plantuml-display-json-data-complex-example.png differ diff --git a/docs/images/plantuml-display-json-data-simple-example.png b/docs/images/plantuml-display-json-data-simple-example.png new file mode 100644 index 0000000..92d625d Binary files /dev/null and b/docs/images/plantuml-display-json-data-simple-example.png differ diff --git a/docs/images/plantuml-display-yaml-data-docker-example.png b/docs/images/plantuml-display-yaml-data-docker-example.png new file mode 100644 index 0000000..2759659 Binary files /dev/null and b/docs/images/plantuml-display-yaml-data-docker-example.png differ diff --git a/docs/images/plantuml-display-yaml-data.png b/docs/images/plantuml-display-yaml-data.png new file mode 100644 index 0000000..b3c97a3 Binary files /dev/null and b/docs/images/plantuml-display-yaml-data.png differ diff --git a/docs/images/plantuml-sequence-diagram.png b/docs/images/plantuml-sequence-diagram.png new file mode 100644 index 0000000..ec34509 Binary files /dev/null and b/docs/images/plantuml-sequence-diagram.png differ diff --git a/website/content/notes/plantuml.md b/website/content/notes/plantuml.md new file mode 100644 index 0000000..51026b6 --- /dev/null +++ b/website/content/notes/plantuml.md @@ -0,0 +1,179 @@ ++++ +title = "PlantUML" +author = ["Christopher James Hayward"] +lastmod = 2021-02-04T14:39:22-05:00 +draft = false ++++ + +As described by the webiste[^fn:1]: + +> **PlantUML** is a component that allows you to quickly write UML and other data diagrams, using a simple and intuitive language. + + +## Display JSON data {#display-json-data} + +You can use the JSON format with PlantUML to visualize your data, to activate the feature the diagram must use the `@startjson` and `@endjson` tags, respectively[^fn:2]. + +```plantuml +@startjson +"Hello world!" +@endjson +``` + +{{< figure src="/ox-hugo/plantuml-display-json-data.png" >}} + + +### Simple example {#simple-example} + +Here's an example of a `user` object, with an accompanying `address` and list of `phone` numbers: + +```plantuml +@startjson +{ + "name": "Bob", + "email": "bob@bob.com", + "phone": [ + { "type": "work", "number": "555-1234" }, + { "type": "mobile", "number": "555-4321" } + ], + "address": { + + } +} +@endjson +``` + +{{< figure src="/ox-hugo/plantuml-display-json-data-simple-example.png" >}} + + +### Complex example {#complex-example} + +Here is the example of a complex data structure[^fn:2], which comes from the Wikipedia page for JSON[^fn:3]: + +```plantuml +@startjson +{ + "firstName": "John", + "lastName": "Smith", + "isAlive": true, + "age": 27, + "address": { + "streetAddress": "21 2nd Street", + "city": "New York", + "state": "NY", + "postalCode": "10021-3100" + }, + "phoneNumbers": [ + { + "type": "home", + "number": "212 555-1234" + }, + { + "type": "office", + "number": "646 555-4567" + } + ], + "children": [], + "spouse": null +} +@endjson +``` + +{{< figure src="/ox-hugo/plantuml-display-json-data-complex-example.png" >}} + + +## Display YAML data {#display-yaml-data} + +Much like JSON, PlantUML can visualize YAML data using the `@startyaml`, and `@endyaml` keywords[^fn:4]: + +```plantuml +@startyaml +fruit: Apple +size: Large +@endyaml +``` + +{{< figure src="/ox-hugo/plantuml-display-yaml-data.png" >}} + + +### Docker example {#docker-example} + +Here's an example docker compose file running with a simple application structure[^fn:5]: + +```plantuml +@startyaml +version: "3.9" + +services: + db: + image: postgres + environment: + - POSTGRES_DB=postgres + - POSTGRES_USER=postgres + - POSTGRES_PASSWORD=postgres + web: + build: . + command: python manage.py runserver 0.0.0.0:8000 + volumes: + - .:/code + ports: + - "8000:8000" + depends_on: + - db +@endyaml +``` + +{{< figure src="/ox-hugo/plantuml-display-yaml-data-docker-example.png" >}} + + +## Sequence Diagram {#sequence-diagram} + +Here's the complete example[^fn:6] showing many participants. + +```plantuml +@startuml +/' + ' Define the participant(s). + '/ +participant participant as 1 +actor actor as 2 +boundary boundary as 3 +control control as 4 +entity entity as 5 +database database as 6 +collections collections as 7 +queue queue as 8 +/' + ' Draw a line to each participant(s). + '/ +1 -> 2 : To actor +1 -> 3 : To boundary +1 -> 4 : To control +1 -> 5 : To entity +1 -> 6 : To database +1 -> 7 : To collection +1 -> 8 : To queue +@enduml +``` + +{{< figure src="/ox-hugo/plantuml-sequence-diagram.png" >}} + +Here's a list of all the available keywords: + +- actor +- boundary +- control +- entity +- database +- collections +- queue + + +## Resources {#resources} + +[^fn:1]: PlantUML Website +[^fn:2]: PlantUML JSON Data +[^fn:3]: Wikipedia entry for JSON +[^fn:4]: PlantUML YAML Data +[^fn:5]: Docker compose documentation +[^fn:6]: PlantUML Sequence Diagrams diff --git a/website/static/ox-hugo/plantuml-display-json-data-complex-example.png b/website/static/ox-hugo/plantuml-display-json-data-complex-example.png new file mode 100644 index 0000000..90265d5 Binary files /dev/null and b/website/static/ox-hugo/plantuml-display-json-data-complex-example.png differ diff --git a/website/static/ox-hugo/plantuml-display-json-data-simple-example.png b/website/static/ox-hugo/plantuml-display-json-data-simple-example.png new file mode 100644 index 0000000..92d625d Binary files /dev/null and b/website/static/ox-hugo/plantuml-display-json-data-simple-example.png differ diff --git a/website/static/ox-hugo/plantuml-display-json-data.png b/website/static/ox-hugo/plantuml-display-json-data.png new file mode 100644 index 0000000..921d900 Binary files /dev/null and b/website/static/ox-hugo/plantuml-display-json-data.png differ diff --git a/website/static/ox-hugo/plantuml-display-yaml-data-docker-copose.png b/website/static/ox-hugo/plantuml-display-yaml-data-docker-copose.png new file mode 100644 index 0000000..2759659 Binary files /dev/null and b/website/static/ox-hugo/plantuml-display-yaml-data-docker-copose.png differ diff --git a/website/static/ox-hugo/plantuml-display-yaml-data-docker-example.png b/website/static/ox-hugo/plantuml-display-yaml-data-docker-example.png new file mode 100644 index 0000000..2759659 Binary files /dev/null and b/website/static/ox-hugo/plantuml-display-yaml-data-docker-example.png differ diff --git a/website/static/ox-hugo/plantuml-display-yaml-data-simple-example.png b/website/static/ox-hugo/plantuml-display-yaml-data-simple-example.png new file mode 100644 index 0000000..7e22d77 Binary files /dev/null and b/website/static/ox-hugo/plantuml-display-yaml-data-simple-example.png differ diff --git a/website/static/ox-hugo/plantuml-display-yaml-data.png b/website/static/ox-hugo/plantuml-display-yaml-data.png new file mode 100644 index 0000000..b3c97a3 Binary files /dev/null and b/website/static/ox-hugo/plantuml-display-yaml-data.png differ diff --git a/website/static/ox-hugo/plantuml-sequence-diagram.png b/website/static/ox-hugo/plantuml-sequence-diagram.png new file mode 100644 index 0000000..ec34509 Binary files /dev/null and b/website/static/ox-hugo/plantuml-sequence-diagram.png differ