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 subtype of).
A Client shall always ignore the namespace associated with an AliasName for comparison with other AliasNames. AliasName can be defined in Namespace 1 (the local Server) or in some vendor defined namespace. See OPC 10000-3 for additional details on Namespaces.
The AliasName Object’s BrowseName shall not be modified once it is defined. If an AliasName is to be changed, it shall be a deletion of the old AliasName and the addition of the new AliasName. This requirement allows aggregating Servers to detect new AliasNames. The deletion and then addition of an AliasName results in a new NodeId for the AliasName.
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.
Well-known AliasNameCategories are defined in this document. Other documents may also define well-known AliasNameCategories. A well-known AliasNameCategory has a static NodeId allowing it to be aggregated. For details on aggregation of AliasName and AliasNameCategories see Annex B.
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 |
|
|
HasComponent |
Method |
FindAliasVerbose |
Defined in 6.3.3 |
Optional |
|
|
HasProperty |
Variable |
LastChange |
VersionTime |
PropertyType |
Optional |
|
HasComponent |
Method |
AddAliasesToCategory |
Defined in 6.3.4 |
Optional |
|
|
HasComponent |
Method |
DeleteAliasesFromCategory |
Defined in 6.3.5 |
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 AliasNames 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_ResponseTooLarge |
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 |
|
ConformanceUnits |
|||||
|
AliasName Base |
|||||
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.
The FindAliasVerbose Method extends the FindAlias Method, by providing additional information in the returned data, all other aspects of the Method are identical to FindAlias. The signature of this Method is specified below; the arguments are defined in Table 6.
Signature
FindAliasVerbose(
[in] String AliasNameSearchPattern,
[in] NodeId ReferenceTypeFilter,
[out] AliasNameVerboseDataType[]AliasNodeList
);
Table 6 – FindAliasVerbose 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 AliasNameVerboseDataType. If no Nodes match the search string or have the appropriate ReferenceType, the list shall be empty. |
Method result codes are defined in Table 7.
Table 7 – FindAliasVerbose 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_ResponseTooLarge |
The response was too large to be returned, try new filter and repeat find. |
The Method is formally defined inTable 8.
Table 8 – FindAliasVerbose Method AddressSpace definition
|
Attribute |
Value |
||||
|
BrowseName |
FindAliasVerbose |
||||
|
References |
Node Class |
BrowseName |
DataType |
TypeDefinition |
ModellingRule |
|
HasProperty |
Variable |
InputArguments |
Argument[] |
PropertyType |
Mandatory |
|
HasProperty |
Variable |
OutputArguments |
Argument[] |
PropertyType |
Mandatory |
|
ConformanceUnits |
|||||
The FindAliasVerbose Method provides additional information in the AliasNameVerboseDataType, including AliasNameCategory information and ServerUri Information, see 7.3 for details.
The AddAliasesToCategory Method allows a Client to add an AliasName to the AliasNameCategory. The signature of this Method is specified below, the arguments are defined in Table 9.
Signature
AddAliasesToCategory(
[in] String[] AliasNames,
[in] ExpandedNodeId[]TargetNodes,
[in] String[] TargetServers,
[in] NodeId TargetReferenceType,
[out] StatusCode[]ErrorCodes
);
Table 9 – AddAliasesToCategory Method Arguments
|
Argument |
Description |
|
AliasNames |
An array of the string part of the AliasName. It is Server specific as to what namespace the AliasName is added to. |
|
TargetNodes |
An array of NodeIds that represents the target Nodes of the AliasNames to be added. Each element in this array corresponds to an element at the same index in AliasNames. It shall be a valid NodeId and exist on the corresponding TargetServer (i.e. it might not exist on the Server that contains the AliasName node). The ServerIndex in the ExpandedNodeId shall be ignored and the TargetServers Uri shall be used. |
|
TargetServers |
An array of the ServerUri of the target Server. Each element in this array corresponds to an element at the same index in AliasNames. if the array element is null or empty then the target Server is the Server hosting the AliasName Node. If the parameter is null or empty then the target Server for all of the AliasNames is the Server hosting the AliasName Node. |
|
TargetReferenceType |
This is the ReferenceType that is to be used for the reference from the AliasName to the target node. If null, it defaults to AliasFor. |
|
ErrorCodes |
Reports any error associated with the addition of each AliasName. It is an array of StatusCodes. The size of the array shall be the same as the size of the AliasNames parameter. |
The generated AliasName Nodes are assigned a Server specific NodeId.
If the same AliasName is to reference multiple TargetNodes then the AliasName shall be listed in the AliasNames array multiple times, one for each TargetNode.
It is not required for an AliasName Server to check the existence of external Nodes (i.e. Nodes that are not on the Server hosting the AliasName). If a Server does check for external Nodes, it shall not fail the addition if the Server or Node on the external Server is not available, it shall return Uncertain_ReferenceOutOfServer. If the Server does not check for the external Node’s existence, it shall return Uncertain_ReferenceOutOfServer.
If an entry in the parallel arrays duplicates an existing AliasName entry (exact same AliasName, TargetNode and TargetServer) or it appears more than once in the array it shall be ignored and no error shall be generated.
The list of StatusCodes that could be returned in ErrorCodes is defined in Table 10.
Table 10 – AddAliasesToCategory return ErrorCodes
|
Result Code |
Description |
|
Bad_NodeIdInvalid |
The syntax of the NodeId is not valid. |
|
Bad_NodeIdUnknown |
The TargetNode does not exist in the AliasName Server and the TargetServer is the local server (Server hosting the AliasName). |
|
Bad_NotSupported |
The AliasName Server does not support adding AliasName that have a remote Server TargetNode. Note: Support for remote Server TargetNodes is optional, but may be required for some Facets |
|
Uncertain_ReferenceOutOfServer |
For an AliasName that referenced a node in another Server, the target node could not be found or no check was performed. |
Method result codes are defined in Table 11.
Table 11 – AddAliasesToCategory Method Error Codes
|
Result Code |
Description |
|
Bad_InvalidArgument |
An argument is of the wrong type or the size of the arrays for all arguments except TargetServers is not the same or if all arrays are empty. |
|
Bad_UserAccessDenied |
The current user does not have the required rights to add an AliasName. |
The Method is formally defined in Table 12.
Table 12 – AddAliasesToCategory Method AddressSpace definition
|
Attribute |
Value |
||||
|
BrowseName |
AddAliasesToCategory |
||||
|
References |
Node Class |
BrowseName |
DataType |
TypeDefinition |
ModellingRule |
|
HasProperty |
Variable |
InputArguments |
Argument[] |
PropertyType |
Mandatory |
|
HasProperty |
Variable |
OutputArguments |
Argument[] |
PropertyType |
Mandatory |
|
ConformanceUnits |
|||||
The DeleteAliasesFromCategory Method allows a Client to remove AliasNames from the AliasNameCategory. The signature of this Method is specified below; the arguments are defined in Table 13.
This Method shall only delete AliasName instances that are defined on the Server exposing this Method. I.e. an aggregating Server that has pulled AliasName instances from an aggregated Server cannot delete AliasName instances that are from the aggregated Server.
Signature
DeleteAliasesFromCategory
(
[in] String[] AliasNames,
[in] ExpandedNodeId []TargetNodes,
[out] StatusCode[]ErrorCodes
);
Table 13 – DeleteAliasesFromCategory Method Arguments
|
Argument |
Description |
|
AliasNames |
An array of the string part of the AliasName, that is to be deleted. |
|
TargetNodes |
An array of the NodeId of the node that is the target of the AliasName, which would further restrict what is deleted. Each element in this array corresponds to an element at the same index in AliasNames. |
|
ErrorCodes |
Reports any error associate with the deletion of each AliasName. The size of the array shall be the same as the size of the AliasNames parameter. |
The length of each of the arrays shall be the same.
If the TargetNodes array entry is null or empty, all AliasNames with the provided name are deleted from the AliasNameCategory. If all targets for an AliasNames array entry cannot be deleted, then none of the targets are deleted.
The list of StatusCodes that could be returned in ErrorCodes is defined in Table 14
Table 14 – DeleteAliasesFromCategory return ErrorCodes
|
Result Code |
Description |
|
Bad_NotFound |
The AliasName was not found. |
|
Bad_InvalidState |
The AliasName being deleted is not from the local Server. |
Method result codes are defined in Table 15
Table 15 – DeleteAliasesFromCategory Method Error Codes
|
Result Code |
Description |
|
Bad_InvalidArgument |
An argument is of the wrong type or the size of the arrays for all arguments is not the same |
|
Bad_UserAccessDenied |
The current user does not have the required rights to delete an AliasName |
The Method is formally defined in Table 16.
Table 16 – DeleteAliasesFromCategory Method AddressSpace definition
|
Attribute |
Value |
||||
|
BrowseName |
DeleteAliasesFromCategory |
||||
|
References |
Node Class |
BrowseName |
DataType |
TypeDefinition |
ModellingRule |
|
HasProperty |
Variable |
InputArguments |
Argument[] |
PropertyType |
Mandatory |
|
HasProperty |
Variable |
OutputArguments |
Argument[] |
PropertyType |
Mandatory |
|
ConformanceUnits |
|||||