×
The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.
That's why I've long though the term programmer/analyst is the most
accurate description of what we do. This question is actually a little
larger than it looks at first, but we can start with the fundamentals
that we always use: identify the conditional processing which in turn
depends on how the condition is specified and how it affects the processing.
In this case, the condition is pretty simple: took care of Mr. Kelly's
car during the Depression. That's a function that you call that returns
True or False. The devil is in the details of course. Could this apply
to someone other than Mr. Kelly? Could there be a different date
range? The database implementation could be as simple as a flag on the
employee file, and the function could take an employee number and return
an indicator. Or you could have to specify an owner ID and date range,
have a vehicle master with owner ID, and a vehicle care log, and bounce
the employee number against that log. But at the end of the day, you
start with an employee and get a yes/no flag.
The processing is a little trickier as well. When is this rule
applied? And that in turn hinges on how the rate is stored and
accessed. Is there an employee maintenance function that sets the rate
in the employee file? Or do you always retrieve the rate dynamically
from a rate file based on the employee classification?
If the rate is stored by employee it's both simpler and broader in
scope. When you maintain the employee, you update the rate. That's
where you apply the business rule. Assuming that the rate is updated in
the employee master based on the union position, then changing the
position should change the rate. The simplest plan would probably be to
have two fields: a rate and an adjustment. When you update the rate,
also check the flag and if the flag is set, put .05 into the adjustment
field. Then when you retrieve the rate, retrieve the sum of those two
fields. So the business logic goes into the update/read of the employee
record.
If instead you retrieve the rate dynamically from a rate file, you put
similar logic into that function: use the employee to get the union
rate, then use the employee to get the adjustment, and add the two. So
in this case, the logic goes into the rate master file.
So, at the end of the day, the business logic is attached to the file
whose data point is changed based on the condition. I know tha'ts
pretty simplistic, but a good architectural approach is nearly always
simple. That's not to say it's always easy; simple and easy aren't
necessarily synonyms. But the same way that I know my code is getting
better when I start removing lines, I know my design is getting better
when I start removing complexity.
On 11/8/2018 8:19 PM, Booth Martin wrote:
My first eye-opening experience with business rules was the rule
"Anyone who took care of Mr Kelly's car during the depression gets a
nickle an hour above the union rate." That happened to be one guy.
But there had to be a rule. How does one put that rule in the database?
On 11/8/2018 7:35 PM, Jim Oberholtzer wrote:
That's what a properly designed database does, enforce business rules
with constraints and relational integrity built in. It's not that
hard to build.
Jim Oberholtzer
Agile Technology Architects
As an Amazon Associate we earn from qualifying purchases.