Business Logic vs. Functional Logic
One of the most subtly different issues that need to be clear when we talk about service orientation is the concept of business logic versus the classic concept of functional logic. In this, as in so many things, semantics is fundamental, and that is why it is convenient to be very precise with the vocabulary we use because two apparently equivalent concepts may not be at all.
The difference between business logic and functional logic is directly related to what we said here about the business processes orientation versus the functional areas orientation.
Functional logic is the one that we have always managed to define the scope and flow of information, user interface, etc. of an information system. For example, a state transition diagram of an entity helps to identify and define the states of an entity and possible transitions from one state to another. And in this way appears functional logic that must implemented within the information system through data modeling, the user interface, and internal processes that solve that logic.
Instead, business logic refers to the external flow, transversal to the organization, between different information systems inside and outside each functional area.
In other words, for a certain entity or process, functional logic defines what happens within the information system as a consequence of any event on that entity or process, while business logic defines what happens outside the information system as a consequence of those events on that entity or process, that have an impact on business processes (and therefore in other functional areas and information systems).
In my opinion, it is very important to be clear about this difference in order to make a correct analysis, both functional and business processes, and to make a correct diagnosis about what a service (business service) can be and what not.
Do not confuse business logic in a SOA-BPM scenario, with the business layer of a classic three-layer architecture of an information system. As you see, semantics constantly cheats us and it is very easy to mix concepts from different paradigms and architectures. I guess it’s the price we pay for devoting ourselves to a discipline that evolves so fast.