in https://forum.unified-automation.com/viewtopic.php?f=38&t=8239 I read the support team mentioning the SubtypeOverride. Since I am trying to implement a method which creates the instance of a parent object which includes various child objects. These child objects have be Subtypes.
Lets assume for example that my information model looks like this:
Code: Select all
MyInformationModel
└─ ObjectTypes
├─ MyParentObjectType
│ ├─ MyChildObject1 (Component, Type: MyChildObject1Type)
│ └─ MyChildObject2 (Component, Type: MyChildObject2Type)
│
├─ MyChildObject1Type
│ ├─ MandatoryVariable1 : <DataType> [Mandatory]
│ └─ OptionalVariable1 : <DataType> [Optional]
│
│ └─ MyChildObject1Subtype (SubtypeOf: MyChildObject1Type)
│ ├─ MandatoryVariable1 : <DataType> [Mandatory]
│ └─ OptionalVariable1 : <DataType> [Mandatory] // upgraded to mandatory
│
└─ MyChildObject2Type
├─ VariableA : <DataType> [Mandatory]
└─ VariableB : <DataType> [Mandatory]
Code: Select all
reateObjectSettings myParentObjectSettings = new CreateObjectSettings()
{
BrowseName = new QualifiedName("MyParentObject_123", DefaultNamespaceIndex),
EventNotifier = EventNotifiers.SubscribeToEvents,
NotifierParent = new NodeId(Objects.MyFolder, DefaultNamespaceIndex),
ParentNodeId = new NodeId(Objects.MyFolder, DefaultNamespaceIndex),
ReferenceTypeId = UnifiedAutomation.UaBase.ReferenceTypeIds.Organizes,
RequestedNodeId = new NodeId("MyParentObject_123", DefaultNamespaceIndex),
TypeDefinitionId = new NodeId(ObjectTypes.MyParentObjectType, DefaultNamespaceIndex),
SubtypeOverrides = new List<SubtypeOverride>
{
new SubtypeOverride
(
AbsoluteName.ToString(new QualifiedName("MyChildObject1Type", DefaultNamespaceIndex)),
new NodeId(ObjectTypes.MyChildObject1Subtype)
)
}
};
ObjectNode myParentObjectNode = CreateObject(Server.DefaultRequestContext, myParentObjectSettings );
MyParentObjectModel myParentObject = new MyParentObjectModel();
LinkModelToNode(myParentObjectNode.NodeId, myParentObject , null, null, 500);Thank you and best regards,
JK
