Advantages of work objects over fixed record structures
Summary
A developer asks: What is the difference between Process Commander's concept of a work object and ordinary database records?
My past database designs have included information about who updated each record, on what date and time, and so on.
Suggested Approach
Use work objects in your applications wherever the concept of units of work is relevant. Pegasystems has made major investments building work object capabilities and they add a lot of value even if your application doesn't naturally appear to benefit from using flows.
By using work objects, users automatically create history information which is useful in understanding how a decision was made and to enables the use of reporting and analytics capabilities.
By default, databases treat most rows of a table as equal. Work objects have a life cycle — an initial period of change, followed in most cases by a longer period of no change, when the work is "done" or resolved. (Of course, because work objects are stored in a conventional relational database, the full power of searching, sorting, and reporting is available for both open and resolved work objects.)
Work objects also provide excellent testing capabilities. You can create a simple work object from (from a harness rule) and a minimal flow, which allow you to test without requiring an external process or having to study the clipboard. This also gives you a way to demonstrate your work and show others what you are doing.
Experienced developers who are new to Process Commander sometimes express reluctance to use work objects because they fear this will produce excess overhead, based on C++ or Java experience with inheritance and classes.
Process Commander implements class extensions differently. In C++ or Java, extending or inheriting from a class has a performance impact, as this causes disk and memory to be set up for the full size of the extended class. When you create a class in Process Commander, no fixed amount of memory or disk is reserved. Process Commander allocates memory only as needed, and as items are used. Thus you can get the full power of Process Commander's class structure without undue overhead.