Search code examples
design-patternsbusiness-processbusiness-process-management

design pattern for business process modeling?


Assuming we're not interested in building no top of any existing BPMS, what sort of design pattern, or books, or specific technology, would be valuable to someone who'd like to build a backoffice system that takes care of business processes that consist of

  • wait states (waiting for decision from Staff or result from API calls)
  • automated and manual process
  • process definition
  • audit logging

?


Solution

  • I don't believe that implementing Business Process Management Software is something you want to mess with! It seems very tedious to me. Really I don't believe you want to invest in that (unless you want to create your own BPM platform and sell it to other customers).

    Why won't you use an existing solution? Most BPM platforms are extensible and you can built whatever you want on top of them - and you will still be able to use the core characteristics. Also there are even some open source solutions (jBPM). Of course you shouldn't choose your BPM solution based on its price since when you have a good BPM platform you will save much money later on process implementation. Just find what has most of the characteristics you need out of the box !

    In any case, to answer your question, I don't think that you need any special knowledge to built a BPM solution - it is because of the huge amount of work that is needed that I recommend going for an existing one. You just need to know how to build apps. The workflowpatters site recommended by jmettraux is a useful one for process designers - not for people implementing BPM platforms ! The ProcessManager is usefult for the flow transitions.

    If you think of it, a process instance in a BPM platform could just be a tuple of id - process - status in an RDBMS ! Each status is a user task or an external event. Using these and a number of business rules (for both input validation and flow transitions), user forms and connections to other system you'll have your basic BPM platform.

    • wait states is just the submission of a user form so the status of the proces instance will change (the external event also should change the status)
    • process definition: This depends... Most out of the box systems have visual drag n drop designers - good luck in implementing your own ! Probably you'll have to just do something in XML that would not be used by non technical users.
    • audit logging easy, just insert every event to your RDBMS
    • don't forget the reporting - probably this is the most important thing for the upper management :)

    I have to notice that I've not implemented a BPM platform but I have talked with people that had and described it as a nightmare. I am just implementing processes and extensions on top of a commercial BPM. If you have any more specific questions just shoot.