An overview of this object model is provided in Clause 5. Figure 1 illustrates the overall AliasName Object Model
Instances of the AliasNameType ObjectType provide alternate names for Nodes. The AliasNameType is formally defined in Table 1.
Table 1 – AliasNameType Definition
Attribute |
Value |
|||||
BrowseName |
AliasNameType |
|||||
IsAbstract |
False |
|||||
References |
NodeClass |
BrowseName |
DataType |
TypeDefinition |
ModellingRule |
|
Subtype of the BaseObjectType defined in OPC 10000-5 |
||||||
ConformanceUnits |
||||||
AliasName Base |
This ObjectType has no Properties or Variables. The BrowseName of the Object is used as the alias name. The string part of the BrowseName shall be the DisplayName with an empty locale id and no other locale shall be provided. This Object shall have at least one AliasFor Reference (or sub-type).
A Client shall always ignore the namespace associated with an AliasName for comparison with other AliasNames.
The AliasName Object’s BrowseName shall not be modified once it is defined. If an AliasName needs to be changed, it is considered as a deletion of the old AliasName and the addition of new AliasName. This requirement allows AggregatingServers to detect new AliasNames.
AliasNameCategoryType instances are used to organize the AliasNameType instances that a Server defines. They can also include instances of AliasNameCategoryType to allow hierarchical groupings of AliasNames. It includes a mandatory Method for finding instances of AliasNameType in the AliasName hierarchy, starting at this instance of AliasNameCategoryType. For example, if the Method call is made on the Aliases AliasNameCategoryType instance (see 9.2), it would apply the AliasNameSearchPattern to all AliasNames that are defined under TagVariables, Topics and any other AliasNameCategoryType instance in the hierarchy.
The AliasNameCategoryType is a subtype of FolderType and is formally defined in Table 2.
Table 2 – AliasNameCategoryType Definition
Attribute |
Value |
||||
BrowseName |
AliasNameCategoryType |
||||
IsAbstract |
False |
||||
References |
NodeClass |
BrowseName |
DataType |
TypeDefinition |
ModellingRule |
Subtype of the FolderType from OPC 10000-5 |
|||||
Organizes |
Object |
<Alias> |
|
AliasNameType |
OptionalPlaceholder |
Organizes |
Object |
<SubAliasNameCategories> |
|
AliasNameCategoryType |
OptionalPlaceholder |
HasComponent |
Method |
FindAlias |
Defined in 6.3.2 |
Mandatory |
|
HasProperty |
Variable |
LastChange |
VersionTime |
PropertyType |
Optional |
ConformanceUnits |
|||||
AliasName Base |
The list of AliasNames that an Object contains could be dynamic. For example, AliasNames could be added in an aggregating Server as underlying Servers become available or could be removed if a Server is no longer available.
<Alias> represents any number of instances of AliasNameType. Each instance shall have at least one AliasFor Reference to a Node. Multiple <Alias > instances can point to the same Node.
<SubAliasNameCategories> allows the nesting or structuring of AliasNames into hierarchical groupings.
An <Alias> can appear in more than one place in the hierarchy of AliasNameCategories.
LastChange is the most recent time for any of the following activities:
- The last time an AliasName was added to or deleted from the AliasNameCategory,
- The last time an AliasNameCategory was added or deleted,
- The last time the referenced Nodes of an AliasName in the AliasNameCategory changed.
For AliasNameCategoryType instances that are nested, the value of LastChange shall always be the latest VersionTime of all Organized AliasName and AliasNameCategories.
The LastChange shall be persisted. A Client that detects a LastChange that is older than what it has cached, shall clear all cached AliasNameCategories and related AliasNames.
The FindAlias Method allows a Client to obtain the list of Nodes that match the provided AliasName search string. The signature of this Method is specified below, the arguments are defined in Table 3.
Signature
FindAlias(
[in] String AliasNameSearchPattern,
[in] NodeId ReferenceTypeFilter,
[out] AliasNameDataType[] AliasNodeList
);
Table 3 – FindAlias Method Arguments
Argument |
Description |
AliasNameSearchPattern |
A string that can contain wild cards, use to find a list of AliasNames (see OPC 10000-4 - “Wildcard Characters” table for supported wildcards, see the “Like” FilterOperator in OPC 10000-4 for more details) |
ReferenceTypeFilter |
A NodeId that represent a ReferenceType (i.e. AliasFor or one of its subtypes) that restricts the search. Any ReferenceType includes all subtypes of that ReferenceType. |
AliasNodeList |
The returned list of AliasNameDataType. If no Nodes match the search string or have the appropriate ReferenceType, the list shall be empty. |
Method result codes are defined in Table 4
Table 4 – FindAlias Method Error Codes
Result Code |
Description |
Bad_InvalidArgument |
The input string is not a valid search string |
Bad_UserAccessDenied |
The current user does not have the rights required. |
Bad_ResponseToLarge |
The response was too large to be returned, try new filter and repeat find |
The Method is formally defined in Table 5.
Table 5 – FindAlias Method AddressSpace definition
Attribute |
Value |
||||
BrowseName |
FindAlias |
||||
References |
Node Class |
BrowseName |
DataType |
TypeDefinition |
ModellingRule |
HasProperty |
Variable |
InputArguments |
Argument[] |
PropertyType |
Mandatory |
HasProperty |
Variable |
OutputArguments |
Argument[] |
PropertyType |
Mandatory |
It is important to note that there could be more than one entry for every AliasName. Multiple Servers could provide a Node that represents an equivalent object (such as a temperature sensor). An aggregating Server could also provide the Node. This Method will return the AliasNames in order of preference. That is the Server will return what it recommends as the best match first followed by the next best match etc. The criteria for ordering are Server specific. The criteria could be based on the ServerStatus of the Server that contains the referenced Node, it could be load balancing of Servers, it could be for off-loading of small device Servers, or it could be some other algorithm.
Clients should use the first usable entry in the list.