Exchange and conversion of resources are fundamental processes for businesses; that’s why many enterprise software systems track resources movement. The most valuable thing for an organization is money. Nonetheless, they also need to take into account other resources: goods, materials, labor.
Accountancy is a large and old profession. One of the most fundamental concepts in accounting is double-entry book-keeping: you keep track of states of accounts by tracking every single movement of resources. If you have all movement records, then you can recalculate balances of the accounts.
Martin Fowler gives the following basic model of accounts, entries and transactions in his article “Patterns of accounting”:
There is a more complex data model for accounting systems. The authors call it REA (resources, events, agents) and treat it as a business process modeling ontology.
The most fundamental concepts of REA are the following:
Economic resource: a thing that is scarce and has utility for economic agents and is something users of business applications want to plan, monitor and control.
Economic agent: an individual or organization capable of having control over economic resources, and transferring or receiving the control to or from other individuals or organizations.
Economic event: a change in the value of an economic resource that is under the control of the enterprise. Each economic event is either an increment economic event or a decrement economic event.
Commitment: a promise or obligation of economic agents to perform an economic event in the future. Each commitment is either an increment commitment or a decrement commitment.
There are also some fundamental rules (axioms):
Stockflow axiom: At least one increment economic event and one decrement economic event exist for each economic resource; conversely increment and decrement economic events must affect identifiable economic resources.
Duality axiom: All decrement economic events must be eventually paired in duality relationships with increment economic events and vice-versa.
Participation axiom: Each economic event must be related by a provide relationship to an economic agent and by a receive relationship to an economic agent.
Reciprocal axiom: Each increment commitment must be related by a reciprocity relationship to at least one decrement commitment and vice versa.
Fulfillment axiom: Each commitment must be fulfilled by at least one economic event; increment commitments must be fulfilled by increment economic events and decrement commitments must be fulfilled by decrement economic events.
Frederik Gailly represented core concepts of REA in UML class diagram model:
In theory, an ontology is a “formal, explicit specification of a shared conceptualization”. As REA is an ontology, it is a widespread generalized model. And if you make your accounting system on top of REA, you get an advantage of more easy integration with other systems that use this ontology too. I hope that in the near future REA will become more popular, and will help to reduce cost of accounting data integration as ISO15926 ontology does in systems engineering software.
If you design an accounting system, it’s also helpful to read Martin Fowler’s “Accounting patterns”. He described some interesting cases and patterns there.