Errata exists for this version of the document.
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 |
|||||
HasComponent |
Object |
<Alias> |
|
AliasNameType |
OptionalPlaceholder |
HasComponent |
Object |
<SubAliasNameCategories> |
|
AliasNameCategoryType |
OptionalPlaceholder |
HasComponent |
Method |
FindAlias |
Defined in 6.3.2 |
Mandatory |
The list of AliasNames that an Object contains may be dynamic. For example, AliasNames may be added in an aggregating Server as underlying Servers become available or may 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.
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) |
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 sting |
Bad_UserAccessDenied |
The current user does not have the rights required. |
Bad_ResponseToLarge |
The response was to 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 might be more than one entry for every AliasName. Multiple Servers might provide an equivalent object (such as a temperature sensor). 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 might be based on the ServerStatus of the Server that contains the referenced Node, it might be load balancing of Servers, or it might be some other algorithm.
Clients should use the first usable entry in the list.