Conventional file-based
engineering design data for an
engineering model are represented by a plurality of components. Each component has a
unique identifier, a set of fields, each field having a
data type and a
data value, and a program which interprets and modifies the fields. The plurality of components are stored in a repository of a
server. The repository also stores a history of any changes made to the components. A plurality of
client computers are bidirectionally connected to the
server. Each
client computer may obtain the current version of the components and may send locally edited versions of the components back to the
server to replace the current versions in the repository. At the
client computer, the user interacts with the components using conventional file-based
software. Before locally edited versions of the components are committed to the server to replace the current versions, a synchronization and merging process occurs whereby the latest version of the components are downloaded to the client computer and are compared to the locally edited version of the components to detect resolvable (compatible) and unresolvable (incompatible) conflicts therebetween. The
commit process is performed only if no unresolvable conflicts exist between the two versions of the components. To facilitate translation between file-based data and components, a schema is written to "wrap" each of the
engineering file formats. Each schema is a set of classes that capture all of the information in the file-based data.