Business Rules are wonderful things, and I remember what an epiphany they were for me when Ron Ross and Barbara Von Halle began talking and writing about them in the early 90’s.
Back then, I was a data modeler — specifically, a logical data modeler (physical would come later) — as well as a business analyst. My job was to gather requirements and create a logical data model that captured those requirements as a model. The problem, of course, was that I would hear a lot of requirements that I couldn’t accurately represent in the data model. For example, I might be told that a mandatory relationship must exist between LOAN and COLLATERAL only if the type of loan (such as a mortgage) required collateral. Further, if the type of loan did not require collateral, then a relationship must not exist between LOAN and COLLATERAL. So, I did what most of you probably did when faced with the same situation: I created an optional relationship between LOAN and COLLATERAL. Which, of course, didn’t get the requirement stated properly at all. The fact that business rules filled in this gap and provided an additional vehicle to capture requirements is what made them “speak” to me so clearly.
The key factor in getting business rules correct is that they need to account for all the “real world” situations that will be encountered. When they do not, the rules fail because a situation has been encountered in which the system either doesn’t “know” how to behave, or behaves in a way that was not intended. For example, say the rule discussed above was implemented by using a list of loan types for which collateral was necessary. If a new type of collateralized loan came along (e.g., a second mortgage line of credit), the system would NOT require collateral. And that would be WRONG.
The results of failed business rules can be hilarious, frustrating, and even dangerous. An example of frustrating (probably the most common type of failure) happened to me recently. I got to O’Hare airport in Chicago very early, as we had finished our work at the office. I signed up to try and catch an earlier flight home to San Francisco by getting on the standby list. The way this list works is that the airline tries to get you on an earlier flight, and if there is no room, the standby list rolls over to the next flight going to your destination. If I was unable to get on an earlier flight, I would go home on my confirmed flight, due to leave some 5 hours later. Meanwhile, my baggage would go on the first standby flight I was listed on (whether I went or not), and if I got on a later flight, it would be waiting for me at my destination airport.
It all seems pretty logical, right? What the airline seems to have forgotten when it made these rules are that flights are often delayed. In my case, the first standby flight was delayed due to mechanical troubles. I wouldn’t have gotten on it anyway, as there were two available seats and I was number 23 on the list. At any rate, once it became apparent that the first flight was not going to leave anytime soon, I walked down to where the next flight was due to leave about a half hour later. It was a fairly long walk, as it was 10 gates away. At any rate, when I got there, I found that the standby list had NOT rolled over to that flight. Apparently, since the earlier flight had not left, the event to trigger the list to roll over had not occured! The gate agent on the next flight did her best to “pull” the list so she could assign me a seat, but the system would not let her. Back I went to gate where the first flight was delayed. Once there (slightly out of breath, I’ll admit) I explained to the gate agent what was going on, so she released the list manually. Back I went to the second flight’s gate, where the gate agent had a boarding pass for me. It was actually good that I went to all that trouble, as the the second flight had lots of empty seats and all the standby passengers got on.
I think you can see what happened here. The trigger to roll over the list should have been that either the flight had left, or that it was delayed past the time that another flight would leave. The fact that the airline had not accounted for delayed flights caused the rule to fail. What has me scratching my head to this day is that this cannot have been the first time this situation had occured — in fact, it probably wasn’t the first time that day, given the on-time record I experienced during my flights back and forth. And yet everyone seemed surprised that list rollover hadn’t worked right. Perhaps a “business rule guy” had never analyzed it before.
Oh, and if you’re wondering what happened to my luggage…yep, it stayed on the delayed flight, arriving in San Francisco late that night, some 5 hours after I had arrived and gone home. It was delivered to my home the next day. I sort of understand that, trying to locate a piece of baggage among the thousands they must handle and then get it to the “right” plane would be a logistical nightmare that would undoubtedly lead to many more lost bags. Just keep this in mind the next time you want to take an earlier flight by going standby!