I confess: I’m a huge fan of business object layers. It’s my personal goal to plaster every platform and application in the SAP space with powerful, feature-rich and completely interoperable business object layers. This first instalment of my blog series about business object layers shines some light at the fundamental terms business object, entity, and business process.
In case you haven’t worked with one before, please let me explain what a business object is.
Every business application system (e.g. the SAP Business Suite) contains a domain model of the business domain it supports. This means that a business application dealing, for example, with financials has a representation of the (more or less abstract) real-world objects of this particular domain such as financial records, creditors, debitors, invoices, ledgers, and so on.
One aspect of this representation is the data it needs to store in order to represent the real-world object. This part can be fairly detailed and break the representation down into several elements such as a document header, positions (perhaps even different types of positions), and so on. It also contains the relationships between both the object parts and objects. (Examples: object parts would be header and positions, related objects would be creditor, approver, account, cost center.) At the technical level, this is the application’s data model: the database tables in which all the object parts are stored.
The other aspect of the representation are the operations that can be performed on each object. For example, an invoice can be created, edited, checked, forwarded, rejected, approved, paid, cancelled, changed, archived, and so on. At a technical level, this is source code that manipulates database records or their counterparts in the application’s memory.
Fig.: Business Object
These two – data and operations – belong closely together. The operations contain the checks and business logic that guarantee that the data is always changed in a consistent way. Only in conjunction do the data and operations represent a real-world object in a meaningful way. Such a representation of a real-world object in an application system, consisting of data and operations, is called a business object. (Note: The data are normally called the attributes and the operations are called the methods of the business object.)
Since we’re already in full swing defining and explaining terminology, let’s quickly cover the entity, which is a closely related notion. The terms business object and entity are frequently used interchangeably, but there are some subtle differences:
For completeness’ sake, I should mention that while most applications store their business objects and the entities of which they consist in the local database, some applications perform on remote business objects and entities, consuming data and ordering the execution of business object methods through remote interfaces such as web services or Remote Function Calls. This is a rising trends thanks to the widespread adoption of technology-independent standards such as SOAP and REST.
Business Objects are one thing, but without a business process they would just lie there passively waiting for somebody to do something with them. This is where the business process comes into play: A business process is a procedure that consists of several steps that may be performed by one or several different users and the system. A business process may touch a number of different business objects along the way. Most steps involve executing a method of a business object.
Now what’s important to understand is that in many business domains, the business processes change much faster than the business objects. Business objects such as customer, invoice, or material don’t change their structure frequently and are thus quite stable.
However, the processes around them change much more frequently:
Meanwhile, the business objects remain unchanged.
(By the way, the idea that business processes change frequently due to innovation and their dependency on changing variables such as organization while application cores are more stable is at the heart of SAP’s product philosophy for NetWeaver BPM, which externalizes those changing business processes to allow for flexibility and rapid adaptation at the process level while minimizing the impact on the application core in the ABAP backend system.)
It’s clear that the business objects as the stable foundation of an ever-growing and ever-changing multitude of business processes, are the most valuable unit of reuse in a business application system.
Please bear with me, I’ve got to repeat this because it can’t be stressed enough: Business objects are the most valuable unit of reuse in a business application system. Consequently, exposing and consuming a business object for reuse should be very easy and well-supported by the infrastructure. This is what we’ll discuss in the series’ next instalment.