@startuml
title Simple <b>example</b>\nof title
Object <|-- ArrayList
@enduml
CLASS DIAGRAM
5253209396346880
Sequence diagram of Libera Tango Device Server objectstango_dbtango_dbLiberaBrilliancePlusLiberaBrilliancePlusLiberaClientLiberaClientLiberaAttrLiberaAttrLiberaSignalLiberaSignalSignalSignalinit_deviceget_device_propertyCreateloop[All attribute and signal nodes]AddScalarCreateAddSignalCreateConnectloop[All configured signals]InitializeOpenset_state(ON)operating in state ONpar[Attribute update thread]Readdata valueatribute pointer is directly updated[Signal reading thread]Readdata bufferchanges are kept in signal buffer[allways_executed_hook call]GetDatadata value arrays
SEQUENCE DIAGRAM
5253989201346560
Sequence diagram of Libera Tango Device Server objectstango_dbtango_dbLiberaBrilliancePlusLiberaBrilliancePlusLiberaClientLiberaClientLiberaAttrLiberaAttrLiberaSignalLiberaSignalSignalSignalinit_deviceget_device_propertyCreateloop[All attribute and signal nodes]AddScalarCreateAddSignalCreateConnectloop[All configured signals]InitializeOpenset_state(ON)operating in state ONpar[Attribute update thread]Readdata valueatribute pointer is directly updated[Signal reading thread]Readdata bufferchanges are kept in signal buffer[allways_executed_hook call]GetDatadata value arrays
@startuml
title Sequence diagram of Libera Tango Device Server objects
== init_device ==
tango_db <- LiberaBrilliancePlus : get_device_property
LiberaBrilliancePlus -> LiberaClient : Create
loop All attribute and signal nodes
LiberaBrilliancePlus -> LiberaClient : AddScalar
LiberaClient -> LiberaAttr : Create
LiberaBrilliancePlus -> LiberaClient : AddSignal
LiberaClient -> LiberaSignal : Create
end
LiberaBrilliancePlus -> LiberaClient : Connect
loop All configured signals
LiberaClient -> LiberaSignal : Initialize
LiberaSignal -> Signal : Open
end
LiberaBrilliancePlus <-- LiberaClient : set_state(ON)
== operating in state ON ==
par Attribute update thread
LiberaClient -> LiberaAttr : Read
LiberaClient <-- LiberaAttr : data value
note right : atribute pointer is directly updated
else Signal reading thread
LiberaSignal -> Signal : Read
LiberaSignal <-- Signal : data buffer
note left : changes are kept in signal buffer
else allways_executed_hook call
LiberaBrilliancePlus -> LiberaSignal : GetData
LiberaBrilliancePlus <-- LiberaSignal : data value arrays
end
@enduml
SEQUENCE DIAGRAM
5253989201346560
Simplecommunication exampleon several linesAliceAliceBobBobAuthentication RequestAuthentication Response
SEQUENCE DIAGRAM
5258524686811136
Simplecommunication exampleon several linesAliceAliceBobBobAuthentication RequestAuthentication Response
@startuml
title <u>Simple</u> communication example\non several lines
Alice -> Bob: Authentication Request
Bob -> Alice: Authentication Response
@enduml
@startuml
skinparam rectangle {
BackgroundColor DarkSeaGreen
FontStyle Bold
FontColor DarkGreen
}
skinparam usecase {
BackgroundColor Pink
FontColor DarkRed
FontStyle Bold
}
skinparam note {
BackgroundColor LightYellow
FontColor Black
}
:user: as u
(Robot Framework) as rf
(PSTT) as pstt
(Check Library) as chk
rectangle network as n1{
}
rectangle network as n2{
}
note as tc
Test Case
==
Send...
OnRecv...
Get Data
Check
end note
note as script1
Script
==
Send...
Recv...
Get Data
end note
note as script2
Script
==
Send...
Recv...
Get Data
end note
note as report1
Report
==
Data1
Data2
Data...
end note
note as report2
Report
==
Data1
Data2
Data...
end note
note as checklist
Check List
==
Check1
Check2
end note
note as result
Result
==
Pass
Fail
Error
end note
u - tc
tc -> rf
rf . script1
script1 .> n1
n1 . script2
script2 .> pstt
pstt .. report1
n2 <. report1
report2 . n2
chk <. report2
rf -- checklist
checklist --> chk
result - chk
result --> u
@enduml
USE CASE DIAGRAM
5262240907264000
HTTP Request Parsing StatesRequestLineParse HTTPrequest lineHeadersParse HTTPheadersErrorHostCheck hostheader is presentLengthCheck if required,valid & sizeChunkedParse HTTPchunk headerOkFailureOkFailureNot chunkedChunkedFailureFailureEntity Too LargeOkFailureOk
STATE DIAGRAM
5270249679093760
HTTP Request Parsing StatesRequestLineParse HTTPrequest lineHeadersParse HTTPheadersErrorHostCheck hostheader is presentLengthCheck if required,valid & sizeChunkedParse HTTPchunk headerOkFailureOkFailureNot chunkedChunkedFailureFailureEntity Too LargeOkFailureOk
@startuml
'autonumber
hide footbox
participant "Client" as C
participant "SSO\nServer" as S
participant "Hadoop\nService" as H
C->S: 1. credentials
C<--S: tokens
C->H: 2. access token
C<--H: requested resource
@enduml
SEQUENCE DIAGRAM
5273659614691328
:ConfigurableClientList:CacheConfig:ZoneTableSegment(Mapped)seg1:MemorySegment(Mapped)seg2:MemorySegment(Mapped):b10-auth:b10-auth:ConfigurableClientList:CacheConfig:ZoneTableSegment(Mapped)seg1:MemorySegment(Mapped)seg2:MemorySegment(Mapped)new/initial config(datasrc cfg)<<construct>>:ConfigurableClientListconfigure(cfg)<<construct>> (cfg):CacheConfig<<construct>>:ZoneTableSegment(Mapped)isWritable()Segment not writablewhen not resetfalsegetStatus()DataSourceStatus[]subscribe tomemmgr groupcommand frommemmgr(datasrc_name,segmentparam)resetMemorySegment(datasrc_name,READ_ONLY,segmentparam)reset(READ_ONLY,segmentparam)<<construct>>seg1:MemorySegment(Mapped)command frommemmgr(datasrc_name,segmentparam)resetMemorySegment(datasrc_name,READ_ONLY,segmentparam)reset(READ_ONLY,segmentparam)<<destroy>><<construct>>seg2:MemorySegment(Mapped)reload(zonename)getCachedZoneWriter(zone_name)isWritable()Segment not writableas it is READ_ONLYfalseCACHE_NOT_WRITABLE
SEQUENCE DIAGRAM
5276177807704064
:ConfigurableClientList:CacheConfig:ZoneTableSegment(Mapped)seg1:MemorySegment(Mapped)seg2:MemorySegment(Mapped):b10-auth:b10-auth:ConfigurableClientList:CacheConfig:ZoneTableSegment(Mapped)seg1:MemorySegment(Mapped)seg2:MemorySegment(Mapped)new/initial config(datasrc cfg)<<construct>>:ConfigurableClientListconfigure(cfg)<<construct>> (cfg):CacheConfig<<construct>>:ZoneTableSegment(Mapped)isWritable()Segment not writablewhen not resetfalsegetStatus()DataSourceStatus[]subscribe tomemmgr groupcommand frommemmgr(datasrc_name,segmentparam)resetMemorySegment(datasrc_name,READ_ONLY,segmentparam)reset(READ_ONLY,segmentparam)<<construct>>seg1:MemorySegment(Mapped)command frommemmgr(datasrc_name,segmentparam)resetMemorySegment(datasrc_name,READ_ONLY,segmentparam)reset(READ_ONLY,segmentparam)<<destroy>><<construct>>seg2:MemorySegment(Mapped)reload(zonename)getCachedZoneWriter(zone_name)isWritable()Segment not writableas it is READ_ONLYfalseCACHE_NOT_WRITABLE
@startuml
participant auth as ":b10-auth"
[-> auth: new/initial config\n(datasrc cfg)
activate auth
participant list as ":Configurable\nClientList"
create list
auth -> list: <<construct>>
auth -> list: configure(cfg)
activate list
participant CacheConfig as ":CacheConfig"
create CacheConfig
list -> CacheConfig: <<construct>> (cfg)
participant zt_segment as ":ZoneTable\nSegment\n(Mapped)"
create zt_segment
list -> zt_segment: <<construct>>
list -> zt_segment: isWritable()
activate zt_segment
note over zt_segment: Segment not writable\nwhen not reset
zt_segment --> list: false
deactivate zt_segment
deactivate list
auth -> list: getStatus()
activate list
list --> auth: DataSourceStatus[]
deactivate list
[<- auth: subscribe to\nmemmgr group
deactivate auth
...
[-> auth: command from\nmemmgr\n(datasrc_name,\nsegmentparam)
activate auth
auth -> list: resetMemorySegment\n(datasrc_name,\nREAD_ONLY,\nsegmentparam)
activate list
list -> zt_segment: reset\n(READ_ONLY,\nsegmentparam)
activate zt_segment
participant segment as "seg1:Memory\nSegment\n(Mapped)"
create segment
zt_segment -> segment: <<construct>>
deactivate zt_segment
deactivate list
deactivate auth
...
[-> auth: command from\nmemmgr\n(datasrc_name,\nsegmentparam)
activate auth
auth -> list: resetMemorySegment\n(datasrc_name,\nREAD_ONLY,\nsegmentparam)
activate list
list -> zt_segment: reset\n(READ_ONLY,\nsegmentparam)
activate zt_segment
zt_segment -> segment: <<destroy>>
destroy segment
participant segment2 as "seg2:Memory\nSegment\n(Mapped)"
create segment2
zt_segment -> segment2: <<construct>>
deactivate zt_segment
deactivate list
deactivate auth
...
[-> auth: reload\n(zonename)
activate auth
auth -> list: getCachedZoneWriter\n(zone_name)
activate list
list -> zt_segment: isWritable()
activate zt_segment
note over zt_segment: Segment not writable\nas it is READ_ONLY
zt_segment --> list: false
deactivate zt_segment
list --> auth: CACHE_NOT_WRITABLE
deactivate list
deactivate auth
@enduml
SEQUENCE DIAGRAM
5276177807704064
Transact24ResellerResellerCardDirectorAPICardDirectorAPIPrepare messageSign messageSend message(JSON POST request via HTTPS)Verify message's signatureProcessing (it's a long process)Prepare interim response messageSign interim response messageReturn interim response message (JSON) with status: processingVerify response message's signaturePrepare final response messageSign final response messageSend final response message (status code: success or fail) to reseller's callback URL(JSON POST request via HTTPS)Verify response message's signature
SEQUENCE DIAGRAM
5276786887753728
Transact24ResellerResellerCardDirectorAPICardDirectorAPIPrepare messageSign messageSend message(JSON POST request via HTTPS)Verify message's signatureProcessing (it's a long process)Prepare interim response messageSign interim response messageReturn interim response message (JSON) with status: processingVerify response message's signaturePrepare final response messageSign final response messageSend final response message (status code: success or fail) to reseller's callback URL(JSON POST request via HTTPS)Verify response message's signature
@startuml
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response
@enduml
SEQUENCE DIAGRAM
5282543486107648
la:LoadActionzw:ZoneWriterzd_new:ZoneDatanew:MemorySegment(Mapped):b10-memmgr:b10-memmgr:ConfigurableClientList:ConfigurableClientList:CacheConfig:CacheConfig:ZoneTableSegment(Mapped):ZoneTableSegment(Mapped)existing:MemorySegment(Mapped)existing:MemorySegment(Mapped)new:MemorySegment(Mapped):ZoneTable:ZoneTablezw:ZoneWriterla:LoadActionzd_existing:ZoneDatazd_existing:ZoneDatazd_new:ZoneDatareload(zonename)getCachedZoneWriter(zone_name)isWritable()truegetLoadAction()<<construct>>la:LoadActionla<<construct>> (la)zw:ZoneWriterzwload()(funcall)<<construct>> via helperszd_new:ZoneDatazd_newinstall()addZone(zd_new)zd_existing (old data)cleanup()<<destroy>>command tomodules(datasrc_name,segmentparam)ack from allmodulesresetMemorySegment(datasrc_name,READ_WRITE,segmentparam)reset(READ_WRITE,segmentparam)<<destroy>><<construct>>new:MemorySegment(Mapped)(repeat thesame sequencefor loading to theother segment)getCachedZoneWriter(zone_name)
SEQUENCE DIAGRAM
5287730464423936
la:LoadActionzw:ZoneWriterzd_new:ZoneDatanew:MemorySegment(Mapped):b10-memmgr:b10-memmgr:ConfigurableClientList:ConfigurableClientList:CacheConfig:CacheConfig:ZoneTableSegment(Mapped):ZoneTableSegment(Mapped)existing:MemorySegment(Mapped)existing:MemorySegment(Mapped)new:MemorySegment(Mapped):ZoneTable:ZoneTablezw:ZoneWriterla:LoadActionzd_existing:ZoneDatazd_existing:ZoneDatazd_new:ZoneDatareload(zonename)getCachedZoneWriter(zone_name)isWritable()truegetLoadAction()<<construct>>la:LoadActionla<<construct>> (la)zw:ZoneWriterzwload()(funcall)<<construct>> via helperszd_new:ZoneDatazd_newinstall()addZone(zd_new)zd_existing (old data)cleanup()<<destroy>>command tomodules(datasrc_name,segmentparam)ack from allmodulesresetMemorySegment(datasrc_name,READ_WRITE,segmentparam)reset(READ_WRITE,segmentparam)<<destroy>><<construct>>new:MemorySegment(Mapped)(repeat thesame sequencefor loading to theother segment)getCachedZoneWriter(zone_name)
@startuml
class Clients {
idClient
nom
}
class Etudiants {
idEtudiant
nom
dateNaissance
}
hide class circle
hide class methods
@enduml
CLASS DIAGRAM
5292103278002176
Elementowner : Elementvisibility : booleanselectRelationsOfTyperelationship queriesNamedElementname : SymbolProjectPackagemodelspackagesrelationship queriesAttributetype : Symbolsize : IntegerisRequired : BooleanMethodModelalias superclass, ownerattributesmethodssubclassespackagesrelationship queriesThe relationship queries method groupscall selectRelationshpOfTypeAm looking at making a relationshipcalled Superclass and a separaterelationship called Subclass.Yet these two are intimately connected.How should this symbiotic relationshipbe modeled?relationships0..*
CLASS DIAGRAM
5293709058899968
Elementowner : Elementvisibility : booleanselectRelationsOfTyperelationship queriesNamedElementname : SymbolProjectPackagemodelspackagesrelationship queriesAttributetype : Symbolsize : IntegerisRequired : BooleanMethodModelalias superclass, ownerattributesmethodssubclassespackagesrelationship queriesThe relationship queries method groupscall selectRelationshpOfTypeAm looking at making a relationshipcalled Superclass and a separaterelationship called Subclass.Yet these two are intimately connected.How should this symbiotic relationshipbe modeled?relationships0..*
@startuml
' ---------- Relationships ---------------
' Analyzer <|-- RubyAnalyzer
' Analyzer <|-- EmberAnalyzer
Element <|-- NamedElement
NamedElement <|-- Project
NamedElement <|-- Package
NamedElement <|-- Attribute
NamedElement <|-- Method
NamedElement <|-- Model
Element *- "0..*" Element : relationships
note left of Element
The relationship queries method groups
call selectRelationshpOfType
Am looking at making a relationship
called Superclass and a separate
relationship called Subclass.
Yet these two are intimately connected.
How should this symbiotic relationship
be modeled?
end note
' ---------- Class definitions ------------
' class Analyzer
' class RubyAnalyzer
' class EmberAnalyzer
class Element {
owner : Element
visibility : boolean
-- relationship queries --
selectRelationsOfType
}
class NamedElement {
name : Symbol
}
class Project
class Package {
-- relationship queries --
models
packages
}
class Attribute {
type : Symbol
size : Integer
isRequired : Boolean
}
class Model {
--
alias superclass, owner
-- relationship queries --
attributes
methods
subclasses
packages
}
@enduml
@startuml
actor Utilisateur as user
participant "formMeeting.js" as form <<Contrôleur formulaire>>
participant "Meeting.java" as controler <<(C,#ADD1B2) Contrôleur formulaire>>
participant "Mails.java" as email <<(C,#ADD1B2) Email>>
box "Application Web" #LightBlue
participant form
end box
box "Serveur Play" #LightGreen
participant controler
participant email
end box
user -> form : submitMeeting()
form -> form : getParameters()
form -> form : result = checkFields()
alt result
form -> controler : formMeeting(fields)
controler -> controler : result = checkFields()
alt result && Security.isConnected
controler -> controler : User user = User.getUser(Security.connected)
controler -> controler : Meeting meeting = new Meeting(fields,user)
controler -> controler : meeting.url = meeting.generateURL()
controler -> controler : meeting.save()
alt meeting == prive
controler -> controler : saveParticipants()
controler -> email : sendEmailToParticipants(particpants)
end
controler --> form : renderJSON(0)
form --> user : display information
else !result || !Security.isConnected
controler --> form : renderJSON(1)
form --> user : display error
end
else !result
form --> user : display error
end
@enduml