Understanding schematic attribute storage and valuation modes
When creating a schematic attribute, the storage and evaluation mode must be specified. When you specify the storage, you define whether the schematic attribute values must be stored in the schematic dataset. Specifying the schematic attribute evaluation mode determines when the schematic attribute values have to be reevaluated.
Schematic attribute storage
There are three options for schematic attribute value storage:
- Stored in a field in the schematic dataset (Field)
- Stored in a property set in the schematic dataset (Property Set)
- Never stored (No Storage)
![Attention Attention](rsrc/caution.png)
For a schematic attribute whose name corresponds to a predefined attribute name, storage cannot be configured. Storage of those specific attributes is entirely managed by Schematics without any configuration. In most cases, it is based on a system field in the related schematic feature class or diagram class.
Field storage
Field is the default storage value suggested for most attributes. It allows schematic attribute values to be stored in a field in the related schematic feature class or diagram class. It makes those values available when using the Identify tool on schematic features or when clicking Open Attribute Table from any feature layer that comprises a schematic layer.
![Remarque Remarque](rsrc/note.png)
If you want schematic attributes to specify how schematic features will be displayed and labeled in schematic diagrams, their values must be stored as fields in their related schematic feature class.
- Start in ArcCatalog by creating the related field in the schematic feature class or diagram class.
- End within Schematic Dataset Editor by creating the schematic attribute on the schematic feature class or diagram template.
Property Set storage
The Property Set storage option must be used when you want to store the schematic attribute values in the schematic dataset but you don't need this information to be clearly available from a field in the related schematic feature class or diagram class. In that case, a property set property whose name corresponds to the schematic attribute name will be automatically managed in the PROPERTYSET field of the related schematic feature or in the BLOBS field of the related schematic diagram each time the schematic attribute is evaluated.
No Storage
The No Storage mode must be used when the schematic attribute values don't need to be stored in the schematic dataset. It is often the storage to specify for schematic attributes whose values are used as part of another attribute while these second attribute values are themselves stored.
Schematic attribute evaluation
There are four choices for when schematic attribute values are evaluated:
- On Generate/Update
- On Start Editing
- On Refresh/Redraw
- As Needed
On Generate/Update evaluation
Schematic attributes with On Generate/Update evaluation are evaluated at diagram generation. They are then reevaluated each time the schematic diagram is updated. Outside of these particular moments in the schematic diagram's life, they are never reevaluated.
This type of evaluation is the most common used.
On Start Editing evaluation
When the evaluation type is set to On Start Editing, schematic attributes are not only evaluated when the diagram is generated and updated but also each time the schematic diagram is loaded in memory—for example, each time an edit session is started on the schematic diagram. In that case, if attribute values have changed and the storage mode is Field or Property Set, the new values are automatically stored in the related schematic feature class or diagram class table when saving diagram edits.
![Remarque Remarque](rsrc/note.png)
A diagram is always loaded in memory when an edit session is started on it. But it can also be automatically loaded in memory at its opening.
The On Start Editing type of evaluation is predefined for any attribute you want to be regularly evaluated without updating the entire diagram content. It is also defined for attributes specified for schematic feature classes that have been configured with dynamic custom queries.
Learn more about schematic feature classes with dynamic custom queries
On Refresh/Redraw evaluation
Configuring a schematic attribute with the On Refresh/Redraw evaluation mode causes the schematic attribute values to be systematically reevaluated at diagram generation, each time it is updated, when it is loaded in memory, and also each time the schematic diagram is refreshed or redrawn—when a scale change or extent change occurs in the diagram, when schematic features contained in the diagram are moved, and so forth.
This type of evaluation can be interesting when the schematic attributes are linked to data that often changes (for example, with SCADA applications).
![Attention Attention](rsrc/caution.png)
Like any schematic attribute with another evaluation mode, the On Refresh/Redraw schematic attributes can directly be used to set the schematic feature symbology whatever their attribute type is. However, the On Refresh/Redraw schematic attributes cannot directly be used for labeling when its type is Associated Field. In that specific case, ArcMap labeling engines don't force the load of the associated field values by default, but you can force this loading when using the following advanced label expression:
Advanced expression to get labels based on an Associated Field schematic attribute with the On Redraw/refresh evaluation mode correcly display.
Input parameters:
- [ATTR_AS_LABEL]: the schematic attribute you want to be used for labeling.
- [PROPERTYSET], [DATASOURCEID], [UCID], and [UOID]: the schematic feature class fields that have to be loaded to keep the related associated field value up-to-date.
Note that [DATASOURCEID], [UCID], and [UOID] fields are available from the Fields list in the Label Expression dialog box and can be picked up from this list when building the following advanced expression. But since the [PROPERTYSET] field is not available from this list; you must directly type it in the expression box.
Function FindLabel([PROPERTYSET],[DATASOURCEID], [UCID], [UOID], [ATTR_AS_LABEL]) FindLabel = [ATTR_AS_LABEL] End Function
As Needed evaluation
A schematic attribute with the As Needed evaluation mode chosen is generally configured for a schematic attribute that makes up another attribute. In that case, it is evaluated when that other attribute is evaluated.