plantuml / plantuml

Generate diagrams from textual description
https://plantuml.com
Other
9.73k stars 881 forks source link

Archimate 3 Specifications #61

Closed ghost closed 5 years ago

ghost commented 6 years ago

I've been using the Archimate feature solidly for a while now and would like to see it keep in line with the current specification.

The icon sets for Strategy and Physical layers are missing. Please find them below.

strategy-capability strategy-course-of-action physical-equipment physical-facility physical-distribution-network physical-material strategy-resource

ghost commented 6 years ago

Also missing is outcome: outcome

In addition, I'd be happy to align the icons you have semantically to the correct layers if you need.

arnaudroques commented 6 years ago

Nice idea! And thanks for the icons!

So the last beta https://www.dropbox.com/s/koo42q3d9gxw288/plantuml.jar?dl=0

allows now this:

@startuml
rectangle "business strategy-capability" <<$archimate/strategy-capability>>
rectangle "business strategy-course-of-action" <<$archimate/strategy-course-of-action>>
rectangle "business strategy-equipement" <<$archimate/strategy-equipement>>
rectangle "business strategy-facility" <<$archimate/strategy-facility>>
rectangle "business strategy-distribution-network" <<$archimate/strategy-distribution-network>>
rectangle "business strategy-material" <<$archimate/strategy-material>>
rectangle "business strategy-resource" <<$archimate/strategy-resource>>
rectangle "business strategy-outcome" <<$archimate/strategy-outcome>>
@enduml

This will be released in next official release.

ghost commented 6 years ago

That's great. However, some icons are misaligned.

should be: archimate/strategy-capability archimate/strategy-course-of-action archimate/strategy-resource archimate/physical-facility archimate/physical-material archimate/physical-equipment archimate/physical-distribution-network archimate/motivation-outcome

As an added note, I have a massive definitions file I include with every diagram that aligns the icons to the correct scope and colorizes the artifacts to match. There are 2 scopes commented out due to the missing icons. Is there any way you could make it more official as part of the PlantUml build (exact naming conventions not withstanding). Also feel free to ignore the macros.

archimate.txt

I love the archimate notation, but not the official tools -- and have been writing a plantuml plugin for visio to help avoid having to use them. This update will help greatly in achieving that.

Thanks.

arnaudroques commented 6 years ago

Sorry, I do not understand the "misaligned" word. All icons are 16x16 pixels. Is this related to their colors ? Or do you want to rename some icon names ? It would be nice if you could give more precise suggestions!

Regards,

ghost commented 6 years ago

Apologies. I meant the names. I've scoped the icons to layers per archimate 3 specification in my definitions file.

arnaudroques commented 6 years ago

So you want to rename "archimate/strategy-capability" right ? It would be great if you could provide something like:

archimate/strategy-capability --> archimate/new-name-for-strategy-capability

Otherwise, we are confuse about the real need. Thanks!

ghost commented 6 years ago

For renaming the icons:

archimate/strategy-capability --> OK archimate/strategy-course-of-action --> OK archimate/strategy-resource --> OK archimate/strategy-facility --> archimate/physical-facility archimate/strategy-material --> archimate/physical-material archimate/strategy-equipment --> archimate/physical-equipment archimate/strategy-distribution-network --> archimate/physical-distribution-network archimate/strategy-outcome --> archimate/motivation-outcome

Does that make sense?

In terms of a change to syntax, it would be nice if I could type something like: archimate <SCOPE> <NAME> <ICON>

and that would produce the same result as: rectangle <NAME> <ICON> <COLOUR>

I attached my definitions file a few posts up to give an indication of what I'm using to simplify my usage. I have there the layers colour coded as:

BUSINESS #yellow APPLICATION #A9DCDF MOTIVATION #B19CD9 STRATEGY #F6E4CC TECHNOLOGY #lightgreen PHYSICAL #CCFFCC IMPLEMENTATION #FFA6BF

Example syntax could be: archimate APPLICATION DoSomething <<$application-function>>

Or simpler (but possibly too abstracted): archimate DoSomething application-function

to give the same result as currently: rectangle DoSomething <<$archimate/application-function>> #A9DCDF

I hope that clarifies a few things.

arnaudroques commented 6 years ago

Does that make sense?

Yes, that's perfect, thanks!

So in last beta https://www.dropbox.com/s/koo42q3d9gxw288/plantuml.jar?dl=0

Note that we treat #BUSINESS / #APPLICATION / ... as regular colors (it's just new color names to us). It's really a draft and a first proposal : feel free to make other suggestions, especially if you want to change the order of arguments in the new "archimate" command.

So now the following examples are working:

@startuml
rectangle "business strategy-capability" <<$archimate/strategy-capability>>
rectangle "business strategy-course-of-action" <<$archimate/strategy-course-of-action>>
rectangle "business physical-equipment" <<$archimate/physical-equipment>>
rectangle "business physical-facility" <<$archimate/physical-facility>>
rectangle "business physical-distribution-network" <<$archimate/physical-distribution-network>>
rectangle "business physical-material" <<$archimate/physical-material>>
rectangle "business strategy-resource" <<$archimate/strategy-resource>>
rectangle "business motivation-outcome" <<$archimate/motivation-outcome>> #MOTIVATION
@enduml
@startuml
archimate #APPLICATION DoSomething <<application-function>>
archimate #MOTIVATION  SomeMotivation
@enduml
ghost commented 6 years ago

