REA (Resources, Events, Agents)

While researching domain-driven design, I came across the term “REA,” which stands for Resources, Events and Agents (and Commitments and Contracts). It’s hardly an earth-shattering concept, but it provides a clear, logical framework for modeling real-world processes in software.

I’ve studied a fair amount of accounting and always felt the intangibility of debits and credits made them an odd way to model financial accounts, so I was particularly intrigued that REA’s original use was to model financial accounts directly:

The REA model gets rid of many accounting objects that are not necessary in the computer age. Most visible of these are debits and credits—double-entry bookkeeping disappears in an REA system. Many general ledger accounts also disappear, at least as persistent objects,—e.g., accounts receivable or accounts payable. The computer can generate these accounts in real time using source document records.

REA treats the accounting system as a virtual representation of the actual business. In other words, it creates computer objects that directly represent real-world-business objects.

The free chapter “What is REA?” from the 2006 book Model-Driven Design Using Business Patterns by Pavel Hruby provides a clear introduction to REA.

Posted by James on Thursday, July 07, 2011