Conventional file-based
engineering design data for an
engineering model are represented by a plurality of components. The plurality of components are kept in stores, which reside on servers. Each store contains the components that correspond to the elements of one design file. The stores also maintain a history of changes made to the components. A plurality of
client computers are bidirectionally connected to the servers. Each
client computer may obtain the current version of the components and may send locally edited versions of the components back to the servers to replace the current versions in the stores. At the
client computer, the user interacts with the components using conventional file-based
software. Before the locally edited versions of the components are committed to the servers 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. 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.