Archimate Diagram
This is only a proposal and subject to change.
You are very welcome to create a new discussion on this future syntax. Your feedbacks, ideas and suggestions help us to find the right solution.
Archimate keyword
You can use the archimate
keyword to define an element. Stereotype can optionally specify an additional icon. Some colors (Business
, Application
, Motivation
, Strategy
, Technology
, Physical
, Implementation
) are also available.
Defining Junctions
Using the circle
keyword and the link::preprocessing[preprocessor], you can also create junctions.
@startuml
!define Junction_Or circle #black
!define Junction_And circle #whitesmoke
Junction_And JunctionAnd
Junction_Or JunctionOr
archimate #Technology "VPN Server" as vpnServerA <>
rectangle GO #lightgreen
rectangle STOP #red
rectangle WAIT #orange
GO -up-> JunctionOr
STOP -up-> JunctionOr
STOP -down-> JunctionAnd
WAIT -down-> JunctionAnd
@enduml
Example 1
skinparam rectangle<> {
roundCorner 25
}
sprite $bProcess jar:archimate/business-process
sprite $aService jar:archimate/application-service
sprite $aComponent jar:archimate/application-component
rectangle "Handle claim" as HC <<$bProcess>><> #Business
rectangle "Capture Information" as CI <<$bProcess>><> #Business
rectangle "Notify\nAdditional Stakeholders" as NAS <<$bProcess>><> #Business
rectangle "Validate" as V <<$bProcess>><> #Business
rectangle "Investigate" as I <<$bProcess>><> #Business
rectangle "Pay" as P <<$bProcess>><> #Business
HC *-down- CI
HC *-down- NAS
HC *-down- V
HC *-down- I
HC *-down- P
CI -right->> NAS
NAS -right->> V
V -right->> I
I -right->> P
rectangle "Scanning" as scanning <<$aService>><> #Application
rectangle "Customer admnistration" as customerAdministration <<$aService>><> #Application
rectangle "Claims admnistration" as claimsAdministration <<$aService>><> #Application
rectangle Printing <<$aService>><> #Application
rectangle Payment <<$aService>><> #Application
scanning -up-> CI
customerAdministration -up-> CI
claimsAdministration -up-> NAS
claimsAdministration -up-> V
claimsAdministration -up-> I
Payment -up-> P
Printing -up-> V
Printing -up-> P
rectangle "Document\nManagement\nSystem" as DMS <<$aComponent>> #Application
rectangle "General\nCRM\nSystem" as CRM <<$aComponent>> #Application
rectangle "Home & Away\nPolicy\nAdministration" as HAPA <<$aComponent>> #Application
rectangle "Home & Away\nFinancial\nAdministration" as HFPA <<$aComponent>> #Application
DMS .up.|> scanning
DMS .up.|> Printing
CRM .up.|> customerAdministration
HAPA .up.|> claimsAdministration
HFPA .up.|> Payment
legend left
Example from the "Archisurance case study" (OpenGroup).
See
====
<$bProcess> :business process
====
<$aService> : application service
====
<$aComponent> : application component
endlegend
ArchiMate Macros
Archimate Macros and Library
A list of Archimate macros are defined Archimate-PlantUML here which simplifies the creation of ArchiMate diagrams, and Archimate is natively on the link::stdlib[Standard Library] of PlantUML.
Archimate elements
Using the macros, creation of ArchiMate elements are done using the following format:
Category_ElementName(nameOfTheElement, "description")
For example:
* To define a Stakeholder element, which is part of Motivation category, the syntax will be Motivation_Stakeholder(StakeholderElement, "Stakeholder Description")
:
-
To define a Business Service element,
Business_Service(BService, "Business Service")
:
@startuml !include <archimate/Archimate> Business_Service(BService, "Business Service") @enduml
Archimate relationships
The ArchiMate relationships are defined with the following pattern:
Rel_RelationType(fromElement, toElement, "description")
and to define the direction/orientation of the two elements:
Rel_RelationType_Direction(fromElement, toElement, "description")
The RelationTypes
supported are:
* Access
* Aggregation
* Assignment
* Association
* Composition
* Flow
* Influence
* Realization
* Serving
* Specialization
* Triggering
The Directions
supported are:
* Up
* Down
* Left
* Right
For example:
* To denote a composition relationship between the Stakeholder and Business Service defined above, the syntax will be
Rel_Composition(StakeholderElement, BService, "Description for the relationship")
@startuml
!include
Motivation_Stakeholder(StakeholderElement, "Stakeholder Description")
Business_Service(BService, "Business Service")
Rel_Composition(StakeholderElement, BService, "Description for the relationship")
@enduml
-
Unordered List ItemTo orient the two elements in top - down position, the syntax will be
Rel_Composition_Down(StakeholderElement, BService, "Description for the relationship")
@startuml !include <archimate/Archimate> Motivation_Stakeholder(StakeholderElement, "Stakeholder Description") Business_Service(BService, "Business Service") Rel_Composition_Down(StakeholderElement, BService, "Description for the relationship") @enduml
Appendice: Examples of all Archimate RelationTypes
@startuml
left to right direction
skinparam nodesep 4
!include
Rel_Triggering(i15, j15, Triggering)
Rel_Specialization(i14, j14, Specialization)
Rel_Serving(i13, j13, Serving)
Rel_Realization(i12, j12, Realization)
Rel_Influence(i11, j11, Influence)
Rel_Flow(i10, j10, Flow)
Rel_Composition(i9, j9, Composition)
Rel_Association_dir(i8, j8, Association_dir)
Rel_Association(i7, j7, Association)
Rel_Assignment(i6, j6, Assignment)
Rel_Aggregation(i5, j5, Aggregation)
Rel_Access_w(i4, j4, Access_w)
Rel_Access_rw(i3, j3, Access_rw)
Rel_Access_r(i2, j2, Access_r)
Rel_Access(i1, j1, Access)
@enduml
@startuml
title ArchiMate Relationships Overview
skinparam nodesep 5
!include
left to right direction
rectangle Other {
() i14
() j14
}
rectangle Dynamic {
() i10
() j10
() i15
() j15
}
rectangle Dependency {
() i13
() j13
() i4
() j4
() i11
() j11
() i7
() j7
}
rectangle Structural {
() i9
() j9
() i5
() j5
() i6
() j6
() i12
() j12
}
Rel_Triggering(i15, j15, Triggering)
Rel_Specialization(i14, j14, Specialization)
Rel_Serving(i13, j13, Serving)
Rel_Realization(i12, j12, Realization)
Rel_Influence(i11, j11, Influence)
Rel_Flow(i10, j10, Flow)
Rel_Composition(i9, j9, Composition)
Rel_Association_dir(i7, j7, \nAssociation_dir)
Rel_Association(i7, j7, Association)
Rel_Assignment(i6, j6, Assignment)
Rel_Aggregation(i5, j5, Aggregation)
Rel_Access_w(i4, j4, Access_w)
Rel_Access_rw(i4, j4, Access_rw)
Rel_Access_r(i4, j4, Access_r)
Rel_Access(i4, j4, Access)
@enduml
[Adapted from Archimate PR#25]