@startuml
skinparam activity {
FontColor white
AttributeFontColor white
FontSize 17
AttributeFontSize 15
AttributeFontname Droid Sans Mono
BackgroundColor #527BC6
BorderColor black
ArrowColor #222266
}
partition start {
(*) --> if "storage mounted &\nall configured ?" then
-right-> [No] "echo a warning"
--> (*)
else
--> "start Apache2"
--> if "started" then
--> [No] "exit 1"
--> (*)
else
--> if "screen\nrunning ?" then
-right-> [No] "launch Celeryd\nwith screen"
--> ===A===
else
--> [Yes] ===A===
endif
if "ok" then
--> [No] "exit 2"
--> (*)
else
--> [Yes] "sleep for 5 seconds"
if "screen running ?" then
--> [No] "exit 3"
--> (*)
else
--> [Yes] "echo a success"
--> (*)
endif
endif
endif
endif
}
@enduml
ACTIVITY DIAGRAM
5874921213263872
Git branch conventions in avdecc-libdevelopment sequenceDeveloperX'senvironmentDeveloperY'senvironmentupstream gitDeveloperXDeveloperXbranchin forked localDeveloperX's git repobranchin forked localDeveloperX's git repoDeveloperYDeveloperYbranchin forked localDeveloperY's git repobranchin forked localDeveloperY's git repostagingbranchin upstream repostagingbranchin upstream repomasterbranchin upstream repomasterbranchin upstream repoManagerManagerIn this example DeveloperX isworking on a new featurecommits changes to forked git repomany updatescompleted a new featuregit pull requestemailed pull requestdo merge to staginggit mergeemail request to test stagingemail request to test stagingDeveloperY is taking on the roleof tester in this exampleloop[until staging test signoff]pulls staging branch for testinggit pullcommits bugfixes to forked git repogit pull requestemailed pull requestdo merge to staginggit mergeSignoffs for staging tests collected from all partiesdo mergestaging merged to master branch
SEQUENCE DIAGRAM
5881612235440128
Git branch conventions in avdecc-libdevelopment sequenceDeveloperX'senvironmentDeveloperY'senvironmentupstream gitDeveloperXDeveloperXbranchin forked localDeveloperX's git repobranchin forked localDeveloperX's git repoDeveloperYDeveloperYbranchin forked localDeveloperY's git repobranchin forked localDeveloperY's git repostagingbranchin upstream repostagingbranchin upstream repomasterbranchin upstream repomasterbranchin upstream repoManagerManagerIn this example DeveloperX isworking on a new featurecommits changes to forked git repomany updatescompleted a new featuregit pull requestemailed pull requestdo merge to staginggit mergeemail request to test stagingemail request to test stagingDeveloperY is taking on the roleof tester in this exampleloop[until staging test signoff]pulls staging branch for testinggit pullcommits bugfixes to forked git repogit pull requestemailed pull requestdo merge to staginggit mergeSignoffs for staging tests collected from all partiesdo mergestaging merged to master branch
@startuml
title Git branch conventions in avdecc-lib\ndevelopment sequence
box "DeveloperX's\nenvironment" #LightBlue
actor DeveloperX
participant "branch\nin forked local\nDeveloperX's git repo" as LX
end box
box "DeveloperY's\nenvironment" #LightYellow
actor DeveloperY
participant "branch\nin forked local\nDeveloperY's git repo" as LY
end box
box "upstream git" #LightBlue
participant "<b>staging</b> branch\nin upstream repo" as S
participant "<b>master</b> branch\nin upstream repo" as M
end box
actor Manager
note over DeveloperX
In this example DeveloperX is
working on a new feature
end note
DeveloperX -> LX: commits changes to forked git repo
LX -> LX: many updates
DeveloperX -> LX: completed a new feature
LX -> S : git pull request
S -> Manager : emailed pull request
Manager -> S: do merge to staging
S -> S : git merge
Manager --> DeveloperX: email request to test staging
Manager --> DeveloperY: email request to test staging
note over DeveloperY
DeveloperY is taking on the role
of tester in this example
end note
loop until staging test signoff
S -> DeveloperY: pulls staging branch for testing
S -> LY: git pull
DeveloperY -> LY: commits bugfixes to forked git repo
LY -> S : git pull request
S -> Manager : emailed pull request
Manager -> S: do merge to staging
S -> S : git merge
end
==Signoffs for staging tests collected from all parties==
Manager -> S: do merge
S -> M: staging merged to master branch
@enduml
SEQUENCE DIAGRAM
5881612235440128
Overflow scenariobuffer1 : Bufferchunk1 : Bufferbuffer2 : Bufferchunk2 : BufferClientClientsome : Parsersome : Parserbuffer1 : Bufferbuffer2 : Bufferchunk1 : Bufferchunk2 : Bufferallocatebuffer1 : Bufferinitialize with buffer1readchunk1 : Bufferfeed chunk1pull n tokenssome tokenoverflowsecond token didn't fit into buffer1allocatebuffer2 : Bufferrealloc with buffer2some part of buffer1 may be copied to buffer2freepull n tokensstarvingreadchunk2 : Bufferfeed chunk2pull n tokenssome tokenstarving
SEQUENCE DIAGRAM
5884491742576640
Overflow scenariobuffer1 : Bufferchunk1 : Bufferbuffer2 : Bufferchunk2 : BufferClientClientsome : Parsersome : Parserbuffer1 : Bufferbuffer2 : Bufferchunk1 : Bufferchunk2 : Bufferallocatebuffer1 : Bufferinitialize with buffer1readchunk1 : Bufferfeed chunk1pull n tokenssome tokenoverflowsecond token didn't fit into buffer1allocatebuffer2 : Bufferrealloc with buffer2some part of buffer1 may be copied to buffer2freepull n tokensstarvingreadchunk2 : Bufferfeed chunk2pull n tokenssome tokenstarving
@startuml
skinparam activity {
BackgroundColor<<New>> Cyan
}
title test -
note left: test
(*) --> "test"
if "" then
-> [condition] ==IF1==
--> ==IF1M1==
-left-> ==IF1M2==
else
end if
--> ==IF1M2==
if "" then
-> [condition] ==IF2==
--> ==IF2M1==
-left-> ==IF2M2==
else
end if
--> ==IF2M2==
--> (*)
@enduml
ACTIVITY DIAGRAM
5890300820062208
la:LoadActionzw:ZoneWriterzd_new:ZoneDatanew:MemorySegment(Mapped):bundy-memmgr:bundy-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
5895559604862976
la:LoadActionzw:ZoneWriterzd_new:ZoneDatanew:MemorySegment(Mapped):bundy-memmgr:bundy-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
participant memmgr as ":bundy-memmgr"
[-> memmgr: reload\n(zonename)
activate memmgr
participant list as ":Configurable\nClientList"
memmgr -> list: getCachedZoneWriter\n(zone_name)
activate list
participant CacheConfig as ":CacheConfig"
participant zt_segment as ":ZoneTable\nSegment\n(Mapped)"
participant segment as "existing:Memory\nSegment\n(Mapped)"
participant segment2 as "new:Memory\nSegment\n(Mapped)"
list -> zt_segment: isWritable()
activate zt_segment
zt_segment --> list: true
deactivate zt_segment
list -> CacheConfig: getLoadAction()
activate CacheConfig
participant ZoneTable as ":ZoneTable"
participant ZoneWriter as "zw:ZoneWriter"
participant LoadAction as "la:LoadAction"
create LoadAction
CacheConfig -> LoadAction: <<construct>>
CacheConfig --> list: la
deactivate CacheConfig
create ZoneWriter
list -> ZoneWriter: <<construct>> (la)
list --> memmgr: zw
deactivate list
memmgr -> ZoneWriter: load()
activate ZoneWriter
ZoneWriter -> LoadAction: (funcall)
activate LoadAction
participant ZoneData as "zd_existing\n:ZoneData"
participant ZoneData2 as "zd_new\n:ZoneData"
create ZoneData2
LoadAction -> ZoneData2: <<construct>> via helpers
LoadAction --> ZoneWriter: zd_new
deactivate LoadAction
deactivate ZoneWriter
memmgr -> ZoneWriter: install()
activate ZoneWriter
ZoneWriter -> ZoneTable: addZone(zd_new)
activate ZoneTable
ZoneTable --> ZoneWriter: zd_existing (old data)
deactivate ZoneTable
deactivate ZoneWriter
memmgr -> ZoneWriter: cleanup()
activate ZoneWriter
ZoneWriter -> ZoneData: <<destroy>>
destroy ZoneData
deactivate ZoneWriter
[<- memmgr: command to\nmodules\n(datasrc_name,\nsegmentparam)
[--> memmgr: ack from all\nmodules
memmgr -> list: resetMemorySegment\n(datasrc_name,\nREAD_WRITE,\nsegmentparam)
activate list
list -> zt_segment: reset\n(READ_WRITE,\nsegmentparam)
activate zt_segment
zt_segment -> segment: <<destroy>>
destroy segment
create segment2
zt_segment -> segment2: <<construct>>
deactivate zt_segment
deactivate list
note left of memmgr: (repeat the\nsame sequence\nfor loading to the\nother segment)
memmgr -> list: getCachedZoneWriter\n(zone_name)
...
@enduml
SEQUENCE DIAGRAM
5895559604862976
Medias CRUD (Create ReadUpdateDelete)UserUserWebUIWebUIOrchestraOrchestraStorageStorageLoginGET /user/login (auth d@f.com:pass)Get user from MongoDBOK 200{"status"=200"value"={"_id": "<uuid>", "name": "David Fischer", ...}}'Successfull login'Medias Tabloop[every N seconds (AJAX)]GET /media (auth d@f.com:pass)Get medias from MongoDBOK 200{"status"=200,"value"=[{"_id": "<uuid>", "user_id": "<uuid>", ...}, ...]}<< Show/update medias list >>Add a media (with upload form, file transfer not shown)<< copy file into uploads path >><< operation terminated >>POST /media (auth d@f.com:pass){"uri": "glusterfs://...", "metadata": {"title": "Tabby"}, ...}<< check if file exist + rename & move it to medias path >><< operation terminated >>Save media (not the content (!)) to MongoDBOK 200{"status"=200,"value"={"_id": "<uuid_of_media>", "status": "READY", ...}}<< Flash info message'The media "Tabby" has been added.' >>Download a media<< read file from medias path >><< chunk 1/N of the file >><< chunk 2/N of the file >><< chunk N/N of the file >><< end of file >>alt[if auth. user is media's author (user._id == media.user_id)]Remove a mediaDELETE (auth d@f.com:pass) /media/id/<uuid_of_media>Set media status=DELETED into MongoDB<< delete file from medias path >><< operation terminated >>OK 200{"status"=200,"value"="The media \"Hotel Transylvania\" has been deleted."}<< Flash info message'The media "Hotel Transylvania" has been deleted.' >>
SEQUENCE DIAGRAM
5903267460546560
Medias CRUD (Create ReadUpdateDelete)UserUserWebUIWebUIOrchestraOrchestraStorageStorageLoginGET /user/login (auth d@f.com:pass)Get user from MongoDBOK 200{"status"=200"value"={"_id": "<uuid>", "name": "David Fischer", ...}}'Successfull login'Medias Tabloop[every N seconds (AJAX)]GET /media (auth d@f.com:pass)Get medias from MongoDBOK 200{"status"=200,"value"=[{"_id": "<uuid>", "user_id": "<uuid>", ...}, ...]}<< Show/update medias list >>Add a media (with upload form, file transfer not shown)<< copy file into uploads path >><< operation terminated >>POST /media (auth d@f.com:pass){"uri": "glusterfs://...", "metadata": {"title": "Tabby"}, ...}<< check if file exist + rename & move it to medias path >><< operation terminated >>Save media (not the content (!)) to MongoDBOK 200{"status"=200,"value"={"_id": "<uuid_of_media>", "status": "READY", ...}}<< Flash info message'The media "Tabby" has been added.' >>Download a media<< read file from medias path >><< chunk 1/N of the file >><< chunk 2/N of the file >><< chunk N/N of the file >><< end of file >>alt[if auth. user is media's author (user._id == media.user_id)]Remove a mediaDELETE (auth d@f.com:pass) /media/id/<uuid_of_media>Set media status=DELETED into MongoDB<< delete file from medias path >><< operation terminated >>OK 200{"status"=200,"value"="The media \"Hotel Transylvania\" has been deleted."}<< Flash info message'The media "Hotel Transylvania" has been deleted.' >>
@startuml
skin BlueModern
title Medias CRUD (Create Read <s>Update</s> 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: Medias Tab
activate W
loop every N seconds (AJAX)
W -> O: GET /media (auth d@f.com:pass)
activate O
O -> O: Get medias from MongoDB
O --> W: <b>OK 200</b> {"status"=200,\n "value"=[{"_id": "<uuid>", "user_id": "<uuid>", ...}, ...]}
deactivate O
W --> User: << Show/update medias list >>
end
deactivate W
User -> W: Add a media (with upload form, file transfer not shown)
activate W
W -> S: << copy file into uploads path >>
activate S
S --> W: << operation terminated >>
deactivate S
W -> O: POST /media (auth d@f.com:pass)\n {"uri": "glusterfs://...", "metadata": {"title": "Tabby"}, ...}
activate O
O -> S: << check if file exist + rename & move it to medias path >>
activate S
S --> O: << operation terminated >>
deactivate S
O -> O: Save media (not the content (!)) to MongoDB
O --> W: <b>OK 200</b> {"status"=200,\n "value"={"_id": "<uuid_of_media>", "status": "READY", ...}}
deactivate O
W --> User: << Flash info message\n'The media "Tabby" has been added.' >>
deactivate W
User -> W: Download a media
activate W
W -> S: << read file from medias path >>
activate S
W --> User: << chunk 1/N of the file >>
W --> User: << chunk 2/N of the file >>
W --> User: << chunk N/N of the file >>
S --> W: << end of file >>
deactivate S
deactivate W
alt if auth. user is media's author (user._id == media.user_id)
User -> W: Remove a media
activate W
activate O
W -> O: DELETE (auth d@f.com:pass) /media/id/<uuid_of_media>
O -> O: Set media status=DELETED into MongoDB
O -> S: << delete file from medias path >>
activate S
S --> O: << operation terminated >>
deactivate S
O --> W: <b>OK 200</b> {"status"=200,\n "value"="The media \\"Hotel Transylvania\\" has been deleted."}
deactivate O
W --> User: << Flash info message\n'The media "Hotel Transylvania" has been deleted.' >>
deactivate W
end
@enduml
SEQUENCE DIAGRAM
5903267460546560
This is a notefoo1This note is on severallinesand cancontainHTMLCalling the methodfoo()is prohibitedfoo2
ACTIVITY DIAGRAM
5906085495963648
This is a notefoo1This note is on severallinesand cancontainHTMLCalling the methodfoo()is prohibitedfoo2
@startuml
start
:foo1;
note left: This is a note
:foo2;
note right
This note is on several
//lines// and can
contain <b>HTML</b>
====
* Calling the method ""foo()"" is prohibited
end note
stop
@enduml
@startuml
title Dodawanie service
actor UI #red
box "Kontroler" #LightBlue
control kontroler
database kontrolerDB
end box
box "Monitor" #DarkSalmon
control monitor
database monitorDB
end box
autonumber
UI -> kontroler: POST /service
kontroler -> kontroler: Walidacja danych
alt dane poprawne
kontroler -> kontrolerDB: dodaj do bazy
kontroler -> monitor: POST /service
monitor -> monitor: Walidacja danych
alt dane poprane
monitor -> monitorDB: Dodaj do bazy
monitor --> kontroler: status 201
kontroler --> UI: status 201
else dane niepoprawne
monitor -> kontroler: status 400
kontroler --> UI: status 400
end
else danie niepoprawne
kontroler --> UI: status 400
end
@enduml
SEQUENCE DIAGRAM
5911127250698240
IModalDialogServiceShowModal() : bool?IModalDialogService`1TResult : T «get»
CLASS DIAGRAM
5914238149197824
IModalDialogServiceShowModal() : bool?IModalDialogService`1TResult : T «get»
@startuml
left to right direction
component "Приложение" as application
component "Авторизационный компонент Dropbox" as dropboxAuth
application --> dropboxAuth
@enduml
COMPONENT DIAGRAM
5914969367379968
" Main "" Record "" Delete "" Update "" Find "" Print "addressBookaddressBookaddressBookaddressBookaddressBookaddressBookaddressBookindexesaddressBook
COMPONENT DIAGRAM
5915947546181632
" Main "" Record "" Delete "" Update "" Find "" Print "addressBookaddressBookaddressBookaddressBookaddressBookaddressBookaddressBookindexesaddressBook
@startuml
Player -> Simon: Start Game
loop while ! end of game
Simon -> User: Show Sequence
Player -> Simon: Select Sequence
end
User -> Database: Send Score
@enduml
SEQUENCE DIAGRAM
5916087803707392
NodeIdeaQuestionEvidenceSourceKnowledgeraisesinspiressuggestsexistence ofdefineslack ofsuggests pathtowards new
CLASS DIAGRAM
5917793308377088
NodeIdeaQuestionEvidenceSourceKnowledgeraisesinspiressuggestsexistence ofdefineslack ofsuggests pathtowards new