= Concept locks = == Types of locking situations == 1. Concept map is locked 1. Concept map is read only 1. Concept map is locked, but concept to edit is a part of a CM locked by another user 1. Concept is viewed in the Vertex viewer 1. Concept is edited in InfoItems cockpit [[Image(locks.gif)]] == Lock policies == 1. One is not allowed to edit concepts in a read only CM (only view properties) 1. One is not allowed to save a CM/change CM properties for a read only CM 1. One is not allowed to edit concept properties if the concept is locked by another user (or the same user has open 2 edit dialogs for the same concept in different CMs) 1. One is allowed to add relations to a concept locked by another user 1. One is allowed to edit an unlocked concept that is in a CM locked by another user 1. One is allowed to add information items to the concept locked by another user 1. One is not allowed to edit II details if they are opened by another user (or the same user opened 2 II edit dialogs) 1. If a concept map is closed, CM locks must be removed 1. If the application is closed, all user's CM and concept locks must be removed 1. What to do if the the browser crashed? 1. Lock timeout has to be defined. Ideally it has to be as long as the user's session timout and cleaned up after the session is expired/closed = Saving concepts/CMs = == Saving concepts == 1. Once a concept is saved withing a locked CM the changes are reflected in the server-side model but not saved permanently (db) 1. Once a concept is saved from another editing point changes are saved in the model and in the db 1. If a new concept is created within a locked CM it is added to the server-side model and individual search index but not saved persistantly 1. If a new concept is created withing other editing points it is added to the server-side model, common search index and saved persistantly 1. If a concept in a CM was changed by another source (e.g. in a infoItems cockpit or VV) 1. User has to get a signs that concepts were changed 1. e.g. some symbol displayed as a concept icon 1. If user opens such a concept it has to be refreshed from the server 1. Flex-application should send "refresh"-requests periodically to get informed about changed concepts == Saving CMs == 1. All read-only CMs should get a flag "dirty" if the editing user saved/closed it 1. e.g. some symbol displayed 1. User can refresh the CM contents from the server 1. User can request a CM lock if the editing user closed the CM 1. Flex-application should send "refresh"-requests periodically to get informed about changed CMs 1. If the user closed a CM without saving, the server-side model has to be reverted