Skip to content

Commit 3e236d8

Browse files
authored
Merge pull request #2 from ebbypeter/develop
Archimate spec & samples
2 parents 53432f0 + 26a03b3 commit 3e236d8

10 files changed

+453
-1
lines changed

Archimate.puml

Lines changed: 210 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,210 @@
1+
' Archimate-PlantUML
2+
' Version 0.1
3+
' Url will come here...
4+
5+
' Styling
6+
' ##################################
7+
!define TECHN_FONT_SIZE 12
8+
!define ELEMENT_FONT_COLOR #FFFFFF
9+
10+
skinparam defaultTextAlignment center
11+
skinparam wrapWidth 400
12+
skinparam maxMessageSize 150
13+
14+
skinparam Arrow {
15+
Color #000000
16+
FontColor #000000
17+
FontSize 12
18+
}
19+
skinparam Folder<<grouping>> {
20+
Shadowing true
21+
StereotypeFontSize 0
22+
FontColor #444444
23+
BorderColor #444444
24+
BorderStyle dashed
25+
}
26+
skinparam Folder<<group>> {
27+
Shadowing true
28+
FontColor #444444
29+
BackgroundColor lightgrey
30+
}
31+
skinparam rectangle<<boundary>> {
32+
Shadowing false
33+
StereotypeFontSize 0
34+
FontColor #444444
35+
BorderColor #444444
36+
BorderStyle dashed
37+
}
38+
39+
' Layout
40+
' ##################################
41+
!definelong LAYOUT_AS_SKETCH
42+
skinparam backgroundColor #EEEBDC
43+
skinparam handwritten true
44+
skinparam defaultFontName "Comic Sans MS"
45+
center footer <font color=red>Warning:</font> Created for discussion, needs to be validated
46+
!enddefinelong
47+
!define LAYOUT_TOP_DOWN top to bottom direction
48+
!define LAYOUT_LEFT_RIGHT left to right direction
49+
50+
' Layout Helpers
51+
' ##################################
52+
!define Lay_D(e_from, e_to) e_from -[hidden]D- e_to
53+
!define Lay_U(e_from, e_to) e_from -[hidden]U- e_to
54+
!define Lay_R(e_from, e_to) e_from -[hidden]R- e_to
55+
!define Lay_L(e_from, e_to) e_from -[hidden]L- e_to
56+
57+
' Boundaries
58+
' ##################################
59+
!define Boundary(e_alias, e_label) rectangle "==e_label" <<boundary>> as e_alias
60+
!define Boundary(e_alias, e_label, e_type) rectangle "==e_label\n<size:TECHN_FONT_SIZE>[e_type]</size>" <<boundary>> as e_alias
61+
62+
' Elements
63+
' ##################################
64+
'Strategy Elements
65+
!define Strategy_Resource(e_alias, e_label) archimate #STRATEGY "e_label" <<strategy-resource>> as e_alias
66+
!define Strategy_Capability(e_alias, e_label) archimate #STRATEGY "e_label" <<strategy-capability>> as e_alias
67+
!define Strategy_CourseOfAction(e_alias, e_label) archimate #STRATEGY "e_label" <<strategy-course-of-action>> as e_alias
68+
69+
'Business Elements
70+
!define Business_Actor(e_alias, e_label) archimate #BUSINESS "e_label" <<business-actor>> as e_alias
71+
!define Business_Role(e_alias, e_label) archimate #BUSINESS "e_label" <<business-role>> as e_alias
72+
!define Business_Collaboration(e_alias, e_label) archimate #BUSINESS "e_label" <<business-collaboration>> as e_alias
73+
!define Business_Interface(e_alias, e_label) archimate #BUSINESS "e_label" <<business-interface>> as e_alias
74+
!define Business_Process(e_alias, e_label) archimate #BUSINESS "e_label" <<business-process>> as e_alias
75+
!define Business_Function(e_alias, e_label) archimate #BUSINESS "e_label" <<business-function>> as e_alias
76+
!define Business_Interaction(e_alias, e_label) archimate #BUSINESS "e_label" <<business-interaction>> as e_alias
77+
!define Business_Event(e_alias, e_label) archimate #BUSINESS "e_label" <<business-event>> as e_alias
78+
!define Business_Service(e_alias, e_label) archimate #BUSINESS "e_label" <<business-service>> as e_alias
79+
!define Business_Object(e_alias, e_label) archimate #BUSINESS "e_label" <<business-object>> as e_alias
80+
!define Business_Contract(e_alias, e_label) archimate #BUSINESS "e_label" <<business-contract>> as e_alias
81+
!define Business_Representation(e_alias, e_label) archimate #BUSINESS "e_label" <<business-representation>> as e_alias
82+
!define Business_Product(e_alias, e_label) archimate #BUSINESS "e_label" <<business-product>> as e_alias
83+
84+
'Application Elements
85+
!define Application_Component(e_alias, e_label) archimate #APPLICATION "e_label" <<application-component>> as e_alias
86+
!define Application_Collaboration(e_alias, e_label) archimate #APPLICATION "e_label" <<application-collaboration>> as e_alias
87+
!define Application_Interface(e_alias, e_label) archimate #APPLICATION "e_label" <<application-interface>> as e_alias
88+
!define Application_Function(e_alias, e_label) archimate #APPLICATION "e_label" <<application-function>> as e_alias
89+
!define Application_Interaction(e_alias, e_label) archimate #APPLICATION "e_label" <<application-interaction>> as e_alias
90+
!define Application_Process(e_alias, e_label) archimate #APPLICATION "e_label" <<application-process>> as e_alias
91+
!define Application_Event(e_alias, e_label) archimate #APPLICATION "e_label" <<application-event>> as e_alias
92+
!define Application_Service(e_alias, e_label) archimate #APPLICATION "e_label" <<application-service>> as e_alias
93+
!define Application_DataObject(e_alias, e_label) archimate #APPLICATION "e_label" <<application-data-object>> as e_alias
94+
95+
'Technology Elements
96+
!define Technology_Node(e_alias, e_label) archimate #TECHNOLOGY "e_label" <<technology-node>> as e_alias
97+
!define Technology_Device(e_alias, e_label) archimate #TECHNOLOGY "e_label" <<technology-device>> as e_alias
98+
!define Technology_SystemSoftware(e_alias, e_label) archimate #TECHNOLOGY "e_label" <<technology-system-software>> as e_alias
99+
!define Technology_Collaboration(e_alias, e_label) archimate #TECHNOLOGY "e_label" <<collaboration>> as e_alias
100+
!define Technology_Interface(e_alias, e_label) archimate #TECHNOLOGY "e_label" <<technology-infra-interface>> as e_alias
101+
!define Technology_Path(e_alias, e_label) archimate #TECHNOLOGY "e_label" <<technology-communication-path>> as e_alias
102+
!define Technology_CommunicationNetwork(e_alias, e_label) archimate #TECHNOLOGY "e_label" <<technology-network>> as e_alias
103+
!define Technology_Function(e_alias, e_label) archimate #TECHNOLOGY "e_label" <<technology-function>> as e_alias
104+
!define Technology_Process(e_alias, e_label) archimate #TECHNOLOGY "e_label" <<technology-process>> as e_alias
105+
!define Technology_Interaction(e_alias, e_label) archimate #TECHNOLOGY "e_label" <<interaction>> as e_alias
106+
!define Technology_Event(e_alias, e_label) archimate #TECHNOLOGY "e_label" <<event>> as e_alias
107+
!define Technology_Service(e_alias, e_label) archimate #TECHNOLOGY "e_label" <<technology-infra-service>> as e_alias
108+
!define Technology_Artifact(e_alias, e_label) archimate #TECHNOLOGY "e_label" <<technology-artifact>> as e_alias
109+
110+
'Physical Elements
111+
!define Physical_Equipment(e_alias, e_label) archimate #PHYSICAL "e_label" <<physical-equipment>> as e_alias
112+
!define Physical_Facility(e_alias, e_label) archimate #PHYSICAL "e_label" <<physical-facility>> as e_alias
113+
!define Physical_DistributionNetwork(e_alias, e_label) archimate #PHYSICAL "e_label" <<physical-distribution-network>> as e_alias
114+
!define Physical_Material(e_alias, e_label) archimate #PHYSICAL "e_label" <<physical-material>> as e_alias
115+
116+
'Motivation Elements
117+
!define Motivation_Stakeholder(e_alias, e_label) archimate #MOTIVATION "e_label" <<stakeholder-filled>> as e_alias
118+
!define Motivation_Driver(e_alias, e_label) archimate #MOTIVATION "e_label" <<driver>> as e_alias
119+
!define Motivation_Assessment(e_alias, e_label) archimate #MOTIVATION "e_label" <<assessment>> as e_alias
120+
!define Motivation_Goal(e_alias, e_label) archimate #MOTIVATION "e_label" <<goal>> as e_alias
121+
!define Motivation_Outcome(e_alias, e_label) archimate #MOTIVATION "e_label" <<motivation-outcome>> as e_alias
122+
!define Motivation_Principle(e_alias, e_label) archimate #MOTIVATION "e_label" <<principle>> as e_alias
123+
!define Motivation_Requirement(e_alias, e_label) archimate #MOTIVATION "e_label" <<requirement>> as e_alias
124+
!define Motivation_Constraint(e_alias, e_label) archimate #MOTIVATION "e_label" <<constraint>> as e_alias
125+
!define Motivation_Meaning(e_alias, e_label) archimate #MOTIVATION "e_label" <<meaning>> as e_alias
126+
!define Motivation_Value(e_alias, e_label) archimate #MOTIVATION "e_label" <<value>> as e_alias
127+
128+
'Implementation Elements
129+
!define Implementation_WorkPackage(e_alias, e_label) archimate #IMPLEMENTATION "e_label" <<workpackage-filled>> as e_alias
130+
!define Implementation_Deliverable(e_alias, e_label) archimate #IMPLEMENTATION "e_label" <<deliverable-filled>> as e_alias
131+
!define Implementation_Event(e_alias, e_label) archimate #IMPLEMENTATION "e_label" <<event>> as e_alias
132+
!define Implementation_Plateau(e_alias, e_label) archimate #IMPLEMENTATION "e_label" <<plateau>> as e_alias
133+
!define Implementation_Gap(e_alias, e_label) archimate #IMPLEMENTATION "e_label" <<gap-filled>> as e_alias
134+
135+
'Other Elements
136+
!define Other_Location(e_alias, e_label) archimate #OrangeRed "e_label" <<location>> as e_alias
137+
!define Junction_Or(e_alias, e_label) circle #black "e_label" as e_alias
138+
!define Junction_And(e_alias, e_label) circle #whitesmoke "e_label" as e_alias
139+
!define Grouping(e_alias, e_label) Folder "e_label" <<grouping>> as e_alias
140+
!define Group(e_alias, e_label) Folder "e_label" <<group>> as e_alias
141+
142+
' Relationships
143+
' ##################################
144+
!define Rel_(e_sourceAlias, e_targetAlias, e_label, e_direction="") e_sourceAlias e_direction e_targetAlias : "e_label"
145+
146+
!define Rel_Composition(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "-*")
147+
!define Rel_Composition_Up(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "-UP-*")
148+
!define Rel_Composition_Down(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "-DOWN-*")
149+
!define Rel_Composition_Left(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "-LEFT-*")
150+
!define Rel_Composition_Right(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "-RIGHT-*")
151+
152+
!define Rel_Aggregation(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "-o")
153+
!define Rel_Aggregation_Up(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "-UP-o")
154+
!define Rel_Aggregation_Down(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "-DOWN-o")
155+
!define Rel_Aggregation_Left(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "-LEFT-o")
156+
!define Rel_Aggregation_Right(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "-RIGHT-o")
157+
158+
!define Rel_Assignment(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "o->")
159+
!define Rel_Assignment_Up(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "o-UP->")
160+
!define Rel_Assignment_Down(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "o-DOWN->")
161+
!define Rel_Assignment_Left(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "o-LEFT->")
162+
!define Rel_Assignment_Right(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "o-RIGHT->")
163+
164+
!define Rel_Specilization(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "-|>")
165+
!define Rel_Specilization_Up(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "-UP-|>")
166+
!define Rel_Specilization_Down(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "-DOWN-|>")
167+
!define Rel_Specilization_Left(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "-LEFT-|>")
168+
!define Rel_Specilization_Right(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "-RIGHT-|>")
169+
170+
!define Rel_Serving(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "->")
171+
!define Rel_Serving_Up(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "-UP->")
172+
!define Rel_Serving_Down(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "-DOWN->")
173+
!define Rel_Serving_Left(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "-LEFT->")
174+
!define Rel_Serving_Right(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "-RIGHT->")
175+
176+
!define Rel_Association(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "-")
177+
!define Rel_Association_Up(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "-UP-")
178+
!define Rel_Association_Down(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "-DOWN-")
179+
!define Rel_Association_Left(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "-LEFT-")
180+
!define Rel_Association_Right(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "-RIGHT-")
181+
182+
!define Rel_Flow(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, ".>>")
183+
!define Rel_Flow_Up(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, ".UP.>>")
184+
!define Rel_Flow_Down(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, ".DOWN.>>")
185+
!define Rel_Flow_Left(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, ".LEFT.>>")
186+
!define Rel_Flow_Right(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, ".RIGHT.>>")
187+
188+
!define Rel_Realization(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, ".|>")
189+
!define Rel_Realization_Up(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, ".UP.|>")
190+
!define Rel_Realization_Down(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, ".DOWN.|>")
191+
!define Rel_Realization_Left(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, ".LEFT.|>")
192+
!define Rel_Realization_Right(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, ".RIGHT.|>")
193+
194+
!define Rel_Triggering(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "->>")
195+
!define Rel_Triggering_Up(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "-UP->>")
196+
!define Rel_Triggering_Down(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "-DOWN->>")
197+
!define Rel_Triggering_Left(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "-LEFT->>")
198+
!define Rel_Triggering_Right(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "-RIGHT->>")
199+
200+
!define Rel_Access(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, ".>")
201+
!define Rel_Access_Up(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, ".UP.>")
202+
!define Rel_Access_Down(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, ".DOWN.>")
203+
!define Rel_Access_Left(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, ".LEFT.>")
204+
!define Rel_Access_Right(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, ".RIGHT.>")
205+
206+
!define Rel_Influnce(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "->")
207+
!define Rel_Influnce_Up(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "-UP->")
208+
!define Rel_Influnce_Down(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "-DOWN->")
209+
!define Rel_Influnce_Left(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "-LEFT->")
210+
!define Rel_Influnce_Right(e_From, e_To, e_label="") Rel_(e_From, e_To, e_label, "-RIGHT->")

