System and method for managing real-time multi-user collaboration in a file based cax application
Patent Information
- Application Number
- EP2024822093
- Authority / Receiving Office
- EP · EP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2023-12-07
- Filing Date
- 2024-11-22
- Publication Date
- 2026-09-09
AI Technical Summary
Existing file-based CAX applications lack the capability for real-time multi-user collaboration, leading to serialized editing and delays in project completion, as well as challenges in managing conflicts and inter-dependencies between files.
A method and system for managing real-time multi-user collaboration in a file-based CAX application, which involves receiving inputs from multiple user sessions, identifying conflicts, implementing conflict resolution logic, determining a chronological sequence of operations, and executing these operations on the CAX file while generating outputs in real-time.
Enables simultaneous editing of CAX files across multiple user sessions, reducing design time, eliminating the need for serialized editing, and allowing for real-time conflict resolution, thus facilitating agile design methodologies without requiring significant changes to business processes or risking data loss.
Smart Images

Figure US2024057139_12062025_PF_FP_ABST
Abstract
Description
SYSTEM AND METHOD FOR MANAGING REAL-TIME MULTI-USER COLLABORATION IN A FILE BASED CAX APPLICATION
[0001] The present patent document claims the benefit of Indian Patent Application No. 202331083408, filed December 7, 2023, which is hereby incorporated by reference in its entirety.TECHNICAL FIELD
[0002] The present disclosure relates to Computer-Aided Designing, and more particularly relates to a system and method for managing real-time multi-user collaboration in a file-based computer-aided technologies (CAX) application.BACKGROUND
[0003] For a majority of CAX software, data authored by a user of the CAX software is stored in files, hereinafter called CAX files. Typically, such CAX files comprise semantics and design intent embeddings associated with models designed by the user. Further, there may also exist inter- dependencies between data stored in multiple CAX files.
[0004] At present, a CAX file may only be edited sequentially in case of multiple designers. That is, each time a designer makes changes to the CAX file, he / she has to manually save the changes made in a respective user session, before the CAX file may be modified by another designer in another user session. In particular, another designer cannot see the changes made by the designer, unless the designer ‘saves’ the changes made to the CAX file. In other words, it is not possible for multiple designers to simultaneously edit a CAX file generated by a file based CAX application. Such serialized execution of changes may lead to delays in completion of a project. Further, it is also desirable to adopt collaborative and agile design methodologies with rapid design iterations. Lack of simultaneous editing capabilities hampers the adoption of such methodologies. In particular, if designers create conflicting design changes in different versions of a CAX file, conflicting design changes, if any, must be manually resolved. In case of inter-dependencies between files, changes made to a first CAX file may conflict with changes done in parallel to a second CAX file on which the first CAX file depends. These may result in conflicts leading to more iterations of the overall design process and thus, a longer design cycle time.
[0005] Due to the inability of existing file based CAX applications to facilitate real-time virtual collaboration between multiple users, some software companies chose to adopt cloud native browser-based Computer-Aided Design systems. Such cloud native browser-basedComputer-Aided Design systems rely on centralized databases for enabling collaboration between users of the CAX application. In particular, such CAD systems store data in a centralized database, and not in the form of files. However, migration from file based CAX application to database based CAX application mandates changes to business processes and significant investment. Further, a large amount of data stored in files may be lost during such migration.
[0006] In light of the above, there exists a need for a system and method for managing real-time multi-user collaboration in a file based CAX application.SUMMARY
[0007] The present disclosure relates to a method and system for managing real-time multi-user collaboration in a file based CAX application.
[0008] In an aspect, a method for managing real-time multi-user collaboration in a file based CAX application is disclosed. The method includes receiving, by a processing unit, a plurality of inputs indicative of a plurality of operations to be performed on one or more objects in a CAX file. Each of the inputs is received from one of a plurality of user sessions associated with the file based CAX application, in real time. In an embodiment, receiving the plurality of inputs indicative of the plurality of operations to be performed on one or more objects in the CAX file, further includes identifying whether a subsequent input and a preceding input are conflicting if the operation corresponding to each of the subsequent input and the preceding input is applicable to a common object in the CAX file, based on a persistent identifier corresponding to an object to which the operation corresponding to each of the subsequent input and the preceding input are to be applied. The subsequent input and the preceding input are conflicting if the subsequent input is received before the operation corresponding to the previous input is applied to the common object in the CAX file. Further, if the subsequent input and the preceding input are conflicting, a conflict resolution logic is implemented, upon applying the operation corresponding to the preceding input on the CAX file. In an embodiment, implementing the conflict resolution logic includes identifying the user session from which the subsequent input is received. Further, an instruction is provided to the identified user session for resolving the conflict.
[0009] The method further includes determining a chronological sequence of execution of each of the operations, based on order of receipt of each of the inputs. In an embodiment, determining the chronological sequence of execution of each of the operations includes maintaining, in real time, an operations queue comprising each of the operations stored in theorder of receipt of the inputs from the user sessions. The operations queue is a linear data structure comprising one or more data elements, each of which represent one of the operations.
[0010] The method further includes executing each of the operations on the CAX file, based on the chronological sequence of execution determined. In an embodiment, executing each of the operations on the CAX file, based on the chronological sequence of execution determined includes, sequentially accessing data elements in the operations queue, starting from the frontmost data element. In a further embodiment, sequentially accessing the data elements from the operations queue includes receiving one or more requests for accessing the operations queue from at least one of the user sessions. Further, each of the data elements in the operations queue is accessed, starting from the frontmost data element in the operations queue, in response to each of the requests received from at least one of the user sessions. Upon accessing each data element, the operation corresponding to the accessed data element is dynamically executing on the CAX file.
[0011] The method further includes generating an output, on each of the user sessions, based on execution of each of the operations on the CAX file in the chronological sequence.
[0012] In another aspect, a system for managing real-time multi-user collaboration in a file based CAX application includes a processing unit, and a memory unit communicatively coupled to the processing unit. The memory unit includes a virtual collaboration module configured to receive a plurality of inputs indicative of a plurality of operations to be performed on one or more objects in a CAX file. Each of the inputs is received from one of a plurality of user sessions associated with the file based CAX application, in real time. In an embodiment, in receiving the plurality of inputs indicative of the plurality of operations to be performed on one or more objects in the CAX file, the virtual collaboration module is further configured to identify whether a subsequent input and a preceding input are conflicting if the operation corresponding to each of the subsequent input and the preceding input is applicable to a common object in the CAX file, based on a persistent identifier corresponding to an object to which the operation corresponding to each of the subsequent input and the preceding input are to be applied. The subsequent input and the preceding input are conflicting if the subsequent input is received before the operation corresponding to the previous input is applied to the common object in the CAX file. Further, if the subsequent input and the preceding input are conflicting, the virtual collaboration module implements a conflict resolution logic, upon applying the operation corresponding to the preceding input onthe CAX file. In an embodiment, implementing the conflict resolution logic includes identifying the user session from which the subsequent input is received. Further, an instruction is provided to the identified user session for resolving the conflict.
[0013] The virtual collaboration module is further configured to determine a chronological sequence of execution of each of the operations, based on order of receipt of each of the inputs. In an embodiment, in determining the chronological sequence of execution of each of the operations, the virtual collaboration module is configured to maintain in real time, an operations queue comprising each of the operations stored in the order of receipt of the inputs from the user sessions. The operations queue is a linear data structure comprising one or more data elements, each of which represent one of the operations.
[0014] The virtual collaboration module is further configured to execute each of the operations on the CAX file, based on the chronological sequence of execution determined. In an embodiment, in executing each of the operations on the CAX file, based on the chronological sequence of execution determined, the virtual collaboration module is configured to sequentially access data elements in the operations queue, starting from the frontmost data element. In a further embodiment, sequentially accessing the data elements from the operations queue includes receiving one or more requests for accessing the operations queue from at least one of the user sessions. Further, each of the data elements in the operations queue is accessed, starting from the frontmost data element in the operations queue, in response to each of the requests received from at least one of the user sessions. Upon accessing each data element, the operation corresponding to the accessed data element is dynamically executing on the CAX file.
[0015] The virtual collaboration module is further configured to generate an output on each of user sessions, based on execution of each of the operations on the CAX file in the chronological sequence.
[0016] In yet another aspect, a non-transitory computer-readable storage medium having machine-readable instructions stored therein, that when executed by a system, cause the system to perform method of performing analysis of a geometric component in multi-domain collaboration simulation environments as described above.
[0017] This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the following description. It is not intended to identify features or essential features of the claimed subject matter. Furthermore, the claimed subject matter is not limited to implementations that solve any or all disadvantages noted in any partof this disclosure.BRIEF DESCRIPTION OF THE DRAWINGS
[0018] Figure l is a block diagram of an exemplary system for managing real-time multi-user collaboration in a file based CAX application, according to one embodiment.
[0019] Figure l is a schematic representation of a system for managing real-time multiuser collaboration in a file based CAX application, according to another embodiment.
[0020] Figure 3 illustrates a block diagram of a system for managing real-time multi-user collaboration in a file based CAX application, according to yet another embodiment.
[0021] Figure 4 is a process flowchart depicting an exemplary method of managing multi-user collaboration in a file based CAX application, according to one embodiment. DETAILED DESCRIPTION
[0022] The present disclosure relates to a method and system for managing real-time multi-user collaboration in a file based CAX application. Various embodiments are described with reference to the drawings, where like reference numerals are used in reference to the drawings. Like reference numerals are used to refer to like elements throughout. In the following description, numerous specific details are set forth in order to provide a thorough understanding of embodiments. These specific details need not be employed to practice embodiments. In other instances, well known materials or methods have not been described in detail in order to avoid unnecessarily obscuring embodiments. While the disclosure is susceptible to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the drawings and will herein be described in detail. There is no intent to limit the disclosure to the particular forms disclosed. Instead, the disclosure is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the present disclosure.
[0023] Figure 1 is a block diagram of an exemplary system 100 for managing real-time multi-user collaboration in a file based CAX application, according to one embodiment. The file based CAX application is any application that enables creation and modification of CAX files via one or more user sessions. The ‘CAX file’ is a file with extensions, including but not limited to, .prt, .fem, and .sim. In particular, CAX files store data pertaining to Computer- Aided Design models. The term ‘user session’ as used herein refers to a group of interactions between a user and an application during a given time-period. The time-period may be associated with starting and quitting the file based CAX application, by the user.
[0024] The system 100 may be a personal computer, workstation, laptop computer, tabletcomputer, and the like. In Figure 1, the system 100 includes a processing unit 102, a memory unit 104, a storage unit 106, a bus 108, an input unit 110, and a display unit 112.
[0025] The processing unit 102, as used herein, means any type of computational circuit, such as, but not limited to, a microprocessor, microcontroller, complex instruction set computing microprocessor, reduced instruction set computing microprocessor, very long instruction word microprocessor, explicitly parallel instruction computing microprocessor, graphics processor, digital signal processor, or any other type of processing circuit. The processing unit 102 may also include embedded controllers, such as generic or programmable logic devices or arrays, application specific integrated circuits, single-chip computers, and the like.
[0026] The memory unit 104 may be non-transitory volatile memory and non-volatile memory. The memory unit 104 may be coupled for communication with the processing unit 102, such as being a computer-readable storage medium. The processing unit 102 may execute instructions and / or code stored in the memory unit 104. A variety of computer- readable instructions may be stored in and accessed from the memory unit 104. The memory unit 104 may include any suitable elements for storing data and machine-readable instructions, such as read only memory, random access memory, erasable programmable read only memory, electrically erasable programmable read only memory, a hard drive, a removable media drive for handling compact disks, digital video disks, diskettes, magnetic tape cartridges, memory cards, and the like.
[0027] In the present embodiment, the memory unit 104 includes a collaboration module 114 stored in the form of machine-readable instructions on any of the above-mentioned storage media and may be in communication to and executed by the processing unit 102. The collaboration module 114 causes the processing unit 102 to manage real-time multi-user collaboration in a file based CAX application. In particular, the collaboration module 114 manages real-time multi-user collaboration in the CAX application by receiving a plurality of inputs indicative of a plurality of operations to be performed on one or more objects in a CAX file. Each of the inputs is received from one of a plurality of user sessions associated with the file based CAX application, in real time. Further, a chronological sequence of execution of each of the operations is determined, based on order of receipt of each of the inputs. Based on the chronological sequence of execution determined, each of the operations is executed on the CAX file. Subsequently, an output is generated on each of the user sessions, based on execution of each of the operations on the CAX file in the chronologicalsequence.
[0028] The storage unit 106 may be a non-transitory storage medium which stores a database 116. The database 116 stores persistent identifiers associated with objects present in a CAE models, along with relationships between the objects. The input unit 110 may include input devices such as keypad, touch-sensitive display, camera (such as a camera receiving gesture-based inputs), etc. capable of receiving inputs indicative of the operations to be performed on the CAX file, from the plurality of user sessions. The display unit 112 may be a device with a graphical user interface displaying options associated with creating and editing CAD models corresponding to specific CAX files. The bus 108 acts as interconnect between the processing unit 102, the memory unit 104, the storage unit 106, the input unit 110, and the display unit 112.
[0029] Those of ordinary skilled in the art will appreciate that the hardware components depicted in Figure 1 may vary for particular implementations. For example, other peripheral devices such as an optical disk drive and the like, Local Area Network (LAN) / Wide Area Network (WAN) / Wireless (e.g., Wi-Fi) adapter, graphics adapter, disk controller, input / output (I / O) adapter also may be used in addition to or in place of the hardware depicted. The depicted example is provided for the purpose of explanation only and is not meant to imply architectural limitations with respect to the present disclosure.The system 100 in accordance with an embodiment of the present disclosure includes an operating system employing a graphical user interface. The operating system permits multiple display windows to be presented in the graphical user interface simultaneously with each display window providing an interface to a different application or to a different instance of the same application. A cursor in the graphical user interface may be manipulated by a user through the pointing device. The position of the cursor may be changed and / or an event such as clicking a mouse button, generated to actuate a response.
[0030] Figure 2 is a schematic representation of a system 200 for managing real-time multi-user collaboration in a file based CAX application, according to another embodiment. Particularly, the system 200 includes a cloud computing system 202 configured for providing cloud services for real-time multi-user collaboration on a CAX file.
[0031] The cloud computing system 202 includes a cloud communication interface 206, cloud computing hardware and OS 208, a cloud computing platform 210, the virtual collaboration module 114, and the database 116. The cloud communication interface 206 enables communication between the cloud computing platform 210, and user devices 212A-Nsuch as smart phone, tablet, computer, etc. via a network 204.
[0032] The cloud computing hardware and OS 208 may include one or more servers on which an operating system (OS) is installed and includes one or more processing units, one or more storage devices for storing data, and other peripherals required for providing cloud computing functionality. The cloud computing platform 210 is a platform which implements functionalities such as data storage, data analysis, data visualization, data communication on the cloud hardware and OS 208 via APIs and algorithm; and delivers the aforementioned cloud services using cloud-based applications (e.g., Computer-Aided Engineering applications). The cloud computing platform 210 employs the virtual collaboration module 114 for providing services related to real-time multi-user collaboration in the file based CAX application as described in Figure 1. The cloud computing platform 210 also includes the database 116 for storing data associated with the operations required by the user sessions, user session data etc. In particular, the data is stored during the duration of a virtual collaboration session and deleted afterwards. It must be understood that the CAX files are stored in their original storage location, and not moved to the cloud computing platform for enabling the virtual collaboration. Advantageously, this ensures that the security of the CAX files is not compromised.
[0033] The user devices 212A-N include graphical user interfaces 214A-N for managing real-time multi-user collaboration in the file based CAX application. Each of the user devices 212A-N may be provided with a communication interface for interfacing with the cloud computing system 202. Users (e.g., CAD users) of the user devices 212A-N can access the cloud computing system 202 via the graphical user interfaces 214A-N. The graphical user interfaces 214A-N may be specifically designed for accessing the virtual collaboration module 114 in the cloud computing system 202.
[0034] Figure 3 illustrates a block diagram of a system 300 for managing real-time multi-user collaboration in the file based CAX application, according to yet another embodiment. Particularly, the product management system 300 includes a server 302 and a plurality of user devices 306A-N. Each of the user devices 306A-N is connected to the server 302 via a network 304 (e.g., Local Area Network (LAN), Wide Area Network (WAN), WiFi, etc.). The system 300 is another implementation of the system 100 of Figure 1, in which the virtual collaboration module 114 resides in the server 302 and is accessed by user devices 306A-N via the network 304.
[0035] The server 302 includes the virtual collaboration module 114 and the database116. The server 302 may also include a processing unit (not shown), a memory unit (not shown), and a storage unit (not shown). The virtual collaboration module 114 may be stored on the memory unit in the form of machine-readable instructions and executable by the processing unit. The database 116 may be stored in the storage unit. The server 302 may also include a communication interface for enabling communication with user devices 306A-N via the network 304.
[0036] Figure 4 is a process flowchart 400 depicting an exemplary method managing real-time multi-user collaboration in a file based CAX application, in accordance with an embodiment. It is to be understood that the system and methods described herein may be implemented in various forms of hardware, software, firmware, special purpose processing units, or a combination thereof. One or more of the present embodiments may take a form of a computer program product including program modules accessible from computer-usable or computer-readable medium storing program code for use by or in connection with one or more computers, processing units, or instruction execution system.
[0037] For the purpose of this description, a computer-usable or computer-readable medium may be any apparatus that may contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. The medium may be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation mediums in and of themselves as signal carriers are not included in the definition of physical computer-readable medium including a semiconductor or solid state memory, magnetic tape, a removable computer diskette, random access memory (RAM), a read only memory (ROM), a rigid magnetic disk, optical disk such as compact disk read-only memory (CD-ROM), compact disk read / write, and digital versatile disc (DVD) or any combination thereof. Both processing units and program code for implementing each aspect of the technology may be centralized or distributed (or a combination thereof) as known to those skilled in the art.
[0038] The method may begin by setting up of a virtual collaboration session between a plurality of user sessions. For example, a ‘Collaborate’ option may be provided on a user session of the file based CAX application, for one or more CAX files. The user of the user session may initiate the virtual collaboration by selecting the ‘Collaborate’ option. Further, the user session may enable the user to invite one or more other users to collaborate on the one or more CAX files, for example, by adding email IDs of the one or more other users. The one or more other users may further receive a hyperlink to access the one or more CAX files,via their emails. Upon accessing the hyperlink, further user sessions are created for each of the other user sessions. The plurality of user sessions thus created enable access to the CAX file for the plurality of users. In another example, the users may also collaborate via an application sharing apps that enable remote sharing of screen views between users.
[0039] At step 402, a plurality of inputs indicative of a plurality of operations to be performed on one or more objects in a CAX file are received, by a processing unit. Each input may include an indication of the operation to be performed on the object, and a persistent identifier associated with the object. The persistent identifier uniquely identifies each object in the CAX file. In an implementation, the user may use an input device to select the object by clicking on the graphical representation of the object provided on the respective user interface. Further, the operation to be performed on the object may be selected by clicking on an icon corresponding to the operation, from a set of icons provided on the user interface. Based on the selections made by the user, the respective user session may automatically identify the operation and the persistent identifier of the object. The user session may further automatically generate a message indicative of the operation and the persistent identifier, which is then provided to the processing unit as input.
[0040] Each of the inputs is received from one of a plurality of user sessions of the file based CAX application, in real time. For example, the CAX application may be accessed by a first user and a second user via client devices A and B, respectively. The first client device A may access the CAX application via a first user session. The second client device B may access the CAX application via a second user session. Both the first user session and the second user session may be associated with working on a common CAX file. In an implementation, the common CAX file may be stored in a remote storage location, for example, a cloud storage, a Product Lifecycle Management (PLM) system, or Product Data Management (PDM) system that may be accessed via the first client device A and the second client device B. In another implementation, the CAX file may be stored on the first client device A, which may allow remote access by the second client device B, or vice versa.
[0041] In an example, receiving the plurality of inputs may include receiving a first input indicative of at least one first operation to be performed on a CAX file via the first user session of a CAX application, and a second input indicative of at least one second operation to be performed on the CAX file via the second user session, of the CAX application in real time. In another example, both the first input and the second input may be received from one of the first user session and the second user session. It must be understood by a person skilledin the art that although the present disclosure is explained with reference to a first user session and a second user session, the present disclosure may be applicable in any scenario involving a plurality of user sessions accessing a common CAX file. Further, the processing unit may receive a plurality of inputs, indicative of operations to be performed on the CAX file, from each of the user sessions, in any order.
[0042] In a further embodiment, receiving the plurality of inputs indicative of the plurality of operations to be performed on the one or more objects in the CAX file includes identifying whether a subsequent input and a preceding input are conflicting if the operation corresponding to each of the subsequent input and the preceding input is applicable to a common object in the CAX file, based on a persistent identifier corresponding to an object to which the operation corresponding to each of the subsequent input and the preceding input are to be applied. In particular, the subsequent input and the preceding input are conflicting if the subsequent input is received before the operation corresponding to the previous input is applied to the common object in the CAX file. For example, a first input received from the first user session may correspond to a chamfer operation to be performed on an object. The object may be a cube, and the chamfer operation may be intended for application to an edge say ‘El’ of the cube. Similarly, a second input received from the second user session may correspond to a ‘blend operation’ that may be intended for application to a corner Cl on an edge El of the cube Therefore, if the subsequent input and the preceding input are conflicting, a conflict resolution logic is implemented upon applying the operation corresponding to the preceding input on the CAX file.
[0043] In an embodiment, implementing the conflict resolution logic includes identifying the user session from which the subsequent input is received. Further, the identified user session is provided with an instruction for resolving the conflict. In the present example, the preceding input is from the first user session and corresponds to chamfer operation, and the subsequent input is from the second user session and corresponds to the blend operation. It must be appreciated that if the subsequent input is received before executing the chamfer operation, the blend operation corresponding to the subsequent input is prevented from being applied to the CAX file before the chamfer operation is applied. In the present example, the conflict resolution logic identifies that the subsequent input is from the second user session. Therefore, an instruction is provided to the second user session for resolving the conflict. In a preferred embodiment, the instruction may be associated with undoing the subsequent input before applying the operation corresponding to the preceding input. Further, the operationcorresponding to the preceding input is applied, followed by the operation corresponding to the subsequent input. For example, the subsequent input may be undone by storing the subsequent input in a temporary storage location, until the operation corresponding to the preceding input is executed on the CAX file.
[0044] At step 404, a chronological sequence of execution of each of the operations is determined, based on order of receipt of each of the inputs. It may be understood by a person skilled in the art changing the order of application of the operations on the object leads to varying outcomes. Therefore, determination of chronological sequence of execution enables application of operations on the CAX file in the desired order for achieving a desired outcome. In an embodiment, determining the chronological sequence of execution of the operations includes maintaining, in real time, an operations queue comprising each of the operations stored in the order of receipt of the inputs from the user sessions. The operations queue is a linear data structure comprising one or more data elements, each of which represent one of the operations. In an implementation, the data elements in the operations queue, may be stored sequentially in consecutive storage locations in the memory unit based on the order of receipt of the inputs. In an example, the operations queue may store data elements indicative of machine-interpretable commands corresponding to each of the operations. In a preferred embodiment, the operations queue is instantiated when a virtual collaboration session is set up between a plurality of user sessions. Each time an input is received form one of the user sessions, the operations queue is enqueued or added with a data element corresponding to the operation indicated in the input. In the present example, the first input corresponding to the chamfer operation may be received from the first user session before the second input corresponding to the blend operation. Consequently, the chamfer operation precedes the blend operation in the operations queue. Therefore, in the chronological sequence of execution, the chamfer operation must be performed on the edge El before the blend operation.
[0045] At step 406, each of the operations on the CAX file is executed, based on the chronological sequence of execution determined at step 404. In an embodiment, executing each of the operations on the CAX file, based on the chronological sequence of execution determined includes sequentially accessing the data elements in the operations queue, starting from the frontmost data element. In other words, the oldest operation in the operations queue is accessed first. In an embodiment, sequentially accessing data elements from the operations queue includes receiving one or more requests for accessing the operations queue from atleast one of the user sessions. Further, the data elements in the operations queue, starting from the frontmost data element in the operations queue, in response to each of the requests received from at least one of the user sessions. That is, with each request received from at least one of the user sessions, the access operation advances to the next data element in the operations queue, thereby facilitating sequential access. In the present example, the operations queue may be queried by the first user session or the second user session at any time. If the operations queue comprises data elements corresponding to ‘Chamfer operation,’ ‘Blend operation,’ Upon accessing each data element, the operation corresponding to the accessed data element is dynamically executed on the CAX file. In an implementation, each of the user sessions may query the operations queue over regular intervals of time. In another implementation, each of the user sessions may query the operations queue upon completing execution of a previous operation.
[0046] In a further embodiment, a data model associated with the CAX file is updated on the plurality of user sessions upon executing each of the operations. The term ‘data model’ as used herein, refers to a hierarchical data structure (e.g., a tree data structure) that comprises nodes indicative of the sequence of operations performed on the CAX file. The structure of the data model is indicative of the sequence of operations performed on the CAX file.
[0047] In a further embodiment, a graphic representation associated with objects in the CAX file is also simultaneously updated on the plurality of user sessions, upon executing each of the operations. Advantageously, such simultaneous updating of the graphical representation of the objects in the CAX file and / or the data model on all the user sessions takes place, irrespective of which user session from which the request for accessing the operations queue originates. Consequently, each user in the virtual collaboration session may view changes made to the CAX file by other users in the virtual collaboration session in realtime, thereby enabling effective collaboration between the users. It must be appreciated that the changes to the CAX file are reflected on all the user sessions automatically without requiring any additional efforts from the users. In particular, the present disclosure enables updating of the changes in real-time, without requiring the need for an explicit ‘saving’ of the file by the user.
[0048] It must be understood that step 406 repeated when the operations queue is queried by the first user session or the second user session, until all the data elements in the operation queue are accessed. For example, an index variable may be updated based on the last accessed data element. The index variable may be advanced by one each time a new dataelement has to be accessed from the operations queue.
[0049] At step 410, an output is generated, on each of the user sessions, based on execution of each of the operations on the CAX file in the chronological sequence. For example, the final version of the CAX file upon performing the operations requested by one or more of the user sessions, may be displayed in the plurality of user sessions. In an embodiment, the output may be generated upon receiving an explicit request for exporting or saving the file, from one or more of the user sessions.
[0050] Advantageously, the present disclosure enables real-time collaboration among multiple user sessions for file based CAX applications. The changes made to a CAX file by each user session is made visible to other user sessions in near-real time, thereby eliminating the need for serialized editing of the CAX file by each user session. Therefore, the present disclosure reduces the overall design time, in comparison to serialized editing, by enabling editing in parallel. Such a capability may be retrofitted to existing file based CAX applications without necessitating the need for changes in business processes. Further, data losses associated with migration towards database based CAX applications is eliminated, by retrofitting the capability to existing file based CAX applications.
[0051] While the present disclosure has been described in detail with reference to certain embodiments, the present disclosure is not limited to those embodiments. In view of the present disclosure, many modifications and variations would present themselves, to those skilled in the art without departing from the scope of the various embodiments of the present disclosure, as described herein.
Claims
CLAIMS1. A method for managing real-time multi-user collaboration in a file based CAX application, the method comprising: receiving, by a processing unit, a plurality of inputs indicative of a plurality of operations to be performed on one or more objects in a CAX file, wherein each input of the plurality of inputs is received from a user session of a plurality of user sessions associated with the file based CAX application, in real time; determining a chronological sequence of execution of each of the operations, based on an order of receipt of the plurality of inputs; executing each of the operations on the CAX file, based on the chronological sequence of execution determined; and generating an output, on each session of the plurality of user sessions, based on execution of each of the operations on the CAX file in the chronological sequence.
2. The method of claim 1, wherein the receiving of the plurality of inputs comprises: identifying whether a subsequent input and a preceding input are conflicting when the operation corresponding to each of the subsequent input and the preceding input is applicable to a common object in the CAX file, based on a persistent identifier corresponding to an object to which the operation corresponding to each of the subsequent input and the preceding input are to be applied, wherein the subsequent input and the preceding input are conflicting when the subsequent input is received before the operation corresponding to the preceding input is applied to the common object in the CAX file; and implementing a conflict resolution logic upon applying the operation corresponding to the preceding input on the CAX file when the subsequent input and the preceding input are conflicting.
3. The method of claim 2, wherein the implementing of the conflict resolution logic comprises: identifying the user session of the plurality of user sessions from which the subsequent input is received; and providing an instruction to the identified user session for resolving the conflict.
4. The method of claim 1, wherein the determining of the chronological sequence comprises: maintaining, in real time, an operations queue comprising each of the operations stored in the order of receipt of the plurality of inputs from the plurality of user sessions, wherein the operations queue is a linear data structure comprising one or more data elements, and wherein each data element of the one or more data elements represents one of the operations.
5. The method of claim 4, wherein the executing of each of the operations on the CAX file comprises: sequentially accessing the one or more data elements in the operations queue, starting from a frontmost data element; and upon accessing each data element, dynamically executing the operation corresponding to the accessed data element on the CAX file.
6. The method of claim 5, wherein the sequentially accessing of the one or more data elements comprises: receiving one or more requests for accessing the operations queue from at least one user session of the plurality of user sessions; and accessing each data element of the one or more data elements in the operations queue, starting from the frontmost data element in the operations queue, in response to each request of the one or more requests received from the at least one user session of the plurality of user sessions.
7. The method of claim 1, wherein the executing of each of the operations on the CAX file comprises: simultaneously updating a data model associated with the CAX file on the plurality of user sessions, upon executing each of the operations.
8. A system comprising: a processing unit; and a memory unit communicatively coupled to the processing unit, wherein the memory unit comprises: a virtual collaboration module configured to: receive a plurality of inputs indicative of a plurality of operations to be performed on one or more objects in a CAX file, wherein each input of the plurality of inputs is received from a user session of a plurality of user sessions associated with a file based CAX application, in real time; determine a chronological sequence of execution of each of the operations, based on an order of receipt of the plurality of inputs; execute each of the operations on the CAX file, based on the chronological sequence of execution determined; and generate an output, on each user session of the plurality of user sessions, based on execution of each of the operations on the CAX file in the chronological sequence.
9. The system of claim 8, wherein, in receiving the plurality of inputs, the virtual collaboration module is configured to: identify whether a subsequent input and a preceding input are conflicting when the operation corresponding to each of the subsequent input and the preceding input is applicable to a common object in the CAX file, based on a persistent identifier corresponding to an object to which the operation corresponding to each of the subsequent input and the preceding input are to be applied, wherein the subsequent input and the preceding input are conflicting when the subsequent input is received before the operation corresponding to the preceding input is applied to the common object in the CAX file; and implement a conflict resolution logic upon applying the operation corresponding to the preceding input on the CAX file when the subsequent input and the preceding input are conflicting.
10. The system of claim 9, wherein, in implementing the conflict resolution logic, the virtual collaboration module is configured to: identify the user session of the plurality of user sessions from which the subsequent input is received; and provide an instruction to the identified user session for resolving the conflict.
11. The system of claim 8, wherein, in determining the chronological sequence, the virtual collaboration module is configured to: maintain, in real time, an operations queue comprising each of the operations stored in the order of receipt of the plurality of inputs from the plurality of user sessions, wherein the operations queue is a linear data structure comprising one or more data elements, and wherein each data element of the one or more data elements represents one of the operations.
12. The system of claim 11, wherein, in executing each of the operations on the CAX file, the virtual collaboration module is configured to: sequentially access the one or more data elements in the operations queue, starting from a frontmost data element; and upon accessing each data element, dynamically execute the operation corresponding to the accessed data element on the CAX file.
13. The system of claim 12, wherein, in sequentially accessing the one or more data elements, the virtual collaboration module is configured to: receive one or more requests for accessing the operations queue from at least one user session of the plurality of user sessions; and access each data element of the one or more data elements in the operations queue, starting from the frontmost data element in the operations queue, in response to each request of the one or more requests received from the at least one user session of the plurality of user sessions.
14. The system of claim 8, wherein, in executing each of the operations on the CAX file, the virtual collaboration module is configured to: simultaneously update a data model associated with the CAX file on the plurality of user sessions, upon executing each of the operations.
15. A non-transitory computer-readable storage medium having machine-readable instructions stored therein, that when executed by a system, causes the system to: receive a plurality of inputs indicative of a plurality of operations to be performed on one or more objects in a CAX file, wherein each input of the plurality of inputs is received from a user session of a plurality of user sessions associated with a file based CAX application, in real time; determine a chronological sequence of execution of each of the operations, based on an order of receipt of the plurality of inputs; execute each of the operations on the CAX file, based on the chronological sequence of execution determined; and generate an output, on each user session of the plurality of user sessions, based on execution of each of the operations on the CAX file, in the chronological sequence.
16. The non-transitory computer-readable storage medium of claim 15, wherein the receipt of the plurality of inputs comprises: identifying whether a subsequent input and a preceding input are conflicting when the operation corresponding to each of the subsequent input and the preceding input is applicable to a common object in the CAX file, based on a persistent identifier corresponding to an object to which the operation corresponding to each of the subsequent input and the preceding input are to be applied, wherein the subsequent input and the preceding input are conflicting when the subsequent input is received before the operation corresponding to the preceding input is applied to the common object in the CAX file; and implementing a conflict resolution logic upon applying the operation corresponding to the preceding input on the CAX file when the subsequent input and the preceding input are conflicting.
17. The non-transitory computer-readable storage medium of claim 15, wherein the determination of the chronological sequence comprises: maintaining, in real time, an operations queue comprising each of the operations stored in the order of receipt of the plurality of inputs from the plurality of user sessions, wherein the operations queue is a linear data structure comprising one or more data elements, and wherein each data element of the one or more data elements represents one of the operations.
18. The non-transitory computer-readable storage medium of claim 17, wherein the execution of each of the operations on the CAX file comprises: sequentially accessing the one or more data elements in the operations queue, starting from a frontmost data element; and upon accessing each data element, dynamically executing the operation corresponding to the accessed data element on the CAX file.
19. The non-transitory computer-readable storage medium of claim 18, wherein the sequentially accessing the one or more data elements comprises: receiving one or more requests for accessing the operations queue from at least one user session of the plurality of user sessions; and accessing each data element of the one or more data elements in the operations queue, starting from the frontmost data element in the operations queue, in response to each request of the one or more requests received from the at least one user session of the plurality of user sessions.
20. The non-transitory computer-readable storage medium of claim 15, wherein the execution of each of the operations on the CAX file comprises: simultaneously updating a data model associated with the CAX file on the plurality of user sessions, upon executing each of the operations.