Overview of the archive domain graph

The archive domain graph defines the cluster of related entity instances that PolicyCenter treats as a single aggregate for purposes of archiving data. The archive domain graph begins with a root entity type and ends at a boundary of related entity types.

Root

The root of the archive domain graph is a specific entity type. Starting with the root entity type, the graph follows ownership relationships in the data model to other entity types until the boundary of the graph is reached. In PolicyCenter, the root entity type in the archive domain graph is PolicyPeriod.

Boundary

The boundary of the archive domain graph defines which entity types terminate the traversal of owner relationships from the root and thus prescribe the extent of entities within the graph. In PolicyCenter, the boundary includes the major entities that relate to the PolicyPeriod entity type, including effective dated entity types such as PolicyAddress and PolicyDriver.

In PolicyCenter, for an entity to be in the archive domain graph:

  • The entity must implement the Extractable delegate.
  • The entity must have a foreign key relationship with an entity in the archive domain graph.

In PolicyCenter, most entity types in the archive domain graph implement the Extractable delegate by inheritance through the EffDatedBase entity.

All entities in the archive domain graph must set the entity effDatedBranchType attribute to PolicyPeriod. For example:

<entity xmlns="http://guidewire.com/datamodel" ... 
      effDatedBranchType="PolicyPeriod" 
      entity="BAStateCov" 
      type="effdated">
There is only one root to the archive domain graph, PolicyPeriod, and it implements the RootInfo delegate.
Note: There are other PolicyCenter entities that implement the RootInfo delegate, for example, Job and Policy, among others. These entities are not in the archive domain graph, however, because they do not set attribute effDatedBranchType to PolicyPeriod. Instead, PolicyCenter uses these entities during purging of unnecessary data such as policy quotes not taken.
Note: If PolicyCenter has a database upgrade trigger that updates an entity in the archive domain graph, PolicyCenter also includes an upgrade trigger to update this entity upon retrieval from the archive. This action applies to entities in the quote store created by a quote-only instance of PolicyCenter that handles high volume quote requests.

The archive domain graph is a directed acyclic graph

The archive domain graph is an example of a directed acyclic graph:

  • It is a graph that comprises nodes and the relationships between the nodes.
  • It is a directed graph because you can traverse a relationship in one direction only. For example, if node A and node B have a relationship, you can traverse from A to B or from B to A but not in both directions.
  • It is a directed acyclic graph because the graph does not permit the traversal of cycles in the graph. For example, if you can traverse from node A to node B and from node B to node C, you then cannot traverse from C to A.

The PolicyCenter data model itself also is a directed acyclic graph based on foreign key relationships between entity types.

Important: Guidewire expressly prohibits bidirectional relationships between PolicyCenter entity types. This prohibition ensures that PolicyCenter can commit related entity instances in a transactional bundle in a safe order without exceptions or deadlocks.

The archive domain graph and entity instance graphs

The archive domain graph is a subset of the of data model graph and begins with the root entity PolicyPeriod. There are two ways to think of the archive domain graph:

  • The entity graph defines the archive root entity and the specific PolicyCenter entity types that the archive root owns.
  • The instance graph is a single specific instance of the archive domain graph. It includes the archive root entity and the set of entity instances that link to the archive root.

It is important to fully understand the distinction between the two types of archive domain graphs.

Graph type

Description

Entity type

An entity archive domain graph defines the set of entity types that the archive root entity owns. PolicyCenter builds this graph a single time at server startup and thereafter uses the graph to create individual instances of the archive domain graph.

The PolicyCenter data model contains exactly one entity type archive domain graph.

Instance type

An instance archive domain graph is the graph of all individual entity instances that belong to the archive root. PolicyCenter builds this graph by following the foreign key links from the archive root, using the entity type graph to determine which keys to follow. The PolicyCenter database contains as many instances of the archive instance graph as there are instances of the archive root entity. It is possible to archive each separate instance of the archive domain graph.

The archive domain graph and reference data

Within the PolicyCenter data model there are entity types outside the archive domain graph to which an entity type inside the graph refers through a foreign key link. Guidewire refers to these types of entities as reference entities or reference data. Although linked to an entity type inside the graph, PolicyCenter does not actually archive reference data during the archive process.

Guidewire requires that all such reference entities be retireable, and not just editable or versionable. Otherwise, if PolicyCenter actually deleted a reference entity (rather than just marking the entity as retired), attempting to retrieve the entity would cause a foreign key violation. The following example illustrates this concept.

Suppose that there exists an archive domain graph entity A that has a foreign key link to some reference data entity B. Suppose also that PolicyCenter archives an instance of entity A (and its link to an entity instance of B) at some point in time. A PolicyCenter user then deletes that particular instance of B, which remove it from the PolicyCenter database. At some later time, PolicyCenter attempts to retrieve the archived instance of entity A. However, as entity B no longer exists in the database, PolicyCenter generates a foreign key violation because the link from A points to nothing.

Reference data entities must not implement either of the following delegates:

  • Extractable
  • Overlap

If you do not mark reference entities correctly, PolicyCenter generates a fatal validation error at server startup.