@startuml
actor Utilisateur as user
participant "formSign.js" as form <<Contrôleur formulaire>>
participant "Sign.java" as controler <<(C,#ADD1B2) Contrôleur formulaire>>
participant "Secure.java" as secure <<(C,#ADD1B2) authentification>>
participant "Security.java" as security <<(C,#ADD1B2) sécurité>>
box "Application Web" #LightBlue
participant form
end box
box "Serveur Play" #LightGreen
participant controler
participant secure
participant security
end box
user -> form : submitSignIn()
form -> form : getParameters()
form -> form : result = checkFields()
alt result
form -> controler : formSignIn(email,pwd)
controler -> controler : result = checkFields()
alt result
controler -> secure : Secure.authenticate(email, pwd, true);
secure -> security : onAuthenticated()
security --> form : renderJSON(0);
form --> user : display main page
else !result
controler --> form : renderJSON(1)
form --> user : display error
end
else !result
form --> user : display error
end
@enduml
@startuml
note as n
ActiveRecord
("save yourself")
end note
class DAO{
{static} Entity find(id)
{static} List<Entity> findBy(criteria for select)
update(Entity)
save(Entity)
delete(Entity)
{static} Finder
}
Ballot --|> DAO
note left of Ballot
Ballot ballot = new Ballot( ... );
ballot.save();
end note
@enduml
@startuml
skinparam rectangle {
BackgroundColor DarkSeaGreen
FontStyle Bold
FontColor DarkGreen
}
:User: as u
rectangle Tool as t
rectangle "Knowledge Base" as kb
(Robot Framework) as rf
(DUT) as dut
note as ts
test script
end note
note as act
query
&
action
end note
note as t_cmt
- 执行测试脚本
- 按照知识库响应消息
end note
note as kb_cmt
- 根据当前消息确定响应方法
- 根据上下文填充消息
- 保存信息到相关上下文
end note
u --> rf
rf =right=> ts
ts =down=> t
kb <=left=> act
act <=up=> t
t = dut
t_cmt -- t
kb_cmt -left- kb
@enduml
@startuml
skinparam backgroundColor #EEEBDC
actor 使用者
participant " 頭等艙" as A
participant " 第二類" as B
participant " 最後一堂課" as 別的東西
使用者-> A: 完成這項工作
activate A
A -> B: 創建請求
activate B
B -> 別的東西: 創建請求
activate 別的東西
別的東西--> B: 這項工作完成
destroy 別的東西
B --> A: 請求創建
deactivate B
A --> 使用者: 做完
deactivate A
@enduml
@startuml
skin BlueModern
title Publish(er) Jobs Workers (Successful Block Copy)
'participant "WebUI" as W
participant "Orchestra" as O
participant "Storage" as S
'participant "Transform" as T
participant "Publisher" as P
activate O
P -> P: Startup (celeryd -Q queue_name)
activate P
P -> O: << get next publish job from queue >>
O --> P: << next publish job is ... >>
note right: <b>concurrency_value</b> jobs can be threated\nsimultaneously (multithreading)
P -> P: Launch new block copy
P -> S: << read media from medias path >>
activate S
S --> P: << read block 1/N from media >>
P --> P: << write block 1/N to local web path >>
P --> O: << update job status & statistics ... >>
S --> P: << read block 2/N from media >>
P --> P: << write block 2/N to local web path >>
S --> P: << read block N/N from media >>
P --> P: << write block N/N to local web path >>
S --> P: << end of file >>
deactivate S
P --> O: << update job status & statistics ... >>
P -> O: POST /publish/callback\n {"job_id": "<uuid_of_job>", "publish_uri": "...", "status": "SUCCESS"}
activate O
O -> O: Set media status=PUBLISHED + publish_uris[job_id]=publish_uri into MongoDB
O --> P: <b>OK 200</b> {"status": 200, value="Your work is much appreciated, thanks !"}
deactivate P
deactivate O
@enduml
@startuml
participant "app: Application" as app
participant "cm: ContentManager" as cm
participant "item: DownloadItem" as item
activate app
activate cm
note over app: User enters media info page
note over app: Check if item exists
app->cm: findItem(itemId)
cm->cm: lookup(itemId)
alt item found
cm-->app: item
else not found
cm-->app: null
app->cm: createItem(itemId, contentURL)
cm->item: new(itemId, contentURL)
activate item
cm-->app: item
app->cm: loadMetadata()
note over cm
Download and parse manifest, save in db
end note
cm-->app: onTracksAvailable
cm-->app: onDownloadMetadata
note over app: * See //track-selection// flow
end group
note over app: app is ready to start downloading
app->item: startDownload()
@enduml
@startuml
Alice -> Bob : message 1
Alice -> Bob : message 2
newpage
Alice -> Bob : message 3
Alice -> Bob : message 4
newpage A title for the\nlast page
Alice -> Bob : message 5
Alice -> Bob : message 6
@enduml
@startuml
autonumber
actor User as user
participant "Browser UI" as browser
participant "Reseller UI" as reseller_ui
user -> browser : Visit the Reseller UI login page
browser -> reseller_ui : Retrieve the Reseller UI login page
browser <- reseller_ui : Return the login page with form field \nusername, password, and One Time Password(OTP)
user <- browser : Display the page, wait for user input
user -> user: Recall username and password \nfrom memory
user -> browser : Fill in the username and password field
user -> user: Open Google Authenticator, \nread the OTP
user -> browser : Fill in the OTP, and hit the send button
browser -> reseller_ui : Send the username, password and OTP
reseller_ui -> reseller_ui : Verify the information is valid
alt Login valid
browser <- reseller_ui : Return the logged in page
user <- browser : Display the logged in page
else Login invalid
browser <- reseller_ui : Return login failure page
user <- browser : Display the login failure page
end
@enduml
@startuml
start
:Let entSet be a set of Entitlements to revoke;
:Add all dependent entitlements to entSet;
:Delete all dependent entitlements from database;
:Delete pools of entitlements
in entSet that are development pools;
:Update consumed quantity of entSet;
:Delete all entSet entitlements
from database;
:stackPools = filter Entitlements from entSet that
have stacking_id attribute;
partition for-each-entSet {
:stackPool = find stack pool
for entitlement;
:sSet = find all ents that have the
stacking_id;
:Update stackPool based on sSet;
}
:virtEnts = filter Entitlements from entSet that
have virt_limit and are for distributors;
partition for-each-virtEnts {
if (virt_limit == unlimited) then
-> YES;
:Set bonus pool quantity to -1;
else
-> NO;
:Add back reduced pool quantity;
endif
}
:mEnts = get all modifier
entitlements of entSet entitlements;;
:Lazily regenerate entitlement certificates
for all mEnts;
:Compute compliance status for all
Consumers that have an entitlement in entSet;
stop
@enduml
@startuml
skinparam monochrome true
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response
Alice -> Bob: Another authentication Request
Alice <-- Bob: another authentication Response
@enduml
@startuml
actor "Utilisateur"
"Utilisateur"-> Système: Demande de l'historique
"Utilisateur"<-- Système: Liste des fichiers
"Utilisateur"-> Système: Sélectionner un ou plusieurs\nfichier(s) et vérifier les URLs
"Utilisateur"<-- Système: Liste des URLs invalides\ndu/des fichier(s) sélectionné(s)
@enduml
@startuml
title DCP - Cahier des charges\n MOA : <b>obde</b> / MOE : <b>teamflat</b>
left to right direction
skinparam shadowing false
class "Role" as role
class "Adherent" as adherent
class "Materiel" as materiel
class "TypeMateriel" as type
class "Evenement" as evenement
class "Planning" as planning
class "Tache" as tache
class "Demande" as demande
class "Question" as question
class "SMSGroupe" as sms
evenement "1" -- "0..1" planning
evenement "1" -- "0..*" adherent
tache "1..*" -- "1" planning
tache "0..*" -- "0..*" adherent
role "0..1" -- "0..*" adherent
question "0..*" -- "1" adherent
sms "1..*" -- "0..*" adherent
role "0..*" -- "0..1" role : dirige
demande "0..*" - "1" evenement
adherent "0..*" - "1" demande
type "0..*" - "1" materiel
demande "1" - "0..*" materiel
@enduml
@startuml
start
:Init Phase;
:Transfer Phase;
note right
long running activity,
process requires signal to proceed
end note
:Termination Phase;
stop
@enduml
ACTIVITY DIAGRAM
4524739456401408
UserString idString nameString name()SpecificUser
CLASS DIAGRAM
4555562423418880
DCP - Cahier des chargesMOA :obde/ MOE :teamflatRoleAdherentMaterielTypeMaterielEvenementPlanningTacheDemandeQuestionSMSGroupe10..110..*1..*10..*0..*0..10..*0..*11..*0..*dirige0..*0..10..*10..*10..*110..*
CLASS DIAGRAM
4561383312064512
UtilisateurUtilisateurSystèmeSystèmeDemande de l'historiqueListe des fichiersSélectionner un ou plusieursfichier(s) et vérifier les URLsListe des URLs invalidesdu/des fichier(s) sélectionné(s)
Let entSet be a set of Entitlements to revokeAdd all dependent entitlements to entSetDelete all dependent entitlements from databaseDelete pools of entitlementsin entSet that are development poolsUpdate consumed quantity of entSetDelete all entSet entitlementsfrom databasestackPools = filter Entitlements from entSet thathave stacking_id attributefor-each-entSetstackPool = find stack poolfor entitlementsSet = find all ents that have thestacking_idUpdate stackPool based on sSetvirtEnts = filter Entitlements from entSet thathave virt_limit and are for distributorsfor-each-virtEntsvirt_limit == unlimitedYESNOSet bonus pool quantity to -1Add back reduced pool quantitymEnts = get all modifierentitlements of entSet entitlements;Lazily regenerate entitlement certificatesfor all mEntsCompute compliance status for allConsumers that have an entitlement in entSet
ACTIVITY DIAGRAM
4578856044331008
UserUserBrowser UIBrowser UIReseller UIReseller UI1Visit the Reseller UI login page2Retrieve the Reseller UI login page3Return the login page with form fieldusername, password, and One Time Password(OTP)4Display the page, wait for user input5Recall username and passwordfrom memory6Fill in the username and password field7Open Google Authenticator,read the OTP8Fill in the OTP, and hit the send button9Send the username, password and OTP10Verify the information is validalt[Login valid]11Return the logged in page12Display the logged in page[Login invalid]13Return login failure page14Display the login failure page
app: Applicationapp: Applicationcm: ContentManagercm: ContentManageritem: DownloadItemitem: DownloadItemUser enters media info pageCheck if item existsfindItem(itemId)lookup(itemId)alt[item found]item[not found]nullcreateItem(itemId, contentURL)new(itemId, contentURL)itemloadMetadata()Download and parse manifest, save in dbonTracksAvailableonDownloadMetadataSeetrack-selectionflowapp is ready to start downloadingstartDownload()
Publish(er) Jobs Workers (Successful Block Copy)OrchestraOrchestraStorageStoragePublisherPublisherStartup (celeryd -Q queue_name)<< get next publish job from queue >><< next publish job is ... >>concurrency_valuejobs can be threatedsimultaneously (multithreading)Launch new block copy<< read media from medias path >><< read block 1/N from media >><< write block 1/N to local web path >><< update job status & statistics ... >><< read block 2/N from media >><< write block 2/N to local web path >><< read block N/N from media >><< write block N/N to local web path >><< end of file >><< update job status & statistics ... >>POST /publish/callback{"job_id": "<uuid_of_job>", "publish_uri": "...", "status": "SUCCESS"}Set media status=PUBLISHED + publish_uris[job_id]=publish_uri into MongoDBOK 200{"status": 200, value="Your work is much appreciated, thanks !"}