README.md

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,40 @@
11
# Archimate-PlantUML
2-
PlantUML macros and other includes for Archimate Diagrams
2+
PlantUML macros and other includes for creating Archimate Diagrams easily.
3+
> Sample image comes here...
4+
5+
## Background
6+
### PlantUML
7+
[PlantUML](http://en.plantuml.com/) is an open source project that allows you to create UML diagrams.
8+
Diagrams are defined using a simple and intuitive plain text language. It uses [Graphviz](https://en.wikipedia.org/wiki/Graphviz) software to lay out its diagrams. Images can be generated in PNG, in SVG or in LaTeX format.
9+
10+
### ArchiMate
11+
[ArchiMate](http://pubs.opengroup.org/architecture/archimate3-doc/) is an open and independent enterprise architecture modeling language to support the description, analysis and visualization of architecture within and across business domains in an unambiguous way.
12+
13+
ArchiMate offers a common language for describing the construction and operation of business processes, organizational structures, information flows, IT systems, and technical infrastructure. This is just like an architectural drawing in classical building where the architecture describes the various aspects of the construction and use of a building. This insight helps the different stakeholders to design, assess, and communicate the consequences of decisions and changes within and between these business domains.
14+
15+
[Archimate-PlanUML](https://github.com/ebbypeter/Archimate-PlantUML) combines the benefits of PlantUML and ArchiMate for providing a simple way of creating and managing ArchiMate diagrams. The Archimate-PlantUML is a set of macros and other includes written on top of [PlantUML Archimate specification](http://plantuml.com/archimate-diagram), with an aim to simplify the syntax for creating elements and defining relationships.
16+
17+
## Getting Started
18+
> __Todo__
19+
>
20+
>
21+
22+
## Usage
23+
> __Todo__
24+
>
25+
>
26+
27+
## Contributing
28+
If you have any ideas, just [open an issue](https://github.com/ebbypeter/Archimate-PlantUML/issues/new) and tell me what you think.
29+
30+
If you'd like to contribute, please fork the repository and use a feature branch.
31+
Pull requests are warmly welcome.
32+
33+
## License
34+
This project is licensed under the MIT License - see the [LICENSE.md](LICENSE.md) file for details
35+
36+
## Acknowledgments
37+
* [PlantUML Reference Guide](http://plantuml.com/PlantUML_Language_Reference_Guide.pdf) - PlantUML Reference Guide
38+
* [Archimate 3.0.1 Specification](http://pubs.opengroup.org/architecture/archimate3-doc/) - Archimate Specifications
39+
* [Plant UML Archimate Specifications](http://plantuml.com/archimate-diagram) - for archimate spec in PlantUML
40+
* [C4-PlantUML](https://github.com/RicardoNiepel/C4-PlantUML) - for inspiration, base structure and scripts idea
24.8 KB
Loading

images/Archimate Overview.png

71.8 KB
Loading
25.9 KB
Loading
19.6 KB
Loading
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
@startuml
2+
!include Archimate.puml
3+
4+
title Archimate Sample - Internet Browser
5+
6+
'LAYOUT_AS_SKETCH
7+
'LAYOUT_LEFT_RIGHT
8+
'LAYOUT_TOP_DOWN
9+
10+
Business_Object(businessObject, "A Business Object")
11+
Business_Process(someBusinessProcess,"Some Business Process")
12+
Business_Service(itSupportService, "IT Support for Business (Application Service)")
13+
14+
Application_DataObject(dataObject, "Web Page Data \n 'on the fly'")
15+
Application_Function(webpageBehaviour, "Web page behaviour")
16+
Application_Component(ActivePartWebPage, "Active Part of the web page \n 'on the fly'")
17+
18+
Technology_Artifact(inMemoryItem,"in memory / 'on the fly' html/javascript")
19+
Technology_Service(internetBrowser, "Internet Browser Generic & Plugin")
20+
Technology_Service(internetBrowserPlugin, "Some Internet Browser Plugin")
21+
Technology_Service(webServer, "Some web server")
22+
23+
Rel_Flow_Left(someBusinessProcess, businessObject, "")
24+
Rel_Serving_Up(itSupportService, someBusinessProcess, "")
25+
Rel_Specilization_Up(webpageBehaviour, itSupportService, "")
26+
Rel_Flow_Right(dataObject, webpageBehaviour, "")
27+
Rel_Specilization_Up(dataObject, businessObject, "")
28+
Rel_Assignment_Left(ActivePartWebPage, webpageBehaviour, "")
29+
Rel_Specilization_Up(inMemoryItem, dataObject, "")
30+
Rel_Realization_Up(inMemoryItem, ActivePartWebPage, "")
31+
Rel_Specilization_Right(inMemoryItem,internetBrowser, "")
32+
Rel_Serving_Up(internetBrowser, webpageBehaviour, "")
33+
Rel_Serving_Up(internetBrowserPlugin, webpageBehaviour, "")
34+
Rel_Aggregation_Right(internetBrowser, internetBrowserPlugin, "")
35+
Rel_Access_Up(webServer, inMemoryItem, "")
36+
Rel_Serving_Up(webServer, internetBrowser, "")
37+
38+
@enduml

0 commit comments

Comments
 (0)