We’ve approached this problem by not deleting the row in the temporary table but by setting a flag so that if set, the next poll of the adapter will not pick it up. Our main reason for doing this is that the application groups that owned the data did not want it deleted.
So what happens, is that the integration component that polls the data sets the flag just prior to publishing the document. Therefore, if an error does occur the flag doesn’t get set and the data will be picked up in the next poll.
We had a couple of issues to address with this scenario. First, the JDBC adapter basic notification does not allow you to specify a WHERE clause (unless a newer version does now) so there was no way to filter out already processed rows. We built a custom adapter to fire a trigger event every X seconds. Then that initiates a normal select via the JDBC adapter where we were able to specify a WHERE clause and bypass previously processed rows.
Secondly, we had to perform some type of clean up on the processed rows in the temporary table. So that is basically a repeat of the previous paragraph except it does a delete on rows with the flag set and that are older than Y number of days.
In the long run you end up creating 4 integration components to manage all this but it fully meets our needs.
#Adapters-and-E-Standards#webMethods#Integration-Server-and-ESB