Archive entities and the Extractable delegate

All entities in the archive domain graph must implement the Extractable delegate. Entities outside the archive domain graph must not implement the Extractable delegate. The Extractable delegate creates the ArchivePartition column that PolicyCenter uses during the archive process.

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

See also

Specifying the Extractable delegate on entities

The following extension metadata definition of the Document entity shows that it implements the Extractable delegate, which makes Document part of the archive domain graph.

<internalExtension xmlns="http://guidewire.com/datamodel" entityName="Activity">
  ...
  <implementsEntity name="Extractable"/>
  ...
</entity>

See also

Specifying the Extractable attribute on edge foreign keys

In Guidewire PolicyCenter, an edge foreign key defines a reference link to another entity in the similar manner as a foreign key does. However, you use an edge foreign key in place of a standard foreign key to break a cycle of foreign keys in the data model.

If you add an edge foreign key to an entity that is part of the archive domain graph, set the extractable attribute on the edge foreign key to true. The value true causes PolicyCenter to add the Extractable delegate to the associative table generated for the edge foreign key. In addition, the entity type that the edge foreign key relates to must implement the Extractable delegate.

Important: If the extractable attribute is not set to true for an edge foreign key on an entity that is part of the archive domain graph, the server does not start.

The following entity metadata definition illustrates this concept.

<entity xmlns="http://guidewire.com/datamodel"
      desc="Policy Period allows a point in time reconstruction of all key policy attributes."
      effDatedContainerField="Policy"
      entity="PolicyPeriod"
      exportable="true"
      loadable="false"
      lockable="true"
      table="policyperiod"
      type="effdatedbranch">
  ...
  <edgeForeignKey desc="The workflow that is active from the perspective of the UI."
        edgeTableName="PRActiveWorkflow"
        exportable="false"
        fkentity="PolicyPeriodWorkflow"
        name="ActiveWorkflow"
        extractable="true"
        nullok="true"/>
  ...
</entity>