In a BPEL process there are some use cases where a Wait activity or the onAlarm branch of a Pick activity is needed. An example for an onAlarm branch is a timeout mechanism for an asynchronous call. These activities save the instance in the dehydration store for a defined time. To wake up the waiting instances there is a quartz scheduler job running in the weblogic and check the expiration date in the dehydration store. For the case the dehydration store is not available, the scheduler retry to call the database. The retry settings can be found in the advanced BPEL properties in the System MBean Browser. The properties are named ExpirationMaxRetry and ExpirationRetryDelay. When the retry failed the data sets won’t be cleaned from the dehydration store.
The suggestion to clean this is to click on the Button „Refresh Alarm Table“ in the Recovery console. But it is unpleasent to click the button periodically, so the wish appear to do this automated. There is a way for an automatically clean. Just start a job on the SOA Suite Database with the following SQL script.
WHERE cikey IN
FROM work_item wi
INNER JOIN cube_instance ci
ON wi.cikey =ci.cikey
WHERE wi.exp_date < SYSDATE
AND ci.state < 5);
The inner select collect the running instances that are expired before the system date. For these entities the expiration date will be set one minute after the system date. So the scheduler job, that collects the waiting instances, fetch these expired instances in the next minute. You need this if your SOA Suite database runs not in a high availability mode or the are running instances while maintenance procedures or backups.