IBM BPM, V8.0.1, All platforms > Programming IBM BPM > Business objects programming > Programming techniques > Create nested business objects
Single instance of a nested business object
Use the setWithCreate function to create a single instance of nested business object.
The following example code shows how you would normally have to create code for an intermediate (child) object from a higher level (parent) object in order to create a third-level (grandchild) object. The XSD file would look like this:
<?xml version="1.0" encoding="UTF-8"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:complexType name="Parent"> <xsd:sequence> <xsd:element name="name" type="xsd:string"/> <xsd:element name="child" type="Child"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="Child"> <xsd:sequence> <xsd:element name="name" type="xsd:string"/> <xsd:element name="grandChild" type="GrandChild"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="GrandChild"> <xsd:sequence> <xsd:element name="name" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:schema>
If you used the traditional "top-down" method to set the business object data, you would have to process the following code specifying the child and grandchild objects before setting the data in the grandchild object:
DataObject parent = ... DataObject child = parent.createDataObject("child"); DataObject grandchild = child.createDataObject("grandChild"); grandchild.setString("name", "Bob");You can use a more efficient method by using the setWithCreate function to simultaneously define the grandchild object and set its data, without having to specify the intermediate child object. The following example code shows how you would accomplish this task:
DataObject parent = ... parent.setString("child/grandchild/name", "Bob");
Results
The lower-level business object data is set without having to reference the intermediate-level business object. An exception occurs if the path is not valid.