<entity> elements and related data object types
The <entity> XML root element defines many—if not most—of the PolicyCenter entities.
Attributes of <entity>
The <entity>
element contains the following attributes.
|
Description |
Default |
|---|---|---|
|
If |
|
|
Determines whether you can reference the entity from staging tables:
This is important because it allows the staging table loader to do less checking at load time. For example:
|
|
|
Use with |
|
|
Internal. If set to |
|
|
Internal. If set to IMPORTANT Guidewire does not enforce |
|
|
A description of the purpose and use of the entity. |
None |
|
Optional. Creates a more human-readable form of the entity name. You can access this name using the following:
If you do not specify a value for the |
None |
|
For the purposes of archiving, whether the entity has the semantics of an edge table. |
|
|
Relevant only for entities of type
|
None |
|
Internal. Relevant only for Policy entities. This value defines the field that refers to the branches of this container. |
None |
|
Internal. Relevant only for PolicyPeriod entities. This value defines the field that refers to the container of this branch. |
None |
|
Internal. Relevant only for Policy entities. This value defines
the name of the table that stores the
|
None |
|
Required. The name of the entity. You use this name to access the entity in data views, rules, and other areas within PolicyCenter. This attribute has no maximum or minimum length
in and of itself. However, if the
final attribute is set to
|
None |
|
Unused. |
|
|
Internal. If |
|
|
If IMPORTANT If you define this incorrectly, PolicyCenter generates an error message upon resource verification and the application server refuses to start. PolicyCenter generates this verification error:
|
|
|
Internal. Do not use. |
|
|
The ignoreForEvents attribute indicates whether
other entities pass over the instant entity when
determining the origin of an event. If the value
of ignoreForEvents is
If the <events> element is not present in an entity, that entity does not generate events. Moreover, that entity does not generate events when you create, modify, or delete it. Thus, it makes no sense for PolicyCenter to examine either that entity or entities that reference it when the product searches for the source of an event. Nonetheless, even if an entity generates no events, whenever you modify it, PolicyCenter still examines
that entity and all entity instances that
reference it. The scope of this examination
encompasses the non-event-generating entity as
well as arrays, foreign keys, and edge foreign
keys that reference it. If PolicyCenter finds an entity
instance that both generates events and references
the modified, non-event-generating entity, the
product generates a Guidewire offers two solutions to the resultant performance challenge. You can avoid the
examination and event generation altogether if you
set the ignoreForEvents
attribute to As an alternative, you can avoid the
examination and event generation in some cases
while allowing the process in others. To effect
this selective avoidance, set the
ignoreForEvents attribute to
In this case, when you modify the
non-event-generating entity, PolicyCenter does not ignore
the entity altogether. When you modify the entity,
event-generating entity instances that reference
the entity and on which the
ignoreForEvents attribute is
Thus, if you want no events triggered at all when you modify a non-event-generating entity, set
the ignoreForEvents attribute
on that entity to true. If you
want some events avoided and some triggered, take
this step only on event-generating entities that
reference the non-event-generating entity and that
you want to ignore. Important: With
the ignoreForEvents attribute,
PolicyCenter rules
out specific entities or activities for event
generation. The attribute eliminates events where
they are not needed. Hence, the attribute results
in improved performance. Set the
ignoreForEvents attribute to
true as appropriate to ensure
optimal performance. This performance improvement
is especially important for any entity shared
among graph entities, such as
Claim,
Policy, or
Account. |
|
|
Internal. |
|
|
If |
|
|
Internal. If set to IMPORTANT Guidewire strongly recommends that you do not use this locking mechanism. |
|
|
Internal. If IMPORTANT If set
to |
|
|
Internal. Do not use. The only real effect is to change the location in which the table appears in a data distribution report. |
|
|
The priority of the
corresponding subtype key. This value is meaningful only for entities
participating in a subtype hierarchy, which can be either the |
-1 |
|
Optional. The typical use of read-only entities is for tables of reference data that you import as administrative data and then never touch again. You
can add a read-only entity only to a bundle that has the You cannot set bundle commit options from Gosu. Therefore, you cannot modify these entities from Gosu, unless some Gosu-accessible interface gives you a special bundle. The administrative XML import tools use such a special bundle. However, Guidewire uses these tools internally only in the PolicyCenter product model. |
None |
|
None |
|
|
Subpackage to which the class corresponding to this entity belongs. |
None |
|
Required. The name of the database table in which PolicyCenter stores the data
for this entity. PolicyCenter automatically
prefixes table names with Guidewire recommends the following table naming conventions:
The table name has no minimum allowable length so long as the name is not an empty string. Guidewire enforces the following restrictions on the maximum allowable length of the table name:
|
None |
|
Internal. If PolicyCenter deletes all temporary tables after it completes the installation or the upgrade. |
|
|
Required. See Overview of data entities for a discussion of data entity types. |
None |
|
The typelist that PolicyCenter generates when you create a non-final entity has an associated database table. If you do not specify a value for the typelistTableName attribute, then PolicyCenter uses the name of the entity as the table name for the subtype typelist. However, PolicyCenter places a restriction of 25 characters on the length of the database table name. You use the typelistTableName attribute to specify the database table name for the typelist if an entity name is too long to become a valid typelist table name. It is not valid to use this attribute with entity types marked as final. |
None |
|
Internal. Do not use. If |
|
If you create a non-final <entity> element, then PolicyCenter automatically creates a typelist with the same name as the resulting entity. The typelist allows you to keep track of the subtypes of that entity. PolicyCenter creates this typelist whether or not a <subtype> element exists that refers to the non-final <entity> element.
Suppose that you change a final <entity> element to a non-final <entity> element. Suppose further that you already have a typelist with the same name as the resulting entity. In this case, you must change the name of the preexisting typelist beforehand. Otherwise, the automatic typelist generation cannot proceed, and you will receive an error.
Subelements of <entity>
The <entity>
element contains the following subelements.
|
Description |
|---|---|
|
See <array>. |
|
Internal. |
|
See <column>. |
|
Internal. |
|
Internal. |
|
Internal. |
|
See <edgeForeignKey>. |
|
Indicates that the entity raises events and that the entity is aware of events. See <events>. |
|
See <foreignkey>. |
|
See <fulldescription>. |
|
See <implementsEntity>. |
|
|
|
See <index>. |
|
Internal. |
|
Handles monetary amounts.
The |
|
See <onetoone>. |
|
See <remove-index>. |
|
|
|
Defines a search denormalization typekey in the database. The denormalization copies the value of a column on another table into a typekey field on the denormalizing table. You must link the tables through a foreign key. The purpose of this denormalization is to avoid costly joins in performance critical searches. |
|
Internal. |
|
See <typekey>. |
|
Internal. |
|
Internal. |
The <searchColumn> subelement
The <searchColumn>
subelement on <entity>
defines a search denormalization column in the database. The denormalization
copies the value of a column on another table into a column on the denormalizing
table. You must link the tables through a foreign key. The purpose of
this denormalization is to avoid costly joins in performance-critical
searches.
The use of search denormalization columns adds overhead to updates, as does any denormalization. Guidewire recommends that you only use these columns if there is an identifiable performance problem with a search that is directly related to the join between the two tables.
<searchColumn> sublement
on the <extension>
and <subtype> elements
as well.The <searchColumn>
element contains the following attributes.
|
Description |
Default |
|---|---|---|
|
Name to use for the database column corresponding to this property. If you do not specify a
value, then PolicyCenter uses the
The columnName attribute must be no more than 30 characters in length. It allows only unaccented Roman letters, numbers, and the underscore character. The first character of the columnName attribute must be a letter. Although the underscore character is allowable here, Guidewire discourages its use. |
None |
|
If If you deprecate an item, use the description to explain why. For more information, see Data entity subelements. |
|
|
Description of the intended purpose of this column. |
None |
|
Required. Name of the column on the table
and the field on the entity. The
Column names must contain letters only. A column name cannot contain an underscore. |
None |
|
Required. Name of the column on the source
entity, whose value this column copies. The |
None |
|
Required. Name of a foreign key field
on this entity, which refers to the source entity for this search denormalization
column. The |
None |
|
Optional name of the particular subtype on which the source column is defined. If not specified,
then PolicyCenter
assumes that the source column to exist on the
entity referred to by the source object. However,
you must specify this value if the
|
None |
For example, suppose that you set the following attribute definitions:
searchColumn– MyDenormColumnsourceForeignKey– SourcesourceColumn– SourceField
This declaration says:
Copy the value of SourceField on the object pointed to by the foreign key named Source into the field named MyDenormColumn. PolicyCenter automatically populates the column as part of bundle commit, staging table load, and database upgrade.
If you need to denormalize a field on a
subtype of the entity referred to by the foreign key, then you can specify
the optional sourceSubtype
attribute.
As with linguistic denormalization columns, you cannot access the value of these search denormalization columns in memory. The value is only available in the database. Thus, you can only access the value through a database query.
It is possible to make a query against a search denormalization column that is a denormalization of a linguistic denormalization column. In that case, the query generator knows not to wrap the column values in the linguistic denormalization function. This preserves the optimization that linguistic denormalization columns provide.
It is important to understand that search
denormalization columns specify one column only — the column that you
specify with the sourceColumn
attribute. So, if you want to denormalize both a column and its linguistic
denormalization, then you need two separate search denormalization columns.
However, in this case, you typically would just want to denormalize the
linguistic denormalization column. You would only want to denormalize
the source column if you wanted to support case-sensitive searches on
it.
Search denormalization columns can only
specify <column>
or <typekey> fields.
