To realize pluggable backend support (plug ecu architect
into your company's PDM system), the meta model
needs to be built as abstraction layer between the
application and the backend data.
One idea is to use virtual base classes for meta classes
that are then implemented for each backend system.
Basically, these base classes provide interfaces to set
and query attributes of meta classes.
Important: handling of containter objects. Like: a
structured class has many parts. How are those
returned to the querying user, how are they managed in
memory.
Suggestion: use wxWindows' container classes, namely
arrays and lists. Also use wxWindows reference counting
mechanisms to ensure minimal memory consumption.
Logged In: YES
user_id=880606
Refinement on contrainer classes: to allow fast lookup by
class name, we will use wxHashMap, an STL-like hashtable,
with wxString as keytype (type name, needs to be unique
within given scope) and the particular meta class as value
type. wxHashMap provides an iterator to simply traverse the
list.
Logged In: YES
user_id=880606
Refinement on database access: we need to support online
and offline databases. This requires to model the API between
application and DB as online, which can then always mapped
to offline by an extra layer for full model serialization.
What does online mean here?
The object model of the application is simply a tree of handles
to database objects. Retrieving information is implemented as
direct queries on the database.
ECUArchitect will define that handle (or "interface" for that
matter) -based API, which can in turn be implemented for the
various DB backends and file formats.