IBM BPM, V8.0.1, All platforms > Get started with IBM BPM > Key concepts > Business objects

Work with business objects

Service Component Architecture provides the framework for defining an application module, the services it provides, the services it consumes, and the composition of components that provide the business logic of the application module. Business objects play an important role in the application, defining the business data used to describe the service and component contracts and the business data that the components manipulate.

The following diagram depicts an SCA application module and illustrates many of the places in which the developer works with business objects.

Figure 1. Business objects represent the data that flows between services in an application

This topic describes how business objects are used by SCA application modules. If you are using Java™ interfaces, the SCA application modules can also process Java objects.


Business object programming model

The business object programming model consists of a set of Java interfaces that represent:

Business object type definitions are represented by the commonj.sdo.Type and commonj.sdo.Property interfaces. The business object programming model provides a set of rules for mapping the XML schema complex type information to the Type interface and each of the elements in the complex type definition to the Property interface.

Business object instances are represented by the commonj.sdo.DataObject interface. The business object programming model is untyped, which means that the same commonj.sdo.DataObject interface can be used to represent different business object definitions, such as Customer and Order. The definition of which properties can be set and retrieved from each business object is determined by type information defined in the XML schema associated with each business object.

The business object programming model behavior is based on the Service Data Object 2.1 specification. For additional information, see the SDO 2.1 for Java specification, tutorials and javadocs on the web: http://osoa.org/display/Main/Service+Data+Objects+Specifications.

Business object services support various lifecycle operations (such as creation, equality, parsing, and serialization) on business objects.

For specifics on the business object programming model, see Programming using business object services and the Generated API and SPI documentation on business objects.


Bindings, data bindings, and data handlers

As shown in Figure 1, business data used to invoke services provided by SCA application modules is transformed into business objects so that the SCA components can manipulate the business data. Similarly, the business objects manipulated by SCA components are converted into the data format required by the external services.

In some cases, such as the web service binding, the binding used to export and import services automatically transforms the data into the appropriate format. In other cases, such as the JMS binding, developers can provide a data binding or data handler that converts non-native formats into business objects represented by the DataObject interface.

For more information on developing data bindings and data handlers, refer to Data handlers and Data bindings.


Components

SCA components define their provision and consumption service contracts using a combination of the Web Services Description Language and XML schema. The business data that SCA passes between components is represented as business objects using the DataObject interface. SCA verifies that these business object types are compatible with the interface contract defined by the component to be invoked.

The programming model abstractions for manipulating business objects vary from component to component. The POJO component and the mediation flow component Custom primitive provide direct manipulating of the business objects by enabling Java programming directly using the business object programming interfaces and services. Most components provide higher level abstractions for manipulating business objects, but also provide snippets of Java code for defining custom behavior in the business object interfaces and services.

Business objects can be transformed using either the combination of the Interface Flow Mediation and Business Object Map component or the mediation flow component and its XML Map primitive. These business object transformation capabilities are useful for converting application specific business objects to and from generic business objects.

Business objects