The new command works great. I have noticed that I can't use aliases or names with spaces. For example: archimate #APPLICATION "Some Function" <<application-function>> and archimate #APPLICATION SomeFunction as App_Func1 <<application-function>>

produce errors.

arnaudroques commented 6 years ago

Thanks for your tests, it really helps! We've fixed those in last beta https://www.dropbox.com/s/koo42q3d9gxw288/plantuml.jar?dl=0

There are probably some other issues, so do not hesitate to post again here! Regards,

aadrian commented 6 years ago

@arnaudroques Any chance committing (those) changes to GitHub instead of just providing binaries from a private DropBox?

https://github.com/plantuml/plantuml/commits/master does not seems to contain "individual commits" but "source backups" on each release :(.

Also the https://github.com/plantuml/plantuml/pulls seems to be totally ignored :( .

Thank you.

ghost commented 6 years ago

That's working great now. I also have some other suggestions.

2 important and useful features of Archimate are grouping and junctions. Groups are used to show how multiple artifacts aggregate or compose under another concept, artifact or scope. I can use the built-in frame, package, rectangle etc command, but the results are not perfect:

@startuml
archimate #Motivation "Secure Data Transfer" as dataTrans <<requirement-filled>>
   frame "VPN Solution" as vpnSolution {
   archimate #Technology "VPN Server" as vpnServerA <<technology-device>>
   archimate #Technology "Client Server" as vpnServerB <<technology-device>>
   archimate #Technology "VPN Gateway" as softwareA <<technology-system-software>>
   archimate #Technology "VPN Client" as softwareB <<technology-system-software>>
   archimate #Technology "Network Path" as coms <<technology-communication-path>>
   archimate #Technology "Internet / Cloud" as network <<technology-network>>
   archimate #Technology "VPN Service" as vpnService <<service>>
   }
vpnSolution .up.|> dataTrans
vpnService <|.down. coms
coms -left- softwareA
coms -right- softwareB
vpnServerA *-up-> softwareA
vpnServerB *-up-> softwareB
network -left- vpnServerA
network -right- vpnServerB
network .up.|> coms
@enduml

image: test 1-21

The group should be handled the same way as an individual artifact with the arrow centered on the side it comes from rather than being constrained to the corners. Also, aggregate groups should have a dashed outline, composition groups a full line.

It would be nice if I could have the syntax to specify.

e.g.

Archigroup <NAME> <GROUPTYPE: Aggregate / Composite> {
<OTHER OBJECTS>
}

Junctions indicate decisions and parallel conditions and I would normally implement as below:

@startuml
allow_mixing
circle JunctionAnd #black
circle JunctionOr #whitesmoke
rectangle GO #lightgreen
rectangle STOP #red
rectangle WAIT #orange
GO -up-> JunctionOr
STOP -up-> JunctionOr
STOP -down-> JunctionAnd
WAIT -down-> JunctionAnd
@enduml

junctions@1-12

The problem with the new Archimate command is that it produces an error if I mix with Circle.

It would also be nice if we could have an Archimate specific syntax to create the Junctions: Junction-Or <NAME> Junction-And <NAME>

Also that the border colour defaults to black in both cases.

I hope that explains the requirement adequately and is not too much of an ask.

Thanks.

ghost commented 6 years ago

I've updated the issue title to better reflect the ongoing conversation.

arnaudroques commented 6 years ago

@aadrian Yes, those changes will be committed in next release in GitHub. I understand that this way of working is strange, but right now, we are sticking to this. Sorry about that

@kiebor The "Archigroup" feature is somehow more difficult to implement. It would be better if you create a new issue with this only subject.

About function, we are trying to minimize the number of keywords. For "archimate" keyword, there was no other option than adding a new keyword. For function, we slightly change the way of defining circle:

So now, you can have with last beta https://www.dropbox.com/s/koo42q3d9gxw288/plantuml.jar?dl=0

@startuml
!define Junction_Or circle #black
!define Junction_And circle #whitesmoke

Junction_And JunctionAnd
Junction_Or JunctionOr

archimate #Technology "VPN Server" as vpnServerA <<technology-device>>

rectangle GO #lightgreen
rectangle STOP #red
rectangle WAIT #orange
GO -up-> JunctionOr
STOP -up-> JunctionOr
STOP -down-> JunctionAnd
WAIT -down-> JunctionAnd
@enduml

Even if we focus on UML, we are happy to help Archimate users, as long as we can keep this consistent with UML diagrams. So you can go on with suggestions, even if we do not promise to implement them all :-)

ghost commented 6 years ago

That's great. I can live with using a macro for junctions now that allow_mixing is no longer necessary.

As a solution architect, my primary domain is software/data, and so most of my product specific design work is in UML--but I do often have to branch into TOGAF/archimate territory for integration designs or mapping and modelling boundaries between systems and concerns. This has always meant relying on multiple toolsets. Having always been a software engineer, code is where my strengths are (and a more native mindset) rather than drag and drop interfaces. As such, I really appreciate this project in how it allows me to 'code up' my diagrams and mix disciplines.

Thanks for this awesome service.