Business Objects

In my opinion, trying to build a reusable Customer object or a reusable Invoice object is hopeless.  Most large companies can't even come up with a single definition for these objects, so how can we do it across industries?  However, there are lots of ways to make reusable business objects.  The key is to standardize at a higher level of abstraction.  If you've done enough business programming then you will know that there are certain patterns that occur over and over. We have to build our business objects to automate these patterns.

I've been looking at several kinds of frameworks for business objects.  These are not the only frameworks you would need for business objects, but are representative of the more business-specific ones. I am always looking for partners, so if you are interested in using or building a framework like this, please let me know.

Business Transaction Processing

Business transactions are different from database transactions.  They are the sort of transactions that a businessman would care about, like checks, sales receipts, and timecards.  A business transaction processing system is a system like payroll, sales processing, inventory, or accounting, which has a model of the business that is changed only when a business transaction occurs.  Business transactions are objects and are saved as part of a complete audit trail.

See my patterns for Transactions and Accounts and the work that Hiroaki Nakamura is doing on a framework based on the REA model.  Earlier, we built a framework called Accounts.  A key to both of these systems is representing business rules as objects that can be stored in a database and changed without changing any code.

In the summer of 1997 I ran a workshop on business transactions.

Workflow

Although a lot of work has been done on workflow system, most of it does not seem to have been designed for object-oriented systems.  Dragos Manolescu is working on a framework for workflow that not only works well with object-oriented applications, but is object-oriented to the core.

Dynamic Object-Models

Many business systems are primarily information models, and the information changes rapidly.  The systems primarily manage the information, and most of the code is interfacing with the GUI or the database.  I've seen several systems like this based on a Dynamic Object-Model, and have been studying and using these techniques.  In fact, both our workflow framework and the REA-based framework are examples.

Joe Yoder is keeping information on this topic, and has helped run some workshops on it.

Banking patterns and framework

Other interesting links

Business Objects in JBuilder
A practical alternative to business objects
SanFrancisco
Agorics - lots of interesting links about e-commerce, auctions, and business on the net
Ralph Johnson