As far as I know firing a timer based on a duration is only applicable in case of a Timer Event Sub-process. Let me know if you think otherwise.
In case of an Event Sub-process the timer starts at the same moment when the process instance starts. There is no way to change it at any point after that. Given this , you can use one of the following three options that I discuss below. If you know of some oher way, again: let me know!
Input Argument
You can use an element that is part of the request of the process. In the following example there is one input argument called 'expiry' of type duration which is mapped to a process variable:
The process variable can then used to start the timer using an straightforward simple XPath assignment:
Preference in composite.xml
You can also configure a preference in the composite.xml file. Such a
preference belongs to a specific component, and starts with "preference"
(or "bpel.preference", but you can leave "bpel." out). Using the dot as
a delimiter you can post-fix that with the preference name to use:
You can then set the timer using the ora:getPreference() XPath function. All these preferences are strings, but if the value is an ISO duration it will automatically be converted to a duration.
Domain Value Map
A third option is to configure the duration using a Domain Value Map or DVM for short. In the following example a DVM file is used for configuration parameters as a name-value pair:
The timer can be instantiated using the dvm:lookupValue() XPath function, as show in the following picture:
What to Choose?
This depends on the requirements.
If your consumer should be able to determine the duration, you should pass it on as a request parameter.
If the business wants to change it run-time than using the DVM is the best option. The initial value is determined design-time but can be changed run-time via SOA Composer (the same tool via which business rules can be changed).
Otherwise the composite preference is your weapon of choice. Also for this preference the initial value is determined design-time, but can still be changed after deployment by IT using the MBean Browser in Enterprise Manager.
If your consumer should be able to determine the duration, you should pass it on as a request parameter.
If the business wants to change it run-time than using the DVM is the best option. The initial value is determined design-time but can be changed run-time via SOA Composer (the same tool via which business rules can be changed).
Otherwise the composite preference is your weapon of choice. Also for this preference the initial value is determined design-time, but can still be changed after deployment by IT using the MBean Browser in Enterprise Manager.
No comments:
Post a Comment