-
Carsten Rose authoredCarsten Rose authored
lockExclusiveAlice.pu 1.73 KiB
@startuml
actor Alice #FFBBBB
== Exclusive Lock: single user, lock in time ==
Alice -> form: open page
form -> Alice: form
Alice -> Alice: edit (first change)
Alice -> dirty: action=lock
activate dirty #FFBBBB
dirty -> Alice: status=success, lock_timeout=<secs>
...
alt press 'save' or press 'save and close'
Alice -> save: POST form
save -> dirty: lock valid?
dirty -> save: yes
save -> save: save form
save -> dirty: action=release
deactivate dirty
save -> Alice: status=succes,redirect=client
|||
else press 'form close' or press 'back' and answer question 'Save? yes|no|cancel' with 'no'.
Alice -> dirty: action=release
dirty -> Alice: status=success
end
== Exclusive Lock: single user, lock expired ==
Alice -> form: open page
form -> Alice: form
Alice -> Alice: edit (first change)
Alice -> dirty: action=lock
activate dirty #FFBBBB
dirty -> Alice: status=success, lock_timeout=<secs>
...
Alice -> Alice: edit (more changes)
note over Alice: Client will extend lock automatically,\nif there are changes during last timeout period
Alice -> dirty: action=extend
dirty -> Alice: status=success
...
dirty -> dirty: lock expired
deactivate dirty
...
alt any user change in form
Alice -> dirty: action=extend
activate dirty
dirty -> Alice: status=success, lock_timeout=<secs>
deactivate dirty
|||
else press 'save' or press 'save and close'
Alice -> save: POST form
save -> dirty: lock valid?
dirty -> save: no
save -> dirty: extend lock
activate dirty
dirty -> save: ok
save -> save: save form
save -> dirty: action=release
deactivate dirty
save -> Alice: status=succes,redirect=client
|||
else press 'form close' or press 'back'
Alice -> dirty: action=release
dirty -> Alice: status=success
end
@enduml