@startuml
title <u>Simple</u> communication example\non several lines
Alice -> Bob: Authentication Request
Bob -> Alice: Authentication Response
@enduml
@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
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
:ConfigurableClientList:CacheConfig:ZoneTableSegment(Mapped)seg1:MemorySegment(Mapped)seg2:MemorySegment(Mapped):bundy-auth:bundy-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
5327115582963712
:ConfigurableClientList:CacheConfig:ZoneTableSegment(Mapped)seg1:MemorySegment(Mapped)seg2:MemorySegment(Mapped):bundy-auth:bundy-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
hide footbox
actor SourceOp <<Operator>>
box "Source Endpoint"
participant "Flow Control" as FC
participant "Data Service" as DS
end box
box "Sink Endpoint"
participant "Remote Flow Control" as RFC
end box
actor SinkOp <<Operator>>
SourceOp -> SinkOp : notify ConnectionDetails
SourceOp -> FC : start()
activate FC
FC -> FC : bind socket
FC -> DS : start()
activate DS
SinkOp -> RFC : start()
activate RFC
RFC -> FC : connect
legend right
start() provides ConnectionDetails
previously exchanged by Operators
end legend
@enduml
SEQUENCE DIAGRAM
5343135542542336
AliceAliceTheFamousBobTheFamousBobAwell formatedmessageThis isdisplayedleft ofAlice.Thisisdisplayedleft ofAliceBob.This is hostedby(File not found: /var/lib/jetty/sourceforge.jpg)
SEQUENCE DIAGRAM
5346546551881728
AliceAliceTheFamousBobTheFamousBobAwell formatedmessageThis isdisplayedleft ofAlice.Thisisdisplayedleft ofAliceBob.This is hostedby(File not found: /var/lib/jetty/sourceforge.jpg)
@startuml
participant Alice
participant "The <b>Famous</b> Bob" as Bob
Alice -> Bob : A <i>well formated</i> message
note right of Alice
This is <back:cadetblue><size:18>displayed</size></back>
<u>left of</u> Alice.
end note
note left of Bob
<u:red>This</u> is <color #118888>displayed</color>
<b><color purple>left of</color> <s:red>Alice</strike> Bob</b>.
end note
note over Alice, Bob
<w:#FF33FF>This is hosted</w> by <img sourceforge.jpg>
end note
@enduml
SEQUENCE DIAGRAM
5346546551881728
WebExMgrServiceMgrCTCQuickStartDialogCTCQuickStartDialogCTCQuickStartSessionMgrCTCQuickStartSessionMgrCTCUIMgrCTCUIMgrCTCBOUIMgrCTCBOUIMgrCTCServiceMgrCTCServiceMgrCTCBOSessionMgrCTCBOSessionMgrCTCAppShareSessionMgrCTCAppShareSessionMgrCSmAppShareSessionMgrCSmAppShareSessionMgrOnShareDesktop"Click Quick Start : Share Application(IDC_SHARE_DESKTOP)"OnQSActionSendMessage(NEWQSID_SHAREAPPLICATION)OnBOMenuHandleSendMessage(ID_TC_SHARE_APPLICATION_BO)Â OnBOMenuHandleOnApplicationBOCreateBOShareSessionShowRunningAppDialogCTCAppShareSessionMgr public CSmAppShareSessionMgr
SEQUENCE DIAGRAM
5371689827303424
WebExMgrServiceMgrCTCQuickStartDialogCTCQuickStartDialogCTCQuickStartSessionMgrCTCQuickStartSessionMgrCTCUIMgrCTCUIMgrCTCBOUIMgrCTCBOUIMgrCTCServiceMgrCTCServiceMgrCTCBOSessionMgrCTCBOSessionMgrCTCAppShareSessionMgrCTCAppShareSessionMgrCSmAppShareSessionMgrCSmAppShareSessionMgrOnShareDesktop"Click Quick Start : Share Application(IDC_SHARE_DESKTOP)"OnQSActionSendMessage(NEWQSID_SHAREAPPLICATION)OnBOMenuHandleSendMessage(ID_TC_SHARE_APPLICATION_BO)Â OnBOMenuHandleOnApplicationBOCreateBOShareSessionShowRunningAppDialogCTCAppShareSessionMgr public CSmAppShareSessionMgr
@startuml
skinparam backgroundColor #EEEBDC
skinparam sequenceArrowColor DeepSkyBlue
skinparam sequenceParticipantBorderColor DeepSkyBlue
skinparam sequenceActorBorderColor DeepSkyBlue
skinparam sequenceLifeLineBorderColor blue
actor User
participant "First Class" as A
participant "Second Class" as B
participant "Last Class" as C
User -> A: DoMoreWork
activate A
@enduml
@startuml
scale 650 width
skinparam monochrome true
autonumber
== Sample Web Shop ==
actor Customer as "Customer"
participant App as "App"
participant Browser as "Mobile Browser"
participant WebServer as "Web Server"
participant Backend as "SEQR"
Customer->Browser: Open shop page
Browser->WebServer: GET /shop
WebServer-->Browser: Shop page
Customer->Browser: Add item to cart
Browser->WebServer: POST /shop/additem
WebServer-->Browser: Updated page
Customer->Browser: Go to checkout with SEQR
Browser->WebServer: GET /shop/checkout
== SEQR Payment ==
WebServer->Backend: sendInvoice
Backend-->WebServer: Invoice Reference
WebServer-->Browser: Checkout page \nwith SEQR link
Customer->Browser: Click SEQR link
Browser->App: Start SEQR App
activate App
App->Backend: Fetch invoice
Backend-->App: Invoice
App -> App: Show invoice details
activate App
Customer->App: Press 'confirm'
deactivate App
App->App: Show PIN dialog
activate App
Customer->App: Enter PIN code
App->Backend: Pay invoice
Backend-->App: Receipt
Backend-->WebServer: POST [notificationUrl]
WebServer->Backend: getPaymentStatus
Backend-->WebServer: PAID
deactivate App
App->App: Show payment confirmation
Customer->App: Press 'OK'
App->Browser: Open backURL
deactivate App
Browser-> WebServer: GET [backURL]
WebServer->Browser: Receipt page
@enduml
SEQUENCE DIAGRAM
5397656394268672
Card Application RecordT24 OperatorT24 OperatorCardDirector UICardDirector UIFDD/SDD CheckerFDD/SDD CheckerCard Application Record1Submit Applications2Create record for eachapplicationCard Application Recordloop[Until KYC pass, Review OK or Operator cancel application]3Submit KYC Checks4Do the KYC check process5Submittedalt[KYC pass]6KYC passopt[For QGen who may contact the card applicant for updating their personal information]7Send the updatedapplicant info8Create new revision with updated detailsand KYC files9PassedWait until scheduled time10Send a report ofcards passed KYC11Review the KYCstatusalt[Review OK]12Confirm the passedapplications13Proceed with further processing[Review not OK]14Update theapplication15Create new revision with updated detailsand KYC files16Request for anotherKYC check[KYC fail]17KYC fail18Failed19Send a report offailed KYC20Review the KYCstatus21Update the KYCdetails22Create new revision with updated detailsand KYC files23Request for anotherKYC check
SEQUENCE DIAGRAM
5398688528596992
Card Application RecordT24 OperatorT24 OperatorCardDirector UICardDirector UIFDD/SDD CheckerFDD/SDD CheckerCard Application Record1Submit Applications2Create record for eachapplicationCard Application Recordloop[Until KYC pass, Review OK or Operator cancel application]3Submit KYC Checks4Do the KYC check process5Submittedalt[KYC pass]6KYC passopt[For QGen who may contact the card applicant for updating their personal information]7Send the updatedapplicant info8Create new revision with updated detailsand KYC files9PassedWait until scheduled time10Send a report ofcards passed KYC11Review the KYCstatusalt[Review OK]12Confirm the passedapplications13Proceed with further processing[Review not OK]14Update theapplication15Create new revision with updated detailsand KYC files16Request for anotherKYC check[KYC fail]17KYC fail18Failed19Send a report offailed KYC20Review the KYCstatus21Update the KYCdetails22Create new revision with updated detailsand KYC files23Request for anotherKYC check
@startuml
autonumber
actor "T24 Operator" as t24_opr
participant "CardDirector UI" as cd_ui
participant "FDD/SDD Checker" as kyc_checker
t24_opr -> cd_ui : Submit Applications
create entity "Card Application Record" as app_record
cd_ui -> app_record : Create record for each \n application
loop Until KYC pass, Review OK or Operator cancel application
cd_ui -> kyc_checker : Submit KYC Checks
kyc_checker -> : Do the KYC check process
cd_ui -> app_record : Submitted
alt KYC pass
cd_ui <- kyc_checker : KYC pass
opt For QGen who may contact the card applicant for updating their personal information
cd_ui <- kyc_checker : Send the updated \n applicant info
cd_ui -> app_record : Create new revision with updated details \n and KYC files
end
cd_ui -> app_record : Passed
...Wait until scheduled time...
t24_opr <- cd_ui : Send a report of \n cards passed KYC
t24_opr -> cd_ui : Review the KYC \n status
alt Review OK
t24_opr -> cd_ui : Confirm the passed \n applications
cd_ui -> : Proceed with further processing
else Review not OK
t24_opr -> cd_ui : Update the \n application
cd_ui -> app_record : Create new revision with updated details \n and KYC files
t24_opr -> cd_ui : Request for another \n KYC check
end
else KYC fail
cd_ui <- kyc_checker : KYC fail
cd_ui -> app_record : Failed
t24_opr <- cd_ui : Send a report of \n failed KYC
t24_opr -> cd_ui : Review the KYC \n status
t24_opr -> cd_ui : Update the KYC \n details
cd_ui -> app_record : Create new revision with updated details \n and KYC files
t24_opr -> cd_ui : Request for another \n KYC check
end
end
@enduml
@startuml
Alice -> Bob: message 1
Bob --> Alice: ok
|||
Alice -> Bob: message 2
Bob --> Alice: ok
||45||
Alice -> Bob: message 3
Bob --> Alice: ok
@enduml
SEQUENCE DIAGRAM
5404269838598144
AliceAliceBobBobLogLogAuthentication Requestalt[successful case]Authentication Accepted[some kind of failure]Authentication FailureMy own labelLog attack startloop[1000 times]DNS AttackLog attack end[Another type of failure]Please repeat
SEQUENCE DIAGRAM
5410611357810688
AliceAliceBobBobLogLogAuthentication Requestalt[successful case]Authentication Accepted[some kind of failure]Authentication FailureMy own labelLog attack startloop[1000 times]DNS AttackLog attack end[Another type of failure]Please repeat
@startuml
Alice -> Bob: Authentication Request
alt successful case
Bob -> Alice: Authentication Accepted
else some kind of failure
Bob -> Alice: Authentication Failure
group My own label
Alice -> Log : Log attack start
loop 1000 times
Alice -> Bob: DNS Attack
end
Alice -> Log : Log attack end
end
else Another type of failure
Bob -> Alice: Please repeat
end
@enduml
SEQUENCE DIAGRAM
5410611357810688
audio_rxtx Interaction DiagramSender Shutdown On Incompatibilityprocprocsendersenderreceiverreceiver1configure & start2start listening for audio3configure & start4start offering audio5/offer6check compatibilty7/deny8stop offering audio9shutdown on incompatibility
SEQUENCE DIAGRAM
5410730543153152
audio_rxtx Interaction DiagramSender Shutdown On Incompatibilityprocprocsendersenderreceiverreceiver1configure & start2start listening for audio3configure & start4start offering audio5/offer6check compatibilty7/deny8stop offering audio9shutdown on incompatibility