In computer software, business logic or domain logic is the part of the program that encodes the real-world business rules that determine how data can be created, displayed, stored, and changed. It is contrasted with the remainder of the software which might be concerned with lower-level details of managing a database or displaying the user interface, system infrastructure, or generally connecting various parts of the program.
Details and example
- Models real life business objects (such as accounts, loan, itineraries, and inventories)
- Prescribes how business objects interact with one another
- Enforces the routes and the methods by which business objects are accessed and updated
Business logic comprises:
- Business rules that express business policy (such as channels, location, logistics, prices, and products); and
- Workflows that are the ordered tasks of passing documents or data from one participant (a person or a software system) to another.
For example, an e-commerce website might allow visitors to add items to a shopping cart, specify a shipping address, and supply payment information. The business logic of the website might include rules like:
- Adding an item more than once from the item description page increments the quantity for that item.
- Specific formats that the visitor's address, email address, and credit card information must follow.
- The sequence of events that happens during checkout, for example allowing the billing address to be copied from the shipping address already supplied.
- A specific communication protocol for talking to the credit card network
The web site software also contains other code which is not considered part of the core business logic:
- Peripheral content not related to the core business data, such as the HTML that defines the colors, appearance, background image, and navigational structure of the site
- Generic error-handling code (e.g. which displays the HTTP Error Code 500 page)
- Initialization code that runs when the web server starts up the site, which sets up the system
- Monitoring infrastructure to make sure all the parts of the site are working properly (e.g. the billing system is available)
- Generic code for making network connections, transmitting objects to the database, parsing user input via HTTP POST events, etc.
Business logic and tiers/layers
Business logic could be anywhere in a program. For example, given a certain format for an address, a database table could be created which has columns that correspond exactly to the fields specified in the business logic, and type checks added to make sure that no invalid data is added.
Business logic often changes. For example, the set of allowable address formats might change when an online retailer starts shipping products to a new country. Thus it is often seen as desirable to make the code that implements the business logic relatively isolated, or loosely coupled. This makes it more likely that changes to business logic will require a small set of code changes, in only one part of the code. Distant but strongly coupled code also creates more of a risk that the programmer will only make some of the necessary changes and miss part of the system, leading to incorrect operation.
A multitier architecture formalizes this decoupling by creating a business logic layer which is separate from other tiers or layers, such as the data access layer or service layer. Each layer "knows" only a minimal amount about the code in the other layers - just enough to accomplish necessary tasks. For example, in a model–view–controller paradigm, the data access layer ("model") or database and "view", or user interface layer, might be made as passive as possible, with all the business logic concentrated in the controller. In the e-commerce example, the controller determines the sequence of web pages in the checkout sequence, and is also responsible for validating that email, address, and payment information satisfy the business rules (rather than leaving any of that up to the database itself or lower-level database access code).
Alternative paradigms are possible. For example, with relatively simple business entities, a generic view and controller could access database objects which themselves contain all the relevant business logic about what formats they accept and what changes are possible (known as the database model).
Tools and techniques
The business rules approach of software development uses BRMSs and enforces a very strong separation of business logic from other code. User interface management systems are another technology used to enforce a strong separation between business logic and other code. The magic pushbutton is considered an "anti-pattern": a technique that in this case creates undesirable constraints which make it difficult to code business logic in an easy-to-maintain way.
A domain model is an abstract representation of the data storage types required by business rules.
- Steven Minsky (2005-03-27). "The Challenge of BPM Adoption". eBizQ.
- Khawar Zaman Ahmed and Cary E. Umrysh (2001-10-17). "Introduction to Enterprise Software". Developing Enterprise Java Applications with J2EE and UML. Addison-Wesley. ISBN 0-201-73829-5.
- James Owen (2003-09-19). "Bring business logic to light: JRules 4.5 tames business rules with friendly tools". JavaWorld.
- Brett McLaughlin (March 2002). "Business Logic, Part 1". Building Java Enterprise Applications, Vol I: Architecture. O'Reilly and Associates. ISBN 0-596-00123-1. — McLaughlin discusses the façade pattern for implementing the business layer of an application.
- Kathy Bohrer (November 1997). "Middleware isolates business logic". Object Magazine (New York, USA: SIGS Publications, Inc.) 7 (9): 41–46;. ISSN 1055-3614.
- Harumi Kuno, Mike Lemon, Alan Karp, and Dorothea Beringer (2001). Conversations + Interfaces = Business Logic. In F. Casati, D. Georgakopoulos, and M.-C. Shan. "Technologies for E-Services: Second International Workshop, TES 2001, Rome, Italy, September 14–15, 2001, Proceedings". Lecture Notes in Computer Science 2193 (Springer Berlin / Heidelberg). ISSN 0302-9743.
- Volker Turau (2002). "A framework for automatic generation of web-based data entry applications based on XML". Proceedings of the 2002 ACM symposium on Applied computing, Madrid, Spain: Web and e-business application. ACM Press. pp. 1121–1126. ISBN 1-58113-445-2. — Turau presents an application framework implemented using Java Servlets and JavaServer Pages that enables the separation between business logic and presentation logic, allowing development of each to proceed in parallel along relatively independent but cooperating tracks.
- Pau, L-F. and Vervest, P.H.M. (2003-12-08). Network-based business process management: embedding business logic in communications networks. ERIM Report Series Research in Management. Erasmus University. hdl:1765/1070. — Pau and Vervest develop an approach for the embedding of business logic into the communications network that underlies a distributed application with a multiplicity of actors, in order to optimise the allocation of business resources from a network point of view.