Creating data objects
BOFactory boFactory = (BOFactory)ServiceManager.INSTANCE.locateService("com/ibm/websphere/bo/BOFactory");
The following code snippet shows how you can determine the type of a process variable and create a new data object of that type:
Type type = getVariableType("Output");
Output = boFactory.createByType(type);
To create a nested data object, you can use the createDataObject method of the DataObject:
DataObject nested = Output.createDataObject("processBusinessObject");
You can also create a data object using the create method of the BOFactory service. You have to specify name and namespace:
MyBO = factory.create(" http://JavaSnippets/bpc/samples","BO");
Copying data objects
BOCopy copyService = (BOCopy)ServiceManager.INSTANCE.locateService("com/ibm/websphere/bo/BOCopy");
The BOCopy service offers to methods to create a deep copy of data objects: copy and copyInto. The copy method returns a copy of the original DataObject and the copyInto method allows to copy the original DataObject into the structure of an existing DataObject.
Copy:
DataObject dataObject = copyService.copy(ProcessBusinessObject);
CopyInto:
copyService.copyInto(ProcessBO, Output, "processBO");
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%> <%@page import="com.ibm.websphere.sca.ServiceManager"%> <%@page import="com.ibm.websphere.bo.BOFactory"%> <%@page import="commonj.sdo.DataObject"%> <%@page import="java.util.ArrayList"%> <%@page import="java.util.List"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=GB18030"> <title>Insert title here</title> </head> <body> <% ServiceManager serviceManager = ServiceManager.INSTANCE; //Create the Business Object factory to create business object at runtime BOFactory boFactory = (BOFactory)serviceManager.locateService("com/ibm/websphere/bo/BOFactory"); %> Initialization for BO Factory is done. <br> <% //Create Customer business object //Use BOFactory.create() method to create the data object, because the business object is created by the Business Object editor //First parameter is the namespace of the business object. You can find it from the Namespace field of the properties view in the Business Object Editor. //Second parameter is the name of the business object. It can be found in the Name field of the properties view in the Business Object Editor. DataObject customer = boFactory.create("http://BankModule/com/bank/eMerged", "Customer"); //set values for the simple-typed attributes customer.setString("customerName", "John Smith"); customer.setString("customerId", "11111111"); //The customer business object has an attribute of type Address, which is another business object. //To set value on this attribute, create a business object using DataObject.createDataObject(). //However, because this method will overwrite any existing value, add isSet() to make sure the attribute is not already set. if (!customer.isSet("address")){ DataObject address = customer.createDataObject("address"); address.setString("wholeAddress", "8200 Warden Avenue"); //The only attribute left is the "accounts" attribute. A customer business object contains a list of accounts. //First, create the data object for the Account business object. And set the values for the attributes DataObject ac1 = boFactory.create("http://BankModule/com/bank/eMerged", "Account"); ac1.setString("accountNum", "ABC12345"); ac1.setFloat("balance", 5678.9f); DataObject ac2 = boFactory.create("http://BankModule/com/bank/eMerged", "Account"); ac2.setString("accountNum", "DEF34567"); ac2.setFloat("balance", 100.3f); //Second, prepare the list for adding the account data object ArrayList acList = new ArrayList(); acList.add(ac1); acList.add(ac2); //Third, set the "accounts" attribute to be the list. customer.setList("accounts", acList); } %> Customer business object has been created. <br> <br> Printing customer information... <br> <!-- Retrieve customer name --> Customer name: <%= customer.getString("customerName") %> <br> <% //Retrieve customer address object DataObject address2 = customer.getDataObject("address"); %> Customer address: <%= address2.getString("wholeAddress") %> <br> Customer's account list which is an array: <% //Retrieve the list of customer accounts List list = customer.getList("accounts"); DataObject a1 = (DataObject)list.get(0); %> <br> Account 1 : <%= a1.getString("accountNum")%> </body> </html>