Skip to main content

I am in a project that is very restricted to time and dead line where Workflow engine option  (K2 Blackpearl) will save a lot for me, taking in consideration that my process considered pretty complex (27 steps). Here is my case:


 


I am working on a competition based process, all instances will be instantiated during 1 week time and the process life cycle is 16 months (each process will always last for 16 months), after this time ;next cycle comes and new instances are created and so on. As everybody knows; current process instances are not allowed to be modified in terms of process definition, So  I think this is a very big risk that totally disables the maintenance .


 


 


My concern is suppose I got a bug in the process and I discovered that after 5 months can I fix the current running instances to work on, or suppose some business changed during the 16 months(which is a very common thing in workflow world); can I change the currently running instances, or I need to tell the client that I will fix this now but you will see the effect only on the newly created process instances that will be run next year !!! Which is totally not acceptable!!


 


I think there should be a way to modify the running instances in workflow engines otherwise, such system will not be useful for long running business.


 


I am at a moment where I need to take a technical decision to follow one of these two approaches:



  1. Use workflow engine to implement my business process. (this will save time and increase the risk)
  2. Use a flag based SQL database and wrap the business between tables & DLLs. (this will increase time but save risks as system will keep being maintainable)

 


 


What do you think?

A method I have done for such things in the past is to make an action on your client events that, if executed, would send this process into an error state.  Don't make this action available to anyone other than administrators.  When in an error state, a process can be restarted on a different version of the process.  It doesn't feel right to me to do this, but it works.  Maybe you can build on this idea to make something more concrete?  I'd love to hear your ideas.


With recent versions of Blackpearl you can use the live instance management API.  Here is a blackmarket project that uses it. 


http://www.k2underground.com/groups/process_version_migration_utility/default.aspx


Reply