UserUserSystemSystemadd an objectloop[!validation]informations demandname, corresponding classloopadd a valueloop[!validation]informations demandcorresponding attribute, value
@startuml
actor User as U
participant System as S
U -> S: add an object
loop !validation
S -> U: informations demand
U --> S: name, corresponding class
end
loop
U -> S: add a value
loop !validation
S -> U: informations demand
U --> S: corresponding attribute, value
end
end
@enduml
SEQUENCE DIAGRAM
5412734816485376
babStarting processing25% done50% done100% doneDone with processing
SEQUENCE DIAGRAM
5415130737147904
babStarting processing25% done50% done100% doneDone with processing
@startuml
hide footbox
[-> a
create b
a -> b
activate b
note right: Starting processing
||25||
==25% done==
||25||
==50% done==
...
==100% done==
b --> a
note right: Done with processing
deactivate b
[<- a
@enduml
SEQUENCE DIAGRAM
5415130737147904
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
5418239219728384
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 User as U
participant System as S
U -> S: add an interface
loop !validation
S -> U: informations demand
U --> S: name, package
end
loop
U -> S: add a method
loop !validation
S -> U: information demand
U --> S: name, type, visibility, parameters
end
end
@enduml
@startuml
participant User
User -> A: DoWork
activate A #FFBBBB
A -> A: Internal call
activate A #DarkSalmon
A -> B: << createRequest >>
activate B
B --> A: RequestCreated
deactivate B
deactivate A
A -> User: Done
deactivate A
@enduml
@startuml
skinparam monochrome true
actor User
User -> Node: addMixin
Node --> User
User -> Session: save
Session -> ObjectManager: save()
ObjectManager -> Client: storeNodes()
Client -> NodeProcessor: process()
NodeProcessor -> VersionHandler: addVersionProperties()
VersionHandler --> NodeProcessor: additionalProperties
NodeProcessor --> Client: additionalProperties
Client --> ObjectManager
ObjectManager --> Session
Session --> User
@enduml
SEQUENCE DIAGRAM
5442685636706304
Cliente:Interface:Controlador:ChamadoaltAbrir chamadoAbrir chamadoabrirchamados() , dados do chamadoChamado registradoChamado registradoConsultar chamadoConsultar chamadoloop[Para cada chamado registrado pelo usuário]mostratelaprincipal()Chamado registrado pelo usuárioLista de Chamados
SEQUENCE DIAGRAM
5462279277510656
Cliente:Interface:Controlador:ChamadoaltAbrir chamadoAbrir chamadoabrirchamados() , dados do chamadoChamado registradoChamado registradoConsultar chamadoConsultar chamadoloop[Para cada chamado registrado pelo usuário]mostratelaprincipal()Chamado registrado pelo usuárioLista de Chamados
@startuml
Bob -> Alice : hello
create Other
Alice -> Other : new
create control String
Alice -> String
note right : You can also put notes!
Alice --> Bob : ok
@enduml
@startuml
hide footbox
title Footer removed
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response
@enduml
SEQUENCE DIAGRAM
5558976708083712
Users CRUD (Create Read Update Delete)UserUserWebUIWebUIOrchestraOrchestraLoginGET /user/login (auth d@f.com:pass)Get user from MongoDBOK 200{"status"=200"value"={"_id": "<uuid>", "name": "David Fischer", ...}}'Successfull login'Users TabGET /user/id/<uuid> (auth d@f.com:pass)Get user from MongoDBOK 200{"status"=200,"value"={"_id": "<uuid>", "name": "David Fischer", ...}}alt[if authenticated user has the admin_platform attribute]GET /user (auth d@f.com:pass)Get users from MongoDBOK 200{"status"=200,"value"=[{"_id": "<uuid>", "name": "David Fischer", ...}, ...]}<< Show the user and users listif authenticated user ... >>alt[if auth. user has the admin_platform attribute]Add an user (with add form)POST /user (auth d@f.com:pass) {"first_name": "Adi", "last_name": "Kouadio", ...}Save user to MongoDBOK 200{"status"=200,"value"={"_id": "<uuid_of_adi>", "name": "Adi Kouadio", ...}}<< Flash info message'The user "Adi Kouadio" has been added.' >>Edit an userPUT /user/id/<uuid_of_andres> {"admin_platform": false} (auth d@f.com:pass)Update user into MongoDBOK 200{"status"=200,"value"="The user \"Andrés Revuelta\" has been updated."}<< Flash info message'The user "Andrés Revuelta" has been updated.' >>Remove an userDELETE /user/id/<uuid_of_bram> (auth d@f.com:pass)Remove user from MongoDBOK 200{"status"=200,"value"="The user \"Bram Tullemans\" has been deleted."}<< Flash info message'The user "Bram Tullemans" has been deleted.' >>
SEQUENCE DIAGRAM
5559998373429248
Users CRUD (Create Read Update Delete)UserUserWebUIWebUIOrchestraOrchestraLoginGET /user/login (auth d@f.com:pass)Get user from MongoDBOK 200{"status"=200"value"={"_id": "<uuid>", "name": "David Fischer", ...}}'Successfull login'Users TabGET /user/id/<uuid> (auth d@f.com:pass)Get user from MongoDBOK 200{"status"=200,"value"={"_id": "<uuid>", "name": "David Fischer", ...}}alt[if authenticated user has the admin_platform attribute]GET /user (auth d@f.com:pass)Get users from MongoDBOK 200{"status"=200,"value"=[{"_id": "<uuid>", "name": "David Fischer", ...}, ...]}<< Show the user and users listif authenticated user ... >>alt[if auth. user has the admin_platform attribute]Add an user (with add form)POST /user (auth d@f.com:pass) {"first_name": "Adi", "last_name": "Kouadio", ...}Save user to MongoDBOK 200{"status"=200,"value"={"_id": "<uuid_of_adi>", "name": "Adi Kouadio", ...}}<< Flash info message'The user "Adi Kouadio" has been added.' >>Edit an userPUT /user/id/<uuid_of_andres> {"admin_platform": false} (auth d@f.com:pass)Update user into MongoDBOK 200{"status"=200,"value"="The user \"Andrés Revuelta\" has been updated."}<< Flash info message'The user "Andrés Revuelta" has been updated.' >>Remove an userDELETE /user/id/<uuid_of_bram> (auth d@f.com:pass)Remove user from MongoDBOK 200{"status"=200,"value"="The user \"Bram Tullemans\" has been deleted."}<< Flash info message'The user "Bram Tullemans" has been deleted.' >>
@startuml
skin BlueModern
title Users CRUD (Create Read Update Delete)
actor User
participant "WebUI" as W
participant "Orchestra" as O
'participant "Storage" as S
'participant "Transform" as T
'participant "Publisher" as P
User -> W: Login
activate W
W -> O: GET /user/login (auth d@f.com:pass)
activate O
O -> O: Get user from MongoDB
O --> W: <b>OK 200</b> {"status"=200\n "value"={"_id": "<uuid>", "name": "David Fischer", ...}}
deactivate O
W --> User: 'Successfull login'
deactivate W
User -> W: Users Tab
activate W
W -> O: GET /user/id/<uuid> (auth d@f.com:pass)
activate O
O -> O: Get user from MongoDB
O --> W: <b>OK 200</b> {"status"=200,\n "value"={"_id": "<uuid>", "name": "David Fischer", ...}}
deactivate O
alt if authenticated user has the admin_platform attribute
W -> O: GET /user (auth d@f.com:pass)
activate O
O -> O: Get users from MongoDB
O --> W: <b>OK 200</b> {"status"=200,\n "value"=[{"_id": "<uuid>", "name": "David Fischer", ...}, ...]}
deactivate O
end
W --> User: << Show the user and users list\nif authenticated user ... >>
deactivate W
alt if auth. user has the admin_platform attribute
User -> W: Add an user (with add form)
activate W
W -> O: POST /user (auth d@f.com:pass) {"first_name": "Adi", "last_name": "Kouadio", ...}
activate O
O -> O: Save user to MongoDB
O --> W: <b>OK 200</b> {"status"=200,\n "value"={"_id": "<uuid_of_adi>", "name": "Adi Kouadio", ...}}
deactivate O
W --> User: << Flash info message\n'The user "Adi Kouadio" has been added.' >>
deactivate W
User -> W: Edit an user
activate W
W -> O: PUT /user/id/<uuid_of_andres> {"admin_platform": false} (auth d@f.com:pass)
activate O
O -> O: Update user into MongoDB
O --> W: <b>OK 200</b> {"status"=200,\n "value"="The user \\"Andrés Revuelta\\" has been updated."}
deactivate O
W --> User: << Flash info message\n'The user "Andrés Revuelta" has been updated.' >>
deactivate W
User -> W: Remove an user
activate W
W -> O: DELETE /user/id/<uuid_of_bram> (auth d@f.com:pass)
activate O
O -> O: Remove user from MongoDB
O --> W: <b>OK 200</b> {"status"=200,\n "value"="The user \\"Bram Tullemans\\" has been deleted."}
deactivate O
W --> User: << Flash info message\n'The user "Bram Tullemans" has been deleted.' >>
deactivate W
end
@enduml
WearableWearableSmartphone_appSmartphone_appXenophile_serverXenophile_serverData requestData responseData requestData responseInternal callCreateRequestRequestCreatedServe user data
SEQUENCE DIAGRAM
5573425514938368
WearableWearableSmartphone_appSmartphone_appXenophile_serverXenophile_serverData requestData responseData requestData responseInternal callCreateRequestRequestCreatedServe user data
UserUserAppAppServerServerDatabaseDatabasereviw my profilemakeGetRequest()getUserProfile()ResultSetalt[login key is correct]HTTP Response(success:true, data)[else]HTTP Response(success:false)
SEQUENCE DIAGRAM
5597862805110784
UserUserAppAppServerServerDatabaseDatabasereviw my profilemakeGetRequest()getUserProfile()ResultSetalt[login key is correct]HTTP Response(success:true, data)[else]HTTP Response(success:false)
@startuml
actor User
User->App:reviw my profile
App->Server:makeGetRequest()
Server->Database:getUserProfile()
Database-->Server:ResultSet
alt login key is correct
Server-->App:HTTP Response(success:true, data)
else else
Server-->App:HTTP Response(success:false)
end
@enduml
SEQUENCE DIAGRAM
5597862805110784
Call DetailsICAPPRMotechMotechCallInitiationServicePinAuthenticationControllerVerboiceInteractionControllerIVR ServiceVerboicePatientPlatform Eventsfrom callinitiationinitiateCall()HTTP callcall Idring phone (SIP, etc.)HTTP status "ringing"next status URLanswer phoneHTTP status "in-progress"next status URLplay Motech musicenter pinHTTP authenticateresult=trueplay "yellow skin?"answer "yes"HTTP answerYES_YELLOW_SKIN_OR_EYESto encounterrecordingplay "abdominal pain?"answer "yes"HTTP answerYES_ABDOMINAL_PAIN_OR_VOMITINGplay "skin rash?"answer "no"HTTP answerNO_SKIN_RASH_OR_ITCHY_SKINplay "tingling?"answer "no"HTTP answerNO_TINGLING_OR_NUMBNESS_OF_HANDS_OR_FEETplay "goodbye"hang uphang upHTTP status "completed"next status URLHTTP status "Disconnect"next status URLEND_OF_CALL_EVENTto callinitiationICAPPR phone calls are implemented with an IVR service called Verboice.Patients enter PINs and respond to questions by pressing buttons on theirphones. Verboice sends these data to the ICAPPR Motech server viaHTTP requests, configured as Verboice "External Services", which arehandled by custom end points in within the ICAPPR module.(http://verboice.instedd.org/projects/228/external_services).Verboice also sends generic call status data to the ICAPPR Motech servervia HTTP requests, configured as Verboice status "Callbacks", which arehandled by the Motech platform's IVR module.
SEQUENCE DIAGRAM
5608825843351552
Call DetailsICAPPRMotechMotechCallInitiationServicePinAuthenticationControllerVerboiceInteractionControllerIVR ServiceVerboicePatientPlatform Eventsfrom callinitiationinitiateCall()HTTP callcall Idring phone (SIP, etc.)HTTP status "ringing"next status URLanswer phoneHTTP status "in-progress"next status URLplay Motech musicenter pinHTTP authenticateresult=trueplay "yellow skin?"answer "yes"HTTP answerYES_YELLOW_SKIN_OR_EYESto encounterrecordingplay "abdominal pain?"answer "yes"HTTP answerYES_ABDOMINAL_PAIN_OR_VOMITINGplay "skin rash?"answer "no"HTTP answerNO_SKIN_RASH_OR_ITCHY_SKINplay "tingling?"answer "no"HTTP answerNO_TINGLING_OR_NUMBNESS_OF_HANDS_OR_FEETplay "goodbye"hang uphang upHTTP status "completed"next status URLHTTP status "Disconnect"next status URLEND_OF_CALL_EVENTto callinitiationICAPPR phone calls are implemented with an IVR service called Verboice.Patients enter PINs and respond to questions by pressing buttons on theirphones. Verboice sends these data to the ICAPPR Motech server viaHTTP requests, configured as Verboice "External Services", which arehandled by custom end points in within the ICAPPR module.(http://verboice.instedd.org/projects/228/external_services).Verboice also sends generic call status data to the ICAPPR Motech servervia HTTP requests, configured as Verboice status "Callbacks", which arehandled by the Motech platform's IVR module.
@startuml
skinparam style strictuml
skinparam SequenceBoxBorderColor white
skinparam headerFontColor black
skinparam headerFontSize 12
Title Call Details
left header
ICAPPR phone calls are implemented with an IVR service called Verboice.
Patients enter PINs and respond to questions by pressing buttons on their
phones. Verboice sends these data to the ICAPPR Motech server via
HTTP requests, configured as Verboice "External Services", which are
handled by custom end points in within the ICAPPR module.
(http://verboice.instedd.org/projects/228/external_services).
Verboice also sends generic call status data to the ICAPPR Motech server
via HTTP requests, configured as Verboice status "Callbacks", which are
handled by the Motech platform's IVR module.
endheader
box "ICAPPR" #ghostwhite
participant CallInitiationService
participant PinAuthenticationController
participant VerboiceInteractionController
end box
box "Motech" #ivory
participant "IVR Service" as IVR
end box
participant "Verboice" as V
participant "Patient" as P
box "Motech" #ivory
participant "Platform Events" as Events
end box
note left of CallInitiationService : from call\ninitiation
CallInitiationService -> IVR : initiateCall()
activate IVR
IVR -> V : HTTP call
activate V
IVR <<-- V : call Id
deactivate IVR
V ->> P : ring phone (SIP, etc.)
V -> IVR : HTTP status "ringing"
activate IVR
V <<-- IVR : next status URL
deactivate IVR
V <<- P : answer phone
activate P
V -> IVR : HTTP status "in-progress"
activate IVR
V <<-- IVR : next status URL
deactivate IVR
V -> P : play Motech music
V <<-- P : enter pin
V -> PinAuthenticationController : HTTP authenticate
activate PinAuthenticationController
V <<-- PinAuthenticationController : result=true
deactivate PinAuthenticationController
V -> P : play "yellow skin?"
V <<-- P : answer "yes"
V -> VerboiceInteractionController : HTTP answer
activate VerboiceInteractionController
VerboiceInteractionController ->> Events : YES_YELLOW_SKIN_OR_EYES
deactivate VerboiceInteractionController
note right of Events : to encounter\nrecording
V -> P : play "abdominal pain?"
V <<-- P : answer "yes"
V -> VerboiceInteractionController : HTTP answer
activate VerboiceInteractionController
VerboiceInteractionController ->> Events : YES_ABDOMINAL_PAIN_OR_VOMITING
deactivate VerboiceInteractionController
V -> P : play "skin rash?"
V <<-- P : answer "no"
V -> VerboiceInteractionController : HTTP answer
activate VerboiceInteractionController
VerboiceInteractionController ->> Events : NO_SKIN_RASH_OR_ITCHY_SKIN
deactivate VerboiceInteractionController
V -> P : play "tingling?"
V <<-- P : answer "no"
V -> VerboiceInteractionController : HTTP answer
activate VerboiceInteractionController
VerboiceInteractionController ->> Events : NO_TINGLING_OR_NUMBNESS_OF_HANDS_OR_FEET
deactivate VerboiceInteractionController
V -> P : play "goodbye"
P -> P : hang up
deactivate P
V -> V : hang up
V -> IVR : HTTP status "completed"
activate IVR
V <<-- IVR : next status URL
deactivate IVR
V -> IVR : HTTP status "Disconnect"
activate IVR
V <<-- IVR : next status URL
deactivate V
IVR ->> Events : END_OF_CALL_EVENT
deactivate IVR
note right of Events : to call\ninitiation
@enduml
SEQUENCE DIAGRAM
5608825843351552
UserUserAppAppServerServerDatabaseDatabaseget all reviews of another usermakeGetRequest()gerReviewsForUser()ResultSetalt[user is found]HTTP Response(success:true, data)[else]HTTP Response(success:false)
SEQUENCE DIAGRAM
5610205735813120
UserUserAppAppServerServerDatabaseDatabaseget all reviews of another usermakeGetRequest()gerReviewsForUser()ResultSetalt[user is found]HTTP Response(success:true, data)[else]HTTP Response(success:false)
@startuml
actor User
User->App:get all reviews of another user
App->Server:makeGetRequest()
Server->Database:gerReviewsForUser()
Database-->Server:ResultSet
alt user is found
Server-->App:HTTP Response(success:true, data)
else else
Server-->App:HTTP Response(success:false)
end
@enduml
@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: DoWork
activate A
A -> B: << createRequest >>
activate B
B -> C: DoWork
activate C
C --> B: WorkDone
destroy C
B --> A: Request <u>Created</u>
deactivate B
A --> User: Done
deactivate A
@enduml