Introduction
Since the goal of this series is to walk through the thought processes and
tasks involved in building a commercial web service, we will start by describing
exactly what functionality will be provided. Fortunately (for me, at least),
it's a subject near and dear to my heart. For much of the past three years,
I have been deeply involve in designing and implementing applications for warehousing
and logistics. As a result of this work, I have developed a shipment rating
engine.
For those of you who aren't up on the terminology of logistics, the purpose
of a shipment rating engine is to determine the lowest cost to send a shipment
to its destination. Now the factors that are used to determine the cost include
the distance traveled, the weight of the item being shipped, how quickly the
shipment needs to arrive and the type of material being shipped.
Now having the distance and weight being part of the calculation is quite
natural. The delivery time affects the cost by limiting the methods that can
be used to deliver the shipment. There are three main delivery methods. Full
trailer loads (FTL) shipments are exactly that. A company basically fills a
trailer with goods all going to the same destination. Less than load (LTL) shipping
is more common. Only part of a trailer is filled, usually by goods placed on
wooden palettes. The final category is small packages (SPS). You would know
this group better as Federal Express or UPS. Generally speaking, the difference
between these modes is the size of the package and the speed of delivery. Oh
yeah. And cost. FTL shipments cost less per pound/mile than LTL which costs
less than SPS.
The other factor that goes into the shipping rate calculation is the density
of the material being shipped. To put it into simple terms, it costs less to
ship a ton of lead than a ton of feathers. The reason? You can pack more lead
then feathers into the same space. And when you're dealing with the limited
space of a trailer or an airplane cargo hold, that's an important consideration.
So given this incredible wealth of useful information, what will our web service
do? Simply put, I expect that people who are making shipments will provide our
service with enough information for our rating engine to do its magic. The result
will be a list of the delivery methods (given the delivery date, of course)
valid for the shipment, along with the corresponding rate. As well, to help
companies with some inventory issues that we have seen (and to help with our
discussion on creating transactions within the web service structure), we will
implement a basic inventory allocation mechanism. The details of the messages
that we will be using appear in the next section.