Re: WorkFlow / Process Design Pattern

kurbylogic_at_hotmail.com
Date: 02/08/05


Date: 7 Feb 2005 23:51:38 -0800

Take a look at Microsoft Patterns & Practices site, expecially if you
are using .NET. You can download the UIP application block which is
distributed as source code. Most of the "plumbing" is done for you so
you don't need to go about reinventing the wheel. The User Interface
Process Application Block is based off the Model View Controller
pattern. It allows you to seperate the "process steps" from the views
so that you can design Web Applications, Windows Forms, and Wizards, or
whatever without changing the existing code. Views, navigators,
transitions, etc are all defined in the app.config/web.config file
allowing you to change presentation components without modifying the
source code.
Task state can be persisted in a variaty of places such as local
memory, issolated storage, or a database (configurable in app.config),
allowing Tasks to be started, suspended, and resumed (ie user is
checking out of an online store finds that his address is no longer
correct, begins a new edit profile task to change his address and then
resumes the order where he left off). The documentation is reasonably
good, and it also includes several "QuickStart" applications to
demonstrate the functionality. It "might" be overkill for what you
need however the core functionality is rather straight forward and the
extras are more like options to for different application types and
deployment scenarios. ie use do you want a wizard or do you want to
allow the user to jump around a bit more, a memory state provider might
work well for a simple windows application where you don't need to save
state beyond the application lifetime, but if you have a web farm you
would probably want to use the database storage provider so that
subsequent requests can be handled by any server, and a secure
issolated storage provider might be most appropriate for a smart client
application that doesn't have the necessary permissions to save state
to the file system. If nothing else it might give you some ideas.

http://msdn.microsoft.com/library/en-us/dnbda/html/distapp.asp

There are other application blocks available as well, all distrubuted
as source code.
My favorate addition to Microsoft Patterns & Practices, site is
Enterpise Library. It was just released to the general public on 1/28.

http://msdn.microsoft.com/library/en-us/dnpag2/html/entlib.asp

Despite its newness it isn't really all that new. Enterpise Library is
based on Avanade Connected Architecture and the product of years
development and refinement on real enterpise applications not just
something Microsoft thought would be useful
(http://www.infoworld.com/article/04/11/15/HNavenade_1.html). Logging,
Data Access, Caching, Security, and Exception Handling, and
Configuration Management. That might not sound all that exciting but
nearly application needs to deal with these things, and each client
wants to have it there own way. For example, without adding or
changing a single line of code you can save all general messages to a
trace log on the server, save warnings to database, save critical
application errors with a stack trace to the database and notify the
administrator with the description of the error (perhaps linked to
display his cellphone so he doesn't want the stack trace) and then
encrypt the resulting configuration settings (to protect the database
user/password) saving the master key using DPAPI store of your service
domain user allowing load balanced servers to share single
configuration all of which using a GUI configuration tool so you don't
need to manually edit the config files. I'm kinda begining to feel
like I don't need to write any code at all, and of course if this isn't
enough its very extensible and the source code is all provided.

- Kurt



Relevant Pages

  • Re: What so special about PostgreSQL and other RDBMS?
    ... Unsubstantiated bunk, if you have the source code, it is not magic to ... my comments where ment *FOR DEVELOPERS* that is those who ... Oracle suits your needs and you think it's worth the money, use it, ... your database server, then write some additional functions as wrappers ...
    (comp.lang.php)
  • Re: In answer to RW - again (was: Sorts (revised)
    ... > The interaction between compiler and database would be defined by an external ... Which _particular_ parts that are not currently 'source code portable' ... what is non-portable now that this interract would change ... Cobol had 'ENTER language' in the ...
    (comp.lang.cobol)
  • Re: "Restructure a Windows application" from scratch in 2 months
    ... Run VS2005 - reverse engineer the source code. ... Run classdesigner - that's your UML replacement (and you don't need any more ... > This appliction uses Window forms UI with a lot of panels put one on the ... > webservices to get the data from our database and show in turn on UI. ...
    (microsoft.public.dotnet.framework.aspnet.webservices)
  • Re: "Restructure a Windows application" from scratch in 2 months
    ... Run VS2005 - reverse engineer the source code. ... Run classdesigner - that's your UML replacement (and you don't need any more ... > This appliction uses Window forms UI with a lot of panels put one on the ... > webservices to get the data from our database and show in turn on UI. ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: "Restructure a Windows application" from scratch in 2 months
    ... Run VS2005 - reverse engineer the source code. ... Run classdesigner - that's your UML replacement (and you don't need any more ... > This appliction uses Window forms UI with a lot of panels put one on the ... > webservices to get the data from our database and show in turn on UI. ...
    (microsoft.public.dotnet.framework.windowsforms)