Technology That Understands
Your Business
What Is REA
There are several concepts that are present in almost all business software applications. Understanding these concepts makes it much easier to design business applications, to ensure that they do not violate the domain rules, and to adapt the applications to changing requirements without the need to change the overall architecture.
These concepts are known as REA (Resources, Events, Agents). Figure below illustrates the most fundamental REA concepts, which are economic resource, economic agent, economic event, commitment, and contract.
Economic Resource is a thing that is scarce, and has utility for economic agents, and is something users of business applications want to plan, monitor, and control. Examples of economic resources are products and services, money, raw materials, labor, tools, and services the enterprise uses.
Economic Agent is an individual or organization capable of having control over economic resources, and transferring or receiving the control to or from other individuals or organizations. Examples of economic agents are customers, vendors, employees, and enterprises.
Economic Event represents either an increment or a decrement in the value of economic resources that are under the control of the enterprise. Some economic events occur instantaneously, such as sales of goods; some occur over time, such as rentals, labor acquisition, and provision and use of services.
Commitment is a promise or obligation of economic agents to perform an economic event in the future. For example, line items on a sales order represent commitments to sell goods.
Contract is a collection of increment and decrement commitments and terms. Under the conditions specified by the terms, a contract can create additional commitments. Thus, the contract can specify what should happen if the commitments are not fulfilled. For example, a sales order is a contract containing commitments to sell goods and to receive payments. The terms of the sales order contract can specify penalties (additional commitments) if the goods or payments have not been received as promised.
These concepts, together with their relationships are described in detail in the chapter What Is REA in the book Model-Driven Design Using Business Patterns.
The fact that REA modeling elements are more specific than elements such as activity or data entity, surprisingly radically increases the amount of information in the model, while preserving its simplicity. The amount of information in the model is even so high, that REA models are fully executable, without need for any additional hand-written code.