Skip to Content

A few days ago I went to my DMVS (department of motor vehicle) center to get my driver’s license. I went to the closest exam center, which is in Norcross, to take a written and hopefully a road test. For those who’ve never been there, the visitor’s area is a big hall with 20 counters, 3 big screens with numbers running on them, many seats and hundreds of visitors. I was told it serves between 400 and 700 people a day. Staying in the line hearing almost incessant announcments and looking at visitors and inspectors dashing about I had a firm sensation that all this very much reminded me something. Guess what?! – right, ESA! I was looking at every element of the interaction and more and more was becoming sure that this is quite a strong implementation of ESA, not in software but our real life. Let me explain.

As you get to the center a big guide sign meets you: “ALL visitors to the info desk!”. This is a Dispatcher-Controller pattern. The Dispatcher lady accepts all visitors and after giving basic instructions (“we accept only cash!”) and checking your docs (“where is your address proving bill?”) redirects you to a queue and assigns you a unique (ordinal) number. By the way, there are two-three ladies at the desk so there is scalability and availability in place! After you get your number you’re put in one of about a dozen virtual queues (or workflows) for your needs: passing tests, changing address, getting license back after revoking and so on. Every such purpose has its own workflow with special rules residing to it.

So each visitor becomes an “object” routing between different services according to a specific workflow and notified by proper messages. Such coordination is hidden from visitors but happens “behind the scenes” in a workflow managing system. This is the Dynamic Router pattern – the heart of the system. This Dynamic Router knows where to send you on the next step of your workflow depending on your results of the previous one. You’re advancing from service to service (from counter to counter) when your number is announced and it appears on those big screens I mentioned before. What about services? They’re supplied by brave DMVS employees standing at the 20 counters. They’re grouped by the functionality they supply and serve the next “object” in a service queue. For instance some fill out your form and verify the docs you brought. Others take your signature, fingerprints, and your photo. A third performs vision checks and so forth. Every service knows how to carry out its own operation. It neither cares where you came from nor does it know where you will go after. All it knows is to double check your “input parameters” perform its operation then “return some result” and finally “log” it to the system.

What is cool is you don’t worry about where to go next, either! The Dynamic Router service takes care about you. In practice you wait for your number to appear on the screens showing you the next counter to attend and announced by an electronic voice (“number A485 at counter 17”). You’re sitting and waiting. Now what about collision resolving? What if you lost your number? What if you missed your queue? In such a case you come to the Dispatcher lady which enqueues you again to the workflow hopefully to the point right after the last stage you successfully have passed. Big hint: messages can expire. A friend of mine, after successful passing her driving test, couldn’t wait to get the license and took all the documents home. When she came back a day after, the Dispatcher lady didn’t allow her to enter the queue on the last stage. Sorry, Sarit:-( So she had to start her workflow from scratch and thankfully she passed it again (now to the end of the workflow:-)

What about scalability availability and performance, you’ll ask? As I said every service is scalable over several counters. And hence available. Performance at Norcross was quite impressive (I came there at 10.30am successfully passed my both tests and at 1.30pm went out with my license in hands). Everything was functioning fine and fast. I like our projects implemented in a similar way:-) Not that I wish you to attend a DMVS center. But if you have to, pay attention to this brilliant ESA implementation and good luck with your tests!

To report this post you need to login first.


You must be Logged on to comment or reply to a post.

  1. Pankaj Kumar

    Very interesting analogy. It is similar over here in Bay Area at different DMV(Department of Motor Vehicles)Your analogy also reminds me of a exhibit I saw at an airport and was mesmerized looking at it and pondering over that how much it looks simliar to WebAS. The exhibit had a lot small plastic balls (objects) being routed through diffrent paths by use of queues (a small pipe), dispatchers (a small gear).  

  2. Former Member
    Very interesting one and my practical experience in numerous instances is that, how complex may be the task, if you sclae it down to integratable Sub tasks, it’s definitely achievable.
    1. Former Member
      Very interesting one and my practical experience in numerous instances is that, how complex may be the task, if you scale it down to integratable Sub tasks, it’s definitely achievable.
  3. Former Member
    Interesting! I think we see many examples of these kind in our everyday lives but really don’t pay attention. Some times I have seen places where I thought they had a perfect opportunity to implement an ESA to increase the performance of the services provided.
  4. Former Member

    The description is of ESA  in real scenario is excellent.  I wish most of the weblogs are like this which can make users to understand the New technologies in better way.

    Raja Gopal

  5. Former Member
    I am impressed by the explanation of design patterns by the author. Would love to see more of this correlation. It makes things easy to understand.
  6. Former Member
    Hi Roman.
    I’m new on ESA, and i need to design some services for a workflow regarding “Budget Authorization” using SAP modules. The idea of ESA is to redesign the business process?

Leave a Reply