Abstract: The various embodiments of the present invention provide a method and system for managing collaborative authoring on a canvas. The method comprising receiving a request to collaborate on a canvas from an user, determining whether one or more viewports from a plurality of viewports are overlapping or are in vicinity to a viewport associated with the user by a client device and automatically sending a request to a collaboration server to lock at least one object in the viewport if the one or more viewports are overlapping or are in vicinity to the viewport. The method further comprises denying a request from a second user to collaborate on the at least one object in the canvas. Figure 1
CLIAMS:
1. A method of managing collaboration on a canvas, the method comprising:
receiving a request to collaborate on the canvas from -a user;
determining whether one or more viewports from a plurality of viewports are overlapping or are in vicinity to a viewport associated with the user by a client device; and
automatically sending a request to a collaboration server to lock at least one object in the viewport if the one or more viewports are overlapping or are in vicinity to the viewport.
2. The method of claim 1, further comprising:
receiving coordinates associated with each of the plurality of viewports from the collaboration server.
3. The method of claim 1, further comprising:
computing coordinates associated with the viewport associated with the user.
4. The method of claim 1, wherein determining whether the one or more viewports from the plurality of viewports are overlapping or are in vicinity to the viewport associated with the user comprises of:
determining whether any of the coordinates associated with the plurality of viewports are within a pre-determined threshold distance from the coordinates associated with the viewport; and
determining the one or more viewports from the plurality of viewports which are overlapping or are in vicinity to the viewport associated with the user if any of the coordinates associated with the plurality of viewports are within the pre-determined threshold distance.
5. The method of claim 1, further comprising:
sending events associated with collaboration on the at least one object in the viewport to the collaboration server when the one or more viewports from the plurality of viewports are in vicinity to the viewport associated with the user.
6. The method of claim 1, further comprising:
sending coordinates associated with collaboration on the at least one object in the viewport to the collaboration server when the one or more viewports from the plurality of viewports are in the vicinity to the viewport associated with the user.
7. The method of claim 1, further comprising:
receiving updates from the collaboration server when the one or more viewports from the plurality of viewports are in the vicinity to the viewport associated with the user.
8. A method for managing collaboration on a canvas, the method comprising: determining, by a collaboration server, at least one object in the canvas on which collaboration is being performed by a first user of a client device;
applying a locked state on the at least one object; and
denying a request from a second user to collaborate on the at least one object in the canvas.
9. The method of claim 8, wherein determining the at least one object in the canvas on which collaboration is being performed by the first user of the client device comprises:
receiving a request to apply a locked state on the at least one object from the client device of the first user;
determining coordinates of a viewport associated with the first user; and
determining the at least one object based on the coordinates of the viewport.
10. The method of claim 8, further comprising:
receiving events associated with collaboration on the at least one object from the client device of the first user;
determining one or more viewports that are in vicinity of the viewport associated with the first user; and
sending the events associated with collaboration on the at least one object to one or more client devices of users associated with the one or more viewports.
11. The method of claim 8, further comprising:
retrieving one or more changes associated with one or more objects associated with at least one viewport; and
displaying the one or more changes on one or more view ports, when the one or more users shift from one viewport to another viewport.
12. A system for managing collaboration on a canvas, the system comprising:
one or more client devices to provide collaboration on the canvas to a plurality of users; and
a collaboration server; wherein the collaboration server comprises:
a computation module adapted to determine whether at least one object in the canvas on which the collaboration is being performed; and
a locking module adapted to apply a locking state on the at least one object and deny a request from a second user to collaborate on the at least one object in the canvas.
13. The system of claim 12, wherein the one or more client devices comprises:
a co-ordinate computation module adapted for computing co-ordinates associated with the viewport associated with the user;
a collaboration module adapted for sending co-ordinates associated with collaboration on the at least one object in the viewport to the collaboration server when the one or more viewports from the plurality of viewports are in the vicinity to the viewport associated with the user ; and
a lock request module adapted for sending a request to lock the at least one object in the viewport to the collaboration server if the one or more viewports are overlapping or are in vicinity to the viewport and if the overlapping viewports or the viewports in the vicinity are within a pre-defined distance.
14. The system of claim 12, wherein the collaboration server further comprises of:
a communication module to establish communication with the plurality of client devices;
a co-ordinates database adapted for storing a plurality of co-ordinates associated with each of the plurality of viewports;
a co-ordinate computation module adapted for :
computing co-ordinates associated with the viewport of the user;
determining whether any of the coordinates associated with the plurality of viewports are within a pre-determined threshold distance from the coordinates associated with the viewport; and
determining the one or more viewports from the plurality of viewports which are overlapping or in vicinity to the viewport associated with the user if any of the coordinates associated with the plurality of viewports are within the pre-determined threshold distance; and
a collaboration module adapted for determining at least one object in the canvas on which collaboration is being performed by the first user of a client device.
15. The system of claim 12, wherein the collaboration server further comprises event notification module adapted for:
receiving events associated with collaboration on the at least one object from the client device of the first user; and
sending the events associated with collaboration on the at least one object to the one or more client devices of users associated with the one or more view ports.
16. The system of claim 12, wherein the co-ordinate computation module is further adapted for:
determining the co-ordinates of the viewport associated with the first user of the client device; and
determining the at least one object based on the co-ordinates of the viewport.
17. The system of claim 12, wherein the computation module is further adapted to store and retrieve one or more changes associated with one or more objects of the viewport. ,TagSPECI:FIELD OF THE INVENTION
The present invention generally relates to collaboration authoring and particularity relates to a method and system for providing partial lockless real time collaboration on a finite or an infinite editable or non-editable medium such as canvas.
BACKGROUND OF THE INVENTION
A canvas is a multi-dimensional space which allows a user to view, use or author at any co-ordinate. Multiple users can make use of the canvas in real time and hence the authoring can be singular or collaborative. A user can define his area of operation in the canvas. This area can be zoomed in/out to have different perspectives of the canvas. Further the canvas can be dragged by the user to have a view of or modify the elements in the canvas. Thus, the canvas, finite or infinite enables, honing of team efforts and widens its utility.
When a user defines an area of operation, creates a new object, or makes a change to an object on the canvas, or opens/closes his area of operation, a master copy of the canvas need to be updated at a server and these changes need to be reflected in all client/user devices. In case of collaborative authoring, overhead of managing canvas elements and synchronizing changes made by multiple users’ surfaces is of a major concern. There arises a need for concurrency control and locking of the elements on the canvas due to the real time access and modification by multiple users. This further incurs in the additional efforts of conflict resolution. Besides this continuous update of master copy/client copies of the canvas results in frequent and enormous data transfers.
Currently, object locking approach on the canvas sends continuous data to all collaborators through server and hence floods the collaborators with multiple incoming canvas update requests. Also the collaboration effort can become difficult and unmanageable when the users attempt to simultaneously modify the document. Moreover, managing a collaboration effort can be very time consuming. Also the current collaboration tools does not address the problem of handling incoherent view on progress, overwrites, loss of content, and lost time when having to manually assemble content submitted by various users.
SUMMARY OF THE INVENTION
The primary objective of the present invention is to provide a method and system for managing real-time collaboration on a canvas.
Another objective of the present invention is to provide a method and system for enabling collaboration on a canvas with advanced concurrency handling, faster resource update and speedy response from a plurality of collaborators.
Another objective of the present invention is to provide a method and system for reducing client device and server load during collaboration on a canvas.
Another objective of the present invention is to provide a method and system for improving the collaboration server response time to the client devices in real time collaboration on a canvas.
The various embodiments of the present invention disclose a method and system for managing collaboration on a canvas. The method comprises receiving a request from a user to collaborate on a canvas, determining by a client device, whether one or more viewports from a plurality of viewports are overlapping or are present in vicinity to a viewport associated with the user and automatically sending a request to lock at least one object in the viewport to a collaboration server if the one or more viewports are overlapping or are present in vicinity to the viewport such that a locked state is applied on the at least one object.
According to an embodiment of the present invention, the method further comprises at least one of receiving coordinates associated with each of the plurality of viewports from the collaboration server and computing coordinates associated with the viewport associated with the user.
According to an embodiment of the present invention, the method of determining whether one or more viewports from the plurality of viewports are overlapping or are present in vicinity to the viewport associated with the user comprises determining whether any of the coordinates associated with the plurality of viewports are within a pre-determined threshold distance from the coordinates associated with the viewport and determining the one or more viewports from the plurality of viewports which are overlapping or are present in vicinity to the viewport associated with the user if any of the coordinates associated with the plurality of viewports are within the pre-determined threshold distance.
According to an embodiment of the present invention, the method further comprises sending events associated with collaboration on the at least one object in the viewport to the collaboration server when the one or more viewports from the plurality of viewports are in vicinity to the viewport associated with the user and sending coordinates associated with collaboration on the at least one object in the viewport to the collaboration server when the one or more viewports from the plurality of viewports are in the vicinity to the viewport associated with the user and receiving updates from the collaboration server when the one or more viewports from the plurality of viewports are in the vicinity to the viewport associated with the user.
According to another embodiment herein, the method of managing collaboration on a canvas comprises determining, by a collaboration server, at least one object in the canvas on which collaboration is being performed by a first user of a client device, applying a locked state on the at least one object and denying a request from a second user to collaborate on the at least one object in the canvas.
According to another embodiment herein, the method of determining the at least one object in the canvas on which collaboration is being performed by the first user of the client device comprises receiving a request to apply a locked state on the at least one object from the client device of the first user, determining coordinates of a viewport associated with the first user and determining the at least one object based on the coordinates of the viewport.
According to another embodiment herein, the method further comprises of receiving events associated with collaboration on the at least one object from the client device of the first user, determining one or more viewports that are in vicinity of the viewport associated with the first use and sending the events associated with collaboration on the at least one object to one or more client devices of users associated with the one or more viewports.
According to an embodiment herein, the method further comprises of retrieving one or more changes associated with one or more objects corresponding to at least one viewport when the users shift from one viewport to another viewport and displaying the one or more changes on the current viewport of the user.
The embodiments herein further provide a system for managing collaboration on a canvas. The system comprises a collaboration server and one or more client devices in communication with the collaboration server to provide collaboration on the canvas to a plurality of users. The collaboration server comprises a computation module adapted to determine whether at least one object in the canvas on which the collaboration is being performed and a locking module adapted to apply a locking state on the at least one object and deny a request from a second user to collaborate on the at least one object in the canvas.
According to an embodiment herein, the one or more client devices comprises a co-ordinate computation module adapted for computing co-ordinates associated with the viewport associated with the user, a collaboration module adapted for sending co-ordinates associated with collaboration on the at least one object in the viewport to the collaboration server when the one or more viewports from the plurality of viewports are in the vicinity to the viewport associated with the user and a lock request module adapted for sending a request to lock the at least one object in the viewport to the collaboration server if the one or more viewports are overlapping or are in vicinity to the viewport and if the overlapping viewports or the viewports in the vicinity are within a pre-defined distance.
According to an embodiment herein, the collaboration server further comprises of a communication module to establish communication with the plurality of client devices, a co-ordinates database adapted for storing a plurality of co-ordinates associated with each of the plurality of viewports, a co-ordinate computation module adapted for computing co-ordinates associated with the viewport of the user, determining whether any of the coordinates associated with the plurality of viewports are within a pre-determined threshold distance from the coordinates associated with the viewport and determining the one or more viewports from the plurality of viewports which are overlapping or in vicinity to the viewport associated with the user if any of the coordinates associated with the plurality of viewports are within the pre-determined threshold distance. The sever further comprises a collaboration module adapted for determining at least one object in the canvas on which collaboration is being performed by the first user of a client device.
According to an embodiment herein, the collaboration server further comprises event notification module adapted for receiving events associated with collaboration on the at least one object from the client device of the first user and sending the events associated with collaboration on the at least one object to the one or more client devices of users associated with the one or more view ports.
According to an embodiment herein, the co-ordinate computation module is further adapted for determining the co-ordinates of the viewport associated with the first user of the client device and determining the at least one object based on the co-ordinates of the viewport.
According to an embodiment herein, the computation module is further adapted to store and retrieve one or more changes associated with one or more objects of the viewport.
The foregoing has outlined, in general, the various aspects of the invention and is to serve as an aid to better understanding the more complete detailed description which is to follow. In reference to such, there is to be a clear understanding that the present invention is not limited to the method or application of use described and illustrated herein. It is intended that any other advantages and objects of the present invention that become apparent or obvious from the detailed description or illustrations contained herein are within the scope of the present invention.
BRIEF DESCRIPTION OF THE DRAWINGS
Figure 1 illustrates a detailed block diagram of system for providing partial lockless real time collaboration on a canvas according to an embodiment herein.
Figure 2 is a flow diagram illustrating a communication between a collaboration server and a client device of a first user for collaboration on a canvas according to an embodiment herein.
Figure 3 is a flow diagram illustrating a communication between a collaboration server and a client device of a second user for collaboration on a canvas according to an embodiment herein.
Figure 4 is a flow diagram illustrating a signal flow for collaborative authoring between a server and at least two client devices, according to an embodiment herein.
Figure 5 is a flow diagram illustrating a communication between a collaboration server and a client device for managing collaboration on a canvas, according to another embodiment herein.
DETAILED DESCRIPTION OF THE INVENTION
The various embodiments of the present invention disclose a method and system for managing collaborative authoring on a canvas with advanced concurrency handling, faster resource update and speedy response from other collaborators, thereby reducing overhead on the client device and the collaboration server load. In the following detailed description of the embodiments of the invention, reference is made to the accompanying drawings that form a part hereof, and in which are shown by way of illustration specific embodiments in which the invention may be practiced. These embodiments are described in sufficient detail to enable those skilled in the art to practice the invention, and it is to be understood that other embodiments may be utilized and that changes may be made without departing from the scope of the present invention. The following detailed description is, therefore, not to be taken in a limiting sense, and the scope of the present invention is defined only by the appended claims.
Figure 1 illustrates a detailed block diagram of a system for partial lockless real time collaboration on a canvas according to an embodiment herein. As shown in Figure. 1, the system comprises at least two client devices 104A and 104B in communication with a collaboration server 102 for managing collaboration on the canvas. The collaboration server 102 comprises a memory unit 108 and a storage unit 110. The memory unit 108 comprises a collaboration module 114, a locking module 116, an event notification module 118 and a co-ordinate computation module 120. The collaboration module 114 is adapted to manage the processes of collaboration of a plurality of users on the canvas.
The collaboration module 114 determines the objects in the canvas on which the collaboration is being performed by a first user of a client device and denying a request from a second user to collaborate on the same object in the canvas. The locking module 116 is adapted to lock the object in the viewport based on the usage status. The event notification module 118 is adapted to receive one or more events associated with the collaboration of the objects from the client device of a first user and send these events to one or more client devices of other users associated with the view ports. The co-ordinate computation module 120 is adapted for computing co-ordinates associated with the viewport of the user, determining whether any of the coordinates associated with the plurality of viewports are within a pre-determined threshold distance from the coordinates associated with the viewport and determining the one or more viewports from the plurality of viewports which are overlapping or in vicinity to the viewport associated with the user if any of the coordinates associated with the plurality of viewports are within a pre-determined threshold distance.
The collaboration server 102 further comprises a storage unit 110 comprising a co-ordinate database 122, an event database 124 and a canvas database 126. The co-ordinate database 122 is configured for storing a plurality of co-ordinates of one or more viewports associated with the users. The events database 124 stores a plurality of events associated with the collaboration of the objects in the view ports associated with the user. The canvas database 126 is a master database storing the master copy of updated canvas. Further, the collaboration server 102 is provided with a communication module 112 adapted for establishing communication with the corresponding modules in the client devices 104A and 104B.
As illustrated in Figure 1, each of the client devices 104A and 104B is provided with a communication module 128, 148, a memory unit 130, 146 and a storage unit 138 and 156 respectively. The memory unit 130, 146 in each of the client device 104A and 104B comprises a collaboration module 132, 150, a lock request module 134, 152 and a co-ordinate computation module 136, 154. The lock request module 134, 152 is configured for generating a request to the collaboration server 102 to lock an object when one or more viewports are overlapping or are present in the vicinity of the viewport of a collaborating client device. The client storage unit 138, 156 maintains a local copy of the canvas along with a coordinate database 140, 158 and events database 142, 160.
Figure 2 is a flow diagram illustrating a communication between a collaboration server and a client device of a first user for collaboration on a canvas according to an embodiment herein. The collaboration server 104 broadcasts the coordinates of all the view ports to the client device 104A associated with a first user (202). The broadcasted co-ordinates are updated in the co-ordinate database 140 of the client device 104A. The client device 104A on receiving a request from a user to collaborate on a canvas (204) computes the co-ordinates of the viewport associated with the user (206). Further the co-ordinate computation module performs a check to find if any of the viewports are overlapping or are present in the vicinity to the viewport associated with the user (208). If any of the viewports are overlapping or are present in the vicinity, then the client device sends a request to lock the object in the viewport it is authoring (210). The collaboration server then locks the object for the client device 104A.
Figure 3 is a flow diagram illustrating a communication between a collaboration server and a client device of a second user for collaboration on a canvas according to an embodiment herein. The collaboration server 104 broadcasts the coordinates of all the view ports to the client device 104B associated with the second user (302). On receiving a request from the second user to collaborate on the canvas (304), the client device 104B sends a request to edit an object in a view port (306). The collaboration server 102 verifies if the object is locked by another collaborating client device (308). If the object is locked, then the collaboration server 102 sends a notification indicating an access denial for the object in the canvas.
Figure 4 is a flow diagram illustrating a signal flow for collaborative authoring between a server and at least two client devices, according to an embodiment herein. The client device 104A is in collaboration on a canvas (402). The client device 104B send event updates associated with collaboration on the objects in the viewport to the collaboration server 102 periodically (404). The collaboration server 102 verifies if any viewports are in the vicinity of the viewport associated with the user (406). The collaboration server 102 sends periodic updates to the corresponding client device 104B if any viewport are in vicinity to the viewport associated with the second user (408). According to an embodiment herein, the event updates herein comprises the effects which are rendered only when the viewport is overlapping or appear in vicinity due to a canvas drag or canvas zoom-out.
Figure 5 is a flow diagram illustrating a communication between a collaboration server and a client device for managing collaboration on a canvas, according to another embodiment herein. The collaboration server 104 broadcasts the coordinates of all the view ports to the client device 104A associated with a first user (502). The client device 104A on receiving a request from a user to collaborate on the canvas (504) computes the co-ordinates of the viewport and sends the co-ordinates to the collaboration server (506). The collaboration server 102 checks if there is any change in the co-ordinates of the view port (508). If there is a change in the co-ordinates, then the collaboration server 102 checks if any viewport is present in the vicinity to the viewport associated with the user (510). Further the collaboration server 102 sends the events associated with collaboration of the objects associated with the viewport to the client device 104A (512). According to an embodiment herein, the co-ordinates of the view port changes when the viewport of the client device in collaboration on the canvas is zoomed in or zoomed out or the canvas is dragged.
The embodiments herein comprises of a collaboration tool at each client device and a collaboration server. The client devices can communicate with each other using the collaboration server or directly using a peer-to-peer method. According to an embodiment herein each client device maintains coordinates of other client devices current viewport. The coordinates are chosen to be stored in any form, reference or area. For example, a client device can store viewport top-left or coordinates of all other client devices. Being a part of collaboration, the security settings of all the client devices allow other client devices to access their viewports’ coordinates. The same co-ordinate map of each client device is stored in the server as well. Each client device broadcasts its viewport co-ordinates to other client devices via the server whenever a user changes the viewport.
The embodiments of the present invention enables the actions done on an object by a first user to be sent in real-time to all the other users only if any other user’s viewport are in vicinity or overlapping with that of the first user’s viewport. Correspondingly, if a user is performing an action on an object on his viewport and the other users are performing actions on other objects in different viewports, then only end events (actions) are sent to the server and not all the real-time continuous events. This embodiment enables to save the network bandwidth by a great amount and thus a faster collaboration is enabled.
According to an embodiment herein, the client device can filter events based upon the criticality in time and performance to be sent to the collaboration server. Generally events such as insertion of an object or deletion of an object and lock request are sent immediately to the server as it would impact the content, whereas non-critical events like change of color, scale, etc can be sent after sending critical events.
The embodiments of the present invention enables accessing of an object locked by another person wherein the changes made can be sent to the object owner/content author for approval and negotiation.
The embodiments herein enable a collaborating device to can switch between authoring and presentation mode anytime without affecting other collaborating devices.
The collaboration server according to the embodiments herein acts as an authorized content storage media for storage and retrieval of authored content and the master copy of the canvas in the collaboration server is updated after a fixed time interval and/or when a new collaborator joins the session.
According to an embodiment herein, the actions performed on the viewport by an user comprises, but not limited to, drag, zoom-in, zoom-out, previous, next, slide-show etc. Here the action of drag implies to dragging of canvas to move in any direction with respect to the viewport, zoom-in and zoom-out implies enlarging or compressing the contents with respect to the viewport, previous or next allow presenter to navigate content in an orderly manner and slide-show allows presenter to run content automatically in an orderly or non-orderly manner in a fixed or non-fixed time interval.
Although the present embodiments have been described with reference to specific example embodiments, it will be evident that various modifications and changes may be made to these embodiments without departing from the broader spirit and scope of the various embodiments. Furthermore, the various devices, modules, analyzers, generators, and the like described herein may be enabled and operated using hardware circuitry, for example, complementary metal oxide semiconductor based logic circuitry, firmware, software and/or any combination of hardware, firmware, and/or software embodied in a machine readable medium. For example, the various electrical structure and methods may be embodied using transistors, logic gates, and electrical circuits, such as application specific integrated circuit.
| # | Name | Date |
|---|---|---|
| 1 | 2013_DMCG_460_Form 5.pdf | 2013-10-29 |
| 1 | 4856-CHE-2013-FER.pdf | 2019-09-23 |
| 2 | 2013_DMCG_460_Drawings.pdf | 2013-10-29 |
| 2 | 4856-CHE-2013-AMENDED DOCUMENTS [17-07-2019(online)].pdf | 2019-07-17 |
| 3 | 2013_DMCG_460_Complete Specification.pdf | 2013-10-29 |
| 3 | 4856-CHE-2013-FORM 13 [17-07-2019(online)].pdf | 2019-07-17 |
| 4 | 4856-CHE-2013-RELEVANT DOCUMENTS [17-07-2019(online)].pdf | 2019-07-17 |
| 4 | 4856-CHE-2013-Request For Certified Copy-Online(17-05-2014).pdf | 2014-05-17 |
| 5 | abstract 4856-CHE-2013.jpg | 2014-09-17 |
| 5 | 4856CHE2013_CS certified copy request.pdf | 2014-05-19 |
| 6 | 4856CHE2013_CS certified copy request.pdf | 2014-05-19 |
| 6 | abstract 4856-CHE-2013.jpg | 2014-09-17 |
| 7 | 4856-CHE-2013-RELEVANT DOCUMENTS [17-07-2019(online)].pdf | 2019-07-17 |
| 7 | 4856-CHE-2013-Request For Certified Copy-Online(17-05-2014).pdf | 2014-05-17 |
| 8 | 2013_DMCG_460_Complete Specification.pdf | 2013-10-29 |
| 8 | 4856-CHE-2013-FORM 13 [17-07-2019(online)].pdf | 2019-07-17 |
| 9 | 2013_DMCG_460_Drawings.pdf | 2013-10-29 |
| 9 | 4856-CHE-2013-AMENDED DOCUMENTS [17-07-2019(online)].pdf | 2019-07-17 |
| 10 | 4856-CHE-2013-FER.pdf | 2019-09-23 |
| 10 | 2013_DMCG_460_Form 5.pdf | 2013-10-29 |
| 1 | search_19-09-2019.pdf |