This Service is used to request that the Server translates one or more browse paths to NodeIds. Each browse path is constructed of a starting Node and a RelativePath. The specified starting Node identifies the Node from which the RelativePath is based. The RelativePath contains a sequence of ReferenceTypes and BrowseNames.
One purpose of this Service is to allow programming against type definitions. Since BrowseNames shall be unique in the context of type definitions, a Client may create a browse path that is valid for a type definition and use this path on instances of the type. For example, an ObjectType “Boiler” may have a “HeatSensor” Variable as InstanceDeclaration. A graphical element programmed against the “Boiler” may need to display the Value of the “HeatSensor”. If the graphical element would be called on “Boiler1”, an instance of “Boiler”, it would need to call this Service specifying the NodeId of “Boiler1” as starting Node and the BrowseName of the “HeatSensor” as browse path. The Service would return the NodeId of the “HeatSensor” of “Boiler1” and the graphical element could subscribe to its Value Attribute.
If a Node has multiple targets with the same BrowseName, the Server shall return a list of NodeIds. However, since one of the main purposes of this Service is to support programming against type definitions, the NodeId of the Node based on the type definition of the starting Node is returned as the first NodeId in the list.
Table 40 defines the parameters for the Service.
Table 40 – TranslateBrowsePathsToNodeIds Service Parameters
|requestHeader||RequestHeader||Common request parameters (see 7.28 for RequestHeader definition).|
|browsePaths ||BrowsePath||List of browse paths for which NodeIds are being requested. This structure is defined in-line with the following indented items.|
|startingNode||NodeId||NodeId of the starting Node for the browse path.|
|relativePath||RelativePath||The path to follow from the startingNode.
The last element in the relativePath shall always have a targetName specified. This further restricts the definition of the RelativePath type. The Server shall return Bad_BrowseNameInvalid if the targetName is missing.
The RelativePath structure is defined in 7.26.
|responseHeader||ResponseHeader||Common response parameters (see 7.29 for ResponseHeader definition).|
|results ||BrowsePathResult||List of results for the list of browse paths. The size and order of the list matches the size and order of the browsePaths request parameter. This structure is defined in-line with the following indented items.|
|statusCode||StatusCode||StatusCode for the browse path (see 7.34 for StatusCode definition).|
||List of targets for the relativePath from the startingNode. This structure is defined in-line with the following indented items.
A Server may encounter a Reference to a Node in another Server which it cannot follow while it is processing the RelativePath. If this happens the Server returns the NodeId of the external Node and sets the remainingPathIndex parameter to indicate which RelativePath elements still need to be processed. To complete the operation the Client shall connect to the other Server and call this service again using the target as the startingNode and the unprocessed elements as the relativePath.
|targetId||ExpandedNodeId||The identifier for a target of the RelativePath.|
|remainingPathIndex||Index||The index of the first unprocessed element in the RelativePath.
This value shall be equal to the maximum value of Index data type if all elements were processed (see 7.13 for Index definition).
|diagnosticInfos ||DiagnosticInfo||List of diagnostic information for the list of browse paths (see 7.8 for DiagnosticInfo definition). The size and order of the list matches the size and order of the browsePaths request parameter. This list is empty if diagnostics information was not requested in the request header or if no diagnostic information was encountered in processing of the request.|
Table 41 – TranslateBrowsePathsToNodeIds Service Result Codes
|Bad_NothingToDo||See Table 177 for the description of this result code.|
|Bad_TooManyOperations||See Table 177 for the description of this result code.|
Table 42 – TranslateBrowsePathsToNodeIds Operation Level Result Codes
|Bad_NodeIdInvalid||See Table 178 for the description of this result code.|
|Bad_NodeIdUnknown||See Table 178 for the description of this result code.|
|Bad_NothingToDo||See Table 177 for the description of this result code.
This code indicates that the relativePath contained an empty list.
|Bad_BrowseNameInvalid||See Table 178 for the description of this result code.
This code indicates that a TargetName was missing in a RelativePath.
|Uncertain_ReferenceOutOfServer||The path element has targets which are in another server.|
|Bad_TooManyMatches||The requested operation has too many matches to return.
Users should use queries for large result sets. Servers should allow at least 10 matches before returning this error code.
|Bad_QueryTooComplex||The requested operation requires too many resources in the server.|
|Bad_NoMatch||The requested relativePath cannot be resolved to a target to return.|