Is it intended that a client calls implicit the method of the ObjectType (from the server object, ns=0) instead of the owner Object itself in the CallMethodRequest->ObjectId?
Seen in the instance space Server->ServerConfiguration->CertificationGroups->DefaultApplicationGroup->TrustList functions like OpenWithMasks.
The client request the Method with ObjectId ns=0;i=12642 (the real parent NodeId), but for the MethodId ns=0;i=12543 is used from the ObjectType instead of the real Method ns=0;i12663 below the parent object.
This ends up that some server did not find the HasComponent reference between the server ObjectId and the MethodId to call. Is this intended?
From https://reference.opcfoundatio.....Part3/4.7/
"NOTE The owning Object or ObjectType is specified in the service call when invoking the Method."
To solve this requirement a server requires internal knowledge about the MethodDeclarationId or check internally whether the ParentNode is from a TrustListType and may redirect the method NodeId to the real method Node callback.
What is the advantage of this kind of behavior/requirement for the client?
05/30/2017
There are 3 cases:
1) ModellingRule=None: ObjectId: Type, MethodId: Method of Type;
2) ModellingRule=Mandatory/Optional: ObjectId: Instance, MethodId: Method of Type;
3) ModellingRule=Mandatory/Optional: ObjectId: Instance, MethodId: Method of Instance;
The MethodDeclarationId provides a short cut from the "Method of Instance" to the "Method of Type".
2) and 3) are 2 ways of doing the same thing. 2) was needed because Alarms have Methods (e.g. Acknowledge), however, Alarms do not always have instances in the AddressSpace. It is also useful for Clients that have the ObjectId and TypeDefinitionId because it means they do not need to Browse for the MethodId.
1 Guest(s)