PlantUML is a neat tool, quite mature, for generating UML diagrams from text, using
a little domain-specific language. It reminds me of UNIX pic
, which allowed really fast and easy generation of diagram, up to a point. WYSIWYG
really sucks for many technical diagrams: I actively dislike Visio for UML, but I
have had good experiences with Enterprise Architect except it is so damn big now.
I can imagine it could be used to render Schematron converted to UML (whatever that
would look like).
Anyway, I thought I would give PlantUML a try with a package diagram for Schematron: perhaps more a mind map than a package diagram, to help surface how I think Schematron is organized.
The code for this is here:
@startuml
package "Schematron" {
[Schematron Core] <.. [Properties]
[Schematron Core] <.. [Diagnostics]
[Modeling] ..> [Schematron Core]
[SenseMaking] ..> [Schematron Core]
[Schematron Core] ..> [Web]
note top of [Schematron Core]
Find the presence or absence of patterns in XML documents
<assert>, <report>, <rule>, <pattern>, <let>, <schema>, <ns>
Describe the patterns in a rich way
<name>, <value-of>, <title>, <p>, <span>, <emph>, @id
end note
note bottom of SenseMaking
How does this assertion fit?
@see, @role, @subject
end note
note bottom of Modeling
Does the rule, pattern or schema fit
into some bigger picture?
<phase>, <active>, <include>,
<extends>, @abstract, @is-a
end note
note bottom of Web
Does the document fit into
some bigger picture?
document(), property/@document,
<param>,
end note
note bottom of Diagnostics
What does the human need to know?
<diagnostics>, <diagnostic>
end note
note bottom of Properties
What information do we need to send
to downstream processors?
<properties>, <property>
end note
}
[Schematron Core] <.. [QuickFix]
note bottom of QuickFix
What can we do to simply
adjust the document?
end note
Schematron –> () Skeleton
note top of Skeleton
Plug in API for different reports
end note
() Skeleton –> [Schematron SVRL]
() Skeleton –> [Schematron Message]
() Skeleton –> [Schematron Terminate]
@enduml
(Hat-tip to ThoughtWorks’ Technology Radar.)