This is more of a discussion post than information post. I would like to discuss two approaches to same problem and take feedback what do you guys think is better.
Requirement:
Trigger a workflow process every 15 minutes asynchronously.
Solution Approach 1:
- Create a Job in Administration Server Management – Jobs View for Workflow Process Manager component.
- Set the Repeating flag to true and configure the repeat interval as 15 minutes.
- Submit the job
Siebel will create a instance of this workflow every 15 minutes which will be executed by Workflow process manager component.
Pro’s
- Simple and easy to deploy
- Flexible as you can change the time interval any time
- Siebel take cares of everything
Con’s
- Can lead to problems in case Siebel services are abruptly stopped (for example submitting multiple requests instead of 1 every 15 minutes)
- Overhead on Object Manager and Workflow Process Manager component as every time a new workflow instance needs to be created and submitted
- Difficult to debug the problem
Solution Approach 2:
- Make your workflow as Long Running workflow
- Include a wait step and put wait time as 15 minutes
- Change your workflow logic to execute your functionality and then wait for 15 minutes before starting again.
- Create a Job in Administration Server Management – Jobs View for Workflow Process Manager component.
- Submit the job
Pro’s
- Less overhead on Siebel and Workflow process manager component (My assumption and reason for inclination toward this approach)
- With proper error handling in place it is fairly easy to debug in case of problem
Con’s
- A little less flexible in terms of interval changes. You have to modify and deploy the workflow
They both seem viable options for the requirement. For some unknown reason I am inclined towards approach two as it seems to be less overhead on the components. I don’t have any concrete data to base my decision upon that is why I am throwing this out there, may be somebody out there knows exactly what is better.
