Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Version History

« Previous Version 2 Current »

Overview

Documents the terminology server domain model.

This is a placeholder page with basic information and will be developed to fully document this aspect of the system.

Details

The terminology model is based on the capabilities of RF2, including individual classes for each of the supported refset types. Some awkwardness in RF2 prevents an exact alignment because referential integrity constraints between certain refset types (like Association Reference) can involve either description or concept identifiers and thus require splitting into multiple objects so that standard foreign-key constraints can be properly implemented. Additionally, the model collapses the “extended map” and “complex map” types into a single internal data type with functionality sufficient to cover both cases.

Model objects contain annotations for multiple frameworks and integrations that add a significant amount of functionality out of the box. These include

  • JPA annotations define the persistence model.  In general, domain objects are independently managed and do not automatically load or save connected data. There are two notable exceptions to this at the concept and description level. As a concept requires at least one description and one parent, and that description requires at least one language refset entry, adding the concept and these associated elements can be handled as a unit operation.
  • Hibernate-Search annotations define the indexing model. In general, all identifiers and text based fields are all indexed. Lucene supports field-based searching and the set of annotations in this server supports a default field for searching across all text fields simultaneously.
  • Hibernate Envers annotations define the auditing model. In general, we audit concepts and all related components in the graph.
  • JAXB annotations define the XML serialization model, including how to avoid infinite recursion when rendering the model that includes relationships.

 

Model objects have both JPA assigned identifiers as well as terminology assigned identifiers. This supports the ability to define multiple simultaneous copies of the same domain object in the same terminology at the same time – thus supporting various types of dual independent review and conflict resolution. It also means there is delayed binding in which objects can be connected to each other via JPA identifiers and terminology assigned identifiers do not actually have to be assigned until release time.

Model object equality is defined as having all RF2 fields in common except for hibernate identifiers and effective time values. This approach facilitates delta generation by easily enabling loading of “current” and “previous release” versions of model objects and comparison to determine whether a change to the component has occurred.

TODO: ER/class diagram

TODO: explain general features (e.g. of the "component" layer).

TODO: explain concepts, descriptions, language refset, relationships (inferred/stated), transitive relationships, and "refset" members in general

TODO: Discuss appropaches to maintaining transitive closure

Updating Model Objects

When adding or changing model objects all cross-cutting concerns are addressed.  This includes:

    • model annotations (including JPA, hibernate-search, envers, JAXB, and JSON)
    • unit tests
    • admin tools (updatedb, loader, reindex)
    • Equals/hashcode methods
    • Copy constructor
    • toString()
    • Getter/setter for all fields (with correct naming conventions).
  • n/a

 

 

  • No labels