Obsidean_VM/01-Documentation/PlantUML/ArchiMate Diagram.md

6.3 KiB
Raw Blame History

plantuml.com/es/archimate-diagram

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 and UML 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.

@startuml
listsprite
@enduml

@startuml
listfont
@enduml

Ejemplo simple:

@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


@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 HMIs)
- **AV Desc** (must be shown on you HMIs)
- **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