202 lines
6.3 KiB
Markdown
202 lines
6.3 KiB
Markdown
[plantuml.com/es/archimate-diagram](https://plantuml.com/es/archimate-diagram)
|
||
|
||
[ArchiMate](https://en.wikipedia.org/wiki/ArchiMate) is an open and independent **enterprise architecture modeling language** that supports the description, analysis, and visualization of architecture within and across business domains. An **ArchiMate Diagram** provides a structured representation of the various components of an enterprise, their **interrelationships**, and their integration with **IT infrastructure**.
|
||
|
||
While both [ArchiMate](https://en.wikipedia.org/wiki/ArchiMate) and [UML](https://en.wikipedia.org/wiki/Unified_Modeling_Language) are modeling languages, they serve different purposes. UML is primarily used for software design and system modeling, focusing on the structural and behavioral aspects of systems. In contrast, **ArchiMate** is tailored for **enterprise architecture**, offering a holistic view of the organizational, informational, and technical layers of an enterprise.
|
||
|
||
```plantuml
|
||
@startuml
|
||
listsprite
|
||
@enduml
|
||
|
||
```
|
||
|
||
```plantuml
|
||
@startuml
|
||
listfont
|
||
@enduml
|
||
```
|
||
|
||
### Ejemplo simple:
|
||
|
||
```plantuml
|
||
@startuml
|
||
|
||
skinparam rectangle {
|
||
FontSize 10
|
||
Padding 4
|
||
Margin 5
|
||
}
|
||
skinparam defaultTextAlignment center
|
||
|
||
' Usamos el sprite de Proceso de Negocio (estilo ArchiMate simple)
|
||
sprite $bProcess jar:archimate/application-service
|
||
sprite $aOperator jar:archimate/actor
|
||
sprite $aMaintOp jar:archimate/technology-device
|
||
sprite $aEvent jar:archimate/event
|
||
sprite $aColaboration jar:archimate/communication-path
|
||
|
||
' === BLOQUES ===
|
||
rectangle "Tanque de Henkel\nllega a 5 pies de líquido" as A <<$aEvent>> #ff0000
|
||
rectangle "Operador Henkel avisa\npor radio a Alpla para recoger\nformulario de cambio" as B <<$aColaboration>> #8CD96B
|
||
rectangle "Tanque de Henkel se vacía" as C <<$aEvent>> #ff0000
|
||
rectangle "Operador Henkel llama\npara poner TLO en manual" as D <<$aOperator>> #ff0000
|
||
|
||
rectangle "Henkel se queda sin producto\nen la línea" as E <<$aEvent>> #ff0000
|
||
rectangle "Operador Alpla mueve\npilas sobrantes manualmente" as F <<$aOperator>> #8CD96B
|
||
rectangle "Operador cambia AVID\ny pide nuevas pilas" as G <<$aOperator>> #8CD96B
|
||
|
||
rectangle "Operador llama a mantenimiento\npara ajustar Vetro al nuevo formato" as H <<$aColaboration>> #8CD96B
|
||
rectangle "Operador acepta nuevo AVID\nen giradores 1 y 2" as I <<technology-device>> #8CD96B
|
||
rectangle "Operador cambia partes de formato\nen giradores 1 y 2" as J <<$aOperator>> #8CD96B
|
||
|
||
rectangle "Operador avisa por radio que\nHenkel Alpla está listo" as K <<$aOperator>> #8CD96B
|
||
rectangle "Operador pone la línea en automático\na pedido de Henkel" as L <<$aMaintOp>> #8CD96B
|
||
|
||
rectangle "Mantenimiento inicia cambio\ntransportadores Vetro" as M <<$aMaintOp>> #FFC933
|
||
rectangle "Mantenimiento cambia\ncámara Keyence" as N <<$aMaintOp>> #FFC933
|
||
rectangle "Mantenimiento verifica cambio\ncompleto de transportadores" as O <<$aMaintOp>> #FFC933
|
||
|
||
' === FLUJO HASTA E (left->right por defecto) ===
|
||
A -right-> B
|
||
B -right-> C
|
||
C -down-> D
|
||
D -left-> E
|
||
|
||
' === DESDE E: FORZAR TOP-DOWN ===
|
||
E -down-> F
|
||
F -left-> G
|
||
G -left-> H
|
||
H -down-> I
|
||
I -down-> J
|
||
J -down-> K
|
||
K -down-> L
|
||
|
||
' === MANTENIMIENTO: rama lateral y vertical ===
|
||
H -down-> M
|
||
M -down-> N
|
||
N -down-> O
|
||
|
||
@enduml
|
||
```
|
||
|
||
|
||
### Sequence Diagram
|
||
****
|
||
|
||
```plantuml
|
||
@startuml
|
||
title Changeover
|
||
hide footbox
|
||
skinparam ArrowHeadColor none
|
||
skinparam NoteBackgroundColor #F0F0F0
|
||
skinparam NoteBorderColor #999999
|
||
skinparam ParticipantPadding 100
|
||
skinparam BoxPadding 6
|
||
skinparam WrapWidth 250
|
||
|
||
legend right
|
||
<b>Agreed:</b>
|
||
- **AV** (must be forwared to Autefa, must be shown on your HMI’s)
|
||
- **AV Desc** (must be shown on you HMI’s)
|
||
- **Product Family** (must be used by Vetro to select right Recipe)
|
||
- **Customer article Number** (used by Vetro to find matching AV)
|
||
endlegend
|
||
|
||
' ==== Estilos reutilizables ====
|
||
!define VAR(x) <back:#F0F0F0><color:#7F6000><b>x</b></color></back>
|
||
!define SIG(x) <back:#F0F0F0><color:#005A9E><b>x</b></color></back>
|
||
|
||
!definelong Nota($donde, $text)
|
||
note over $donde
|
||
$text
|
||
end note
|
||
!enddefinelong
|
||
|
||
!definelong NotaParalela($donde, $text)
|
||
/ note over $donde
|
||
$text
|
||
end note
|
||
!enddefinelong
|
||
|
||
!definelong Variable($donde, $text)
|
||
hnote right $donde #AAFFFF
|
||
$text
|
||
end note
|
||
!enddefinelong
|
||
|
||
!definelong VariableCentro($donde, $text)
|
||
hnote over $donde #AAFFFF
|
||
$text
|
||
end note
|
||
!enddefinelong
|
||
|
||
!definelong VariableParalelo($donde, $text)
|
||
/ hnote right $donde #AAFFFF
|
||
$text
|
||
end note
|
||
!enddefinelong
|
||
|
||
|
||
participant HENKEL as H
|
||
participant Alpla as A
|
||
participant Vetromeccanica as V
|
||
participant AUTEFA as U
|
||
|
||
== Before Changeover ==
|
||
Nota(H,Send VAR(IDH_BTL_NEXT) number to be validated)
|
||
|
||
== Data_To_EbConvey[38] ==
|
||
Nota(H,Validate VAR(IDH_BTL_NEXT) and send acknowledge)
|
||
Variable(H,Data_From_EbConvey[0].2)
|
||
|
||
== Step 1 ==
|
||
Nota(H,Operator manually selects "Line Clearance" (?) and send signal "0" on VAR(CalculatedBottlesRemainingToFill).)
|
||
Variable(H,Data_To_EbConvey[23])
|
||
|
||
== Step 2 ==
|
||
Nota(A,Stops taking bottles out of trays and sends what is already on the tables and conveyors.)
|
||
NotaParalela(V,Emptying Merger and Line)
|
||
NotaParalela(U,Stops taking bottles out of trays and sends what is already on the tables and conveyors.)
|
||
Variable(V,TG10 Send 0 in Bottles for Actual Batch)
|
||
|
||
== Step 3 ==
|
||
Nota(H,Operator verifies line is empty and sends "changeover request" signal after last bottle goes through filler.)
|
||
Variable(H,Data_To_EbConvey[0].0)
|
||
|
||
== Step 4 ==
|
||
Nota(A,'Operator verifies line is empty and sends "line is busy with changeover",confirming on Popup screen')
|
||
Variable(A,Data_From_EbConvey[0].0)
|
||
|
||
== Step 5 ==
|
||
Nota(V,Starts changeover)
|
||
NotaParalela(U,Starts changeover)
|
||
Variable(V,Data_From_EbConvey[0].0)
|
||
VariableParalelo(U,Data_From_EbConvey[0].0)
|
||
|
||
== Step 6 ==
|
||
Nota(V,Ends changeover. Sends signal "Changeover is finished and ready.")
|
||
NotaParalela(U,Ends changeover. Sends signal "Changeover is finished and ready.")
|
||
Variable(V,Data_From_EbConvey[0].1)
|
||
VariableParalelo(U,Data_From_EbConvey[0].1)
|
||
|
||
== Step 7 ==
|
||
Nota(H,Send Reset counters signal)
|
||
NotaParalela(V,Reset Counters)
|
||
Variable(H,Data_To_EbConvey[0].1)
|
||
|
||
== Step 8 ==
|
||
Nota(H,Send new value on VAR(CalculatedBottlesRemainingToFill))
|
||
Variable(H,Data_To_EbConvey[23])
|
||
|
||
== Step 9 ==
|
||
Nota(H,Send Changeover Complete. To be considered "Production Ready")
|
||
NotaParalela(A,Starts conveying bottles.)
|
||
NotaParalela(V,Finish Changeover Cycle)
|
||
Variable(H,Data_To_EbConvey[0].2)
|
||
|
||
@enduml
|
||
|
||
```
|
||
|