[[BackLinksMenu]] [[TicketQuery(summary=PRO_CHANGE_PRIMITIVES_R0, format=table, col=summary|owner|status|type|component|priority|effort|importance, rows=description|analysis_owners|analysis_reviewers|analysis_score|design_owners|design_reviewers|design_score|implementation_owners|implementation_reviewers|implementation_score|test_owners|test_reviewers|test_score|)]] = Analysis = == Overview == Changes should be able to be decomposed into ProLib primitives. The set of ProLib primitives should have the following characteristics: * each primitive should be representable as a plain-text string of characters * all the primitives together should describe some sort of a language which should correspond to all the functionality which the ProLib provides * this way everything that happens inside Sophie 2 should be representable as some sort of a program written in this language * this program could then be easily: * transmitted to a server over the network * viewable and understandable for debugging purposes * converted to appropriate ProLib functions * Changes form the type of information that will be stored in the Histories responsible for logging Changes in ResourseSpaces This task is to develop a set of primitives which fulfils the requirements above. == Task requirements == * Primitives should include the following operations: * ''create'' * each object the ''create'' primitive creates should have a unique id * this primitive should be able to create a ProObject and return its id * or create a Property for a given ProObject and return its id * create a ProList and return its id * ''destroy'' * should destroy an object given its id * ''set'' * should be able to set a value to an object given its id * A few ProList operations should be available: * ''add'' * adds an object to a ProList given its id and position to be added to * ''remove'' * removes an object from a ProList given its id and position to be removed from * the ''set'' operation should be adapted to accept a ProList, object and a position and should assign the given object to the given position in the given ProList * All ids used should be unique * Synchronization problems with list operations should be considered * An idea for solving those problems should be proposed * Add more operations if needed * Describe Changes decomposition to Change primitives, its purpose and provide a use-case == Task result == * Rough implementation * Good description of the primitives * Use-case for the primitives with diagrams == Implementation idea == * For the use case describe what happens when a Sophie client is connected to a Sophie server and how the ChangeManagers running on both sides work together == Related == [wiki:PRO_CHANGE_COMMONS_R0] [[BR]] [wiki:PRO_CHANGE_TRANSACTION_SAFETY_R0] [[BR]] [wiki:PRO_CHANGE_COMPOSING_R0] [[BR]] [wiki:PRO_CHANGE_MANAGER_R0] [[BR]] [wiki:PRO_CHANGE_UNDO_MANAGER_R0] == How to demo == * Show primitives set description * Show and explain the use case = Design = = Implementation = = Testing = = Comments =