1. Technical Field
The subject matter disclosed herein relates generally to systems and methods for collaborative editing of an electronic model of a design object.
2. Discussion of the Background
Computer-aided systems such as computer-aided design, engineering, analysis, and manufacture (collectively, CAx) historically have enabled individual designers to work on an electronic model of a design object, or a portion thereof. Most design projects, however, require collaboration between several designers. The primary challenge in developing a CAx system that can accommodate multiple users is preventing conflicts and design inconsistencies as multiple users work on a single shared model.
To accommodate the needs of multiple users, CAx systems have typically taken two approaches: centralized and replicated. Centralized collaborative CAx systems utilize a central server to perform modeling operations. Client workstations provide a view into the model stored in a centralized database and tools for performing design operations on the model. The central server arbitrates which user is permitted to work on which part of the model at any given time. Centralized collaborative CAx systems typically require considerable network bandwidth to update client views of the shared model.
Replicated collaborative CAx systems store copies of the design model on each of the clients. As with centralized systems, locking mechanisms are used to assure that only one user modifies any one part of the model at a time. However with a replicated system, there is no central server to arbitrate editing locks. In some cases, conflicts develop between the different copies of the design model, requiring manual resolution of the conflicts and the potential loss of previous design operations.
Given the foregoing, what is needed is additional and improved systems and methods for collaborative editing of an electronic model of a design object, in particular, systems and methods that facilitate multiple simultaneous users. The embodiments disclosed herein were developed in response to these issues.
As will be described in greater detail below, the subject matter disclosed herein describes various systems and methods for collaborative editing of an electronic model of a design object. In one example, a computer-implemented method for may include (1) identifying clients configured to submit design operations to be performed on a shared design model, (2) receiving, from a first client, a first design operation to be performed on the shared design model prior to receiving, from a second client, a second design operation to be performed on the shared design model, (3) performing the first design operation prior to attempting to perform the second design operation, (4) identifying a conflict between the two design operations, and (5) in response to identifying the conflict between the design operations, notifying the second client that the second design operation was not performed on the shared design model.
In some examples, the computer-implemented method may further include notifying each of the clients that the first design operation was performed on the shared design model. In some examples, notifying each of the clients that the first design operation was performed on the shared design model may include notifying the first client that the first design operation was successfully performed on the shared design model and transmitting the first design operation to the remainder of clients, so that the first design operation can be applied to a copy of the shared design model local to the other clients.
In one embodiment, the computer-implemented method may further include associating a sequence identifier with each design operation performed on the shared design model and notifying each of the clients of the sequence identifier associated with each design operation performed on the shared design model. In some examples, receiving the design operation to be performed on the shared design model may further include receiving from the client submitting the design operation the sequence identifier most recently received by the client.
In one embodiment, the computer-implemented method may further include (1) receiving from the client submitting the design operation a sequence identifier that does not match the sequence identifier associated with the design operation most recently performed on the shared design model, (2) determining, in response to receiving the sequence identifier that does not match the most recent sequence identifier, that at least one design operation performed on the shared design model has not been applied to the client's local copy of the shared design model, and (3) notifying the client submitting the design operation that because at least one design operation performed on the shared design model has not been applied to the client's local copy of the shared design model, the design operation was not performed on the shared design model.
In one example, a computer-implemented method for collaborative editing of an electronic model of a design object may include submitting, from a client, a first design operation to be performed on a shared design model and receiving notification that the first design operation was not performed due to a conflict with a second design operation previously performed on the shared design model. In one embodiment, the computer-implemented method may further include receiving the second design operation previously performed on the shared design model and performing the second design operation on the client's local copy of the shared design model.
In one embodiment, the computer-implemented method may further include resolving, on the client, the conflict between the first design operation and the second design operation and resubmitting, from the client, the first design operation to be performed on the shared design model. In some examples, the computer-implemented method may further include receiving a sequence identifier associated with the second design operation previously performed on the shared design model. In some examples, submitting the first design operation to be performed on the shared design model further may include submitting the sequence identifier associated with the second design operation previously performed on the shared design model.
In one embodiment, the computer-implemented method may further include (1) receiving notification that the first design operation was not performed because the sequence identifier submitted with the first design operation does not match the most recent sequence identifier, (2) receiving one or more previously performed design operations that were performed on the shared design model prior to when the first design operation was submitted, (3) performing the previously performed design operations on the client's local copy of the shared design model, and (4) resubmitting the first design operation with the most recent sequence identifier.
In one embodiment, the computer-implemented method may further include queueing one or more previously performed design operations that were performed on the shared design model in a design operation queue accessible to the client, and retrieving the previously performed design operations from the design operation queue to be performed on the local copy of the shared design model.
In one example, a computer-implemented method for may include (1) performing, on a client, a design operation on the client's local copy of a shared design model, (2) receiving, on the client, one or more previously performed design operations that were performed on the shared design model, (3) identifying a conflict between the design operation and the previously performed design operations, (4) in response to identifying the conflict between the design operation and the previously performed design operations, reversing the design operation and performing the previously performed design operations on the client's local copy of the shared design model, (5) resolving the conflict between the design operation and the previously performed design operations, and (6) submitting the design operation to be performed on the shared design model.
In one example, resolving the conflict between the design operation and one or more previously performed design operations may include (1) receiving the additional previously performed design operations that were performed on the shared design model, (2) performing the additional previously performed design operations on the client's local copy of the shared design model, and (3) determining that performing the previously performed design operation has resolved the conflict between the design operation and the previously performed design operations.
The accompanying drawings, which are incorporated in and constitute a part of the specification, illustrate one or more embodiments and, together with the description, explain these embodiments. In the drawings:
Some of the functional units described in this specification have been labeled as modules, in order to more particularly emphasize their implementation independence. Others are assumed to be modules. For example, a module or similar unit of functionality may be implemented as a hardware circuit comprising custom VLSI circuits or gate arrays, off-the-shelf semiconductors such as logic chips, transistors, or other discrete components. A module may also be implemented with programmable hardware devices such as field programmable gate arrays, programmable array logic, programmable logic devices or the like.
A module or a set of modules may also be implemented (in whole or in part) as a processor configured with software to perform the specified functionality. An identified module may, for instance, comprise one or more physical or logical blocks of computer instructions which may, for instance, be organized as an object, procedure, or function. Nevertheless, the executables of an identified module need not be physically located together, but may comprise disparate instructions stored in different locations which, when joined logically together, enable the module to achieve the intended purpose for the module.
Indeed, the executable code of a module may be a single instruction, or many instructions, and may even be distributed over several different code segments, among different programs, and across several memory devices. Similarly, operational data may be identified and illustrated herein within modules, and may be embodied in any suitable form and organized within any suitable type of data structure. The operational data may be collected as a single data set, or may be distributed over different locations including over different storage devices.
Reference throughout this specification to “one embodiment,” “an embodiment,” or similar language means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, appearances of the phrases “in one embodiment,” “in an embodiment,” and similar language throughout this specification may, but do not necessarily, all refer to the same embodiment.
Reference to a computer readable medium may take any tangible form capable of enabling execution of a program of machine-readable instructions on a digital processing apparatus. For example, a computer readable medium may be embodied by a flash drive, compact disk, digital-video disk, a magnetic tape, a magnetic disk, a punch card, flash memory, integrated circuits, or other digital processing apparatus memory device. A digital processing apparatus such as a computer may store program codes, associated data, and the like on the computer readable medium that when retrieved enable the digital processing apparatus to execute the functionality specified by the modules.
Furthermore, the described features, structures, or characteristics of the invention may be combined in any suitable manner in one or more embodiments. In the following description, numerous specific details are provided, such as examples of programming, software modules, user selections, network transactions, database queries, database structures, hardware modules, hardware circuits, hardware chips, etc., to provide a thorough understanding of embodiments of the invention. One skilled in the relevant art will recognize, however, that the invention may be practiced without one or more of the specific details, or with other methods, components, materials, and so forth. In other instances, well-known structures, materials, or operations are not shown or described in detail to avoid obscuring aspects of the invention.
The present disclosure is generally directed to systems and methods for collaborative editing of an electronic model of a design object. As will be explained in greater detail below, the systems and methods described herein may facilitate collaboration between multiple designers working on the same design model at the same time, thereby shortening design cycle times.
The following will provide, with reference to
As illustrated in
Client manager 212 may identify clients to submit design operations to be performed on the shared design model in any suitable manner. For example, client manager 212 may provide authentication procedures to determine that the user of the client workstation is authorized to submit operations to be performed on the shared design model. Client manager 212 may also perform a synchronization operation to determine whether the client's local copy of the shared design model is up-to-date and consistent with the centralized copy of the shared design module on the server.
At step 320, one or more of the systems described herein may receive a first design operation to be performed on the shared design model prior to receiving a second design operation to be performed on the shared design model. For example, client manager 212 may, as part of server 210 in
At step 330, one or more of the systems described herein may perform the first design operation prior to attempting to perform the second design operation. For example, client manager 212 may, as part of server 210 in
At step 340, one or more of the systems described herein may identify a conflict between the second design operation and the first design operation. For example, client manager 212 may, as part of server 210 in
At step 350, one or more of the systems described herein may, in response to identifying the conflict between the second design operation and the first design operation, notify the second client that the second design operation was not performed on the shared design model. For example, client manager 212 may, as part of server 210 in
Notifying a client that a design operation was not performed may be performed in any suitable manner. For example, the server may send an explicit failure notification that the submitted design operation was not completed. The notification may include an error code or description that indicates the reason that the design operation failed. In another example, the client may set a timeout period in which, if the client does not receive notification that the design operation was successfully applied, the client assumes that the operation failed. A combination of explicit notification and a timeout period may be used to advantage, particularly when design operations are transmitted over an unreliable network.
In some examples, method 300 for collaborative editing of an electronic model of a design object may include notifying each client of the plurality of clients that the first design operation was performed on the shared design model. For example, client manager 212 may, as part of server 210 in
Client manager 212 may notify clients that the design operation was successfully performed in a variety of ways. In some examples, notifying each of the clients that the first design operation was performed on the shared design model may include notifying the first client that the first design operation was successfully performed on the shared design model. Notifying clients other than the client that submitted the first design operation to the server may include transmitting the first design operation the other clients, so that the first design operation can be applied to each client's local copy of the shared design model.
In one embodiment, method 300 for collaborative editing of an electronic model of a design object may include associating a sequence identifier with each design operation performed on the shared design model, and notifying each of the clients of the sequence identifier associated with each design operation performed on the shared design model.
Returning to
In some examples, receiving the design operation to be performed on the shared design model further includes receiving from the client submitting the design operation the sequence identifier most recently received by the client. As illustrated in
In some examples method 300 for collaborative editing of an electronic model of a design object may include (1) receiving from the client submitting the design operation a sequence identifier that does not match the sequence identifier associated with the design operation most recently performed on the shared design model, (2) determining, in response to receiving the sequence identifier that does not match the sequence identifier associated with the most recently performed design operation, that at least one design operation performed on the shared design model has not been applied to the copy of the shared design model local to the client, and (3) notifying the client submitting the design operation that because at least one design operation performed on the shared design model has not been applied to the copy of the shared design model local to the client, the design operation was not performed on the shared design model.
Returning to
As illustrated in
At step 430 of method 400, one or more of the systems described herein may receive the second design operation previously performed on the shared design model. For example, operation module 204(A) may, as part of client 202(A) in
At step 450 of method 400, one or more of the systems described herein may resolve the conflict between the first design operation and the second design operation. For example, operation module 204(A) may, as part of client 202(A) in
At step 460 of method 400, one or more of the systems described herein may resubmit the first design operation to be performed on the shared design model. For example, operation module 204(A) may, as part of client 202(A) in
In some examples method 400 for resolving conflicts arising during collaborative editing of a shared electronic model of a design object may include receiving a sequence identifier associated with the second design operation previously performed on the shared design model. As previously discussed, clients may receive a sequence identifier associated with the design operation most recently performed on the server, along with the design operation to apply to the local copy of the design model. For example, in system 700 depicted in
In some examples, submitting the first design operation to be performed on the shared design model may include submitting the sequence identifier associated with the second design operation previously performed on the shared design model. By submitting the sequence identifier associated with the design operation most recently received from the server, the client may indicate to the server that the local copy of the shared design model is up to date. For example, in system 700 illustrated in
In some examples method 400 for resolving conflicts arising during collaborative editing of a shared electronic model of a design object may further include (1) receiving notification that the first design operation was not performed because the sequence identifier submitted with the first design operation does not match the sequence identifier associated with a most-recent design operation most recently performed on the shared design model, (2) receiving one or more previously performed design operation performed on the shared design model prior to when the first design operation was submitted, (3) performing the at least one previously performed design operation on a the client's local copy of the shared design model, and (4) resubmitting the first design operation with the sequence identifier of the previously performed design operation most recently received.
In some examples method 400 for resolving conflicts arising during collaborative editing of a shared electronic model of a design object may further include queueing the at least one previously performed design operation performed on the shared design model in a design operation queue accessible to the client, and retrieving the at least one previously performed design operation from the design operation queue to be performed on the copy of the shared design model local to the client.
As illustrated in
At step 530 of method 500, one or more of the systems described herein may identify a conflict between the design operation and the previously performed design operation. For example, operation module 204(A) may, as part of client 202(A) in
At step 540 of method 500, one or more of the systems described herein may, in response to identifying the conflict between the design operation and the previously performed design operation, reverse the design operation and perform the previously performed design operation on the local copy of the shared design model. For example, operation module 204(A) may, as part of client 202(A) in
At step 550 of method 500, one or more of the systems described herein may resolve the conflict between the design operation and the previously performed design operation. For example, operation module 204(A) may, as part of client 202(A) in
At step 560 of method 500, one or more of the systems described herein may submit the design operation to be performed on the shared design model. For example, operation module 204(A) may, as part of client 202(A) in
In one embodiment, method 500 for data preservation when resolving conflicts arising during collaborative editing of a shared electronic model of a design object may further include (1) receiving at least one additional previously performed design operation performed on the shared design model, (2) performing the at least one additional previously performed design operation on the copy of the shared design model local to the client, and (3) determining that performing the at least one previously performed design operation has resolved the conflict between the design operation and the at least one previously performed design operation. In some cases, applying a design operation may resolve a previously identified conflict between two operations. For example, in
As described above, the systems and methods described herein may facilitate collaborative CAx projects involving many designers. By applying a global order of operations, systems and methods described herein may ensure model consistency between server and client databases and facilitate resolution of conflicts between design operations with a reduced loss of work. In this way, the potential productivity of multiple designers may be more effectively leveraged to reduce the time required to complete design projects.
In summary, the methods, apparatuses, and systems presented herein provide a number of distinct advantages over prior art methods, apparatuses, and systems. It should be noted that many of the functional units described herein are identified as modules. Others are assumed to be modules. Others are assumed to be modules. One of skill in the art will appreciate that the various modules described herein may include a variety of hardware components that provide the described functionality including one or more processors such as CPUs or microcontrollers, or programmable logic devices (i.e., hardware components) that are configured by one or more software components. The software components may include executable instructions or codes and corresponding data that are stored in a computer-readable storage medium such as a non-volatile memory, or the like. The instructions or codes may include machine codes that are configured to be executed directly by the processor. Alternatively, the instructions or codes may be configured to be executed by an interpreter, or the like, that translates the instructions or codes to machine codes that are executed by the processor.
It should also be understood that this description is not intended to limit the invention. On the contrary, the exemplary embodiments are intended to cover alternatives, modifications, and equivalents, which are included in the spirit and scope of the invention as defined by the appended claims. Further, in the detailed description of the exemplary embodiments, numerous specific details are set forth in order to provide a comprehensive understanding of the claimed invention. However, one skilled in the art would understand that various embodiments may be practiced without such specific details.
Although the features and elements of the present exemplary embodiments are described in the embodiments in particular combinations, each feature or element can be used alone without the other features and elements of the embodiments or in various combinations with or without other features and elements disclosed herein.
This written description uses examples of the subject matter disclosed to enable any person skilled in the art to practice the same, including making and using any devices or systems and performing any incorporated methods. The patentable scope of the subject matter is defined by the claims, and may include other examples that occur to those skilled in the art. Such other examples are intended to be within the scope of the claims.
This application claims the benefit of U.S. provisional application 61/897,536 entitled “Model Consistency and Conflict Resolution with Data Preservation in Multi-user CAD” and filed on 30 Oct. 2013. The foregoing application is incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
61897536 | Oct 2013 | US |