Imagine yourself in the middle of the integration process. You're staring at a requirement asking you to update, let's say a SiebelMessage, that was just queried, and is being processed by one of your workflows in order to be consumed by some 3rd party system somewhere around the edge of the universe. But the update is not just an ordinary update, it has conditions. For example, “Action Code” of the Order Line Item to be passed for further transformation has to be “Add”, and the product of the same OLI has to be some kind of a phone, any kind you can imagine. Add a bit of sorting, a teaspoon of “Get The First That Matches The Condition”, a drop of “Delete That Element”, and you have your recipe of a complex and painful solution you are about to implement.