GME identifies data and tool integration as one of its primary application areas,
so data access and standards-compliant extensibility is one of its primary design goals.
Hence, GME is completely component-based with public interfaces among its components.
Most notably, the GME editor, i.e. the visualization component, the model storage and logic,
and the meta-modeling module is separated by interfaces which are accessible to user-written
components as well, thus giving them access level identical to that of the GME editor.
Since the component model is COM, the primary languages for integration are C++ and Visual
Basic, while Java, Python, etc. access is also available. Access is bi-directional, and fully
transactional, which makes different 'on-line modeling' scenarios feasible. For example, the
GME user interface itself can be used as the user interface of a generated application to
provide feedback to the user in terms of the models. Furthermore, the bi-directional access
makes it possible to convert legacy data into models in an automated fashion.
Programming at the component level is somewhat challenging in the sense that it requires
advanced transaction control and event handling. Several alternatives provide easier access
through simpler interfaces (albeit with limited functionality). First, the GME pattern-based
report language provides simple reporting capabilities by interpreting macro definitions in
a simple text input file. A more complex interface is layered on top of the COM interfaces
providing an easy-to-use extensible C++ API. GME also provides bi-directional XML access for
both model and meta-model information.