Сценарий такой
У нас есть два приложения A и B, оба выполняются в отдельных транзакциях базы данных (Oracle 9i)
Приложение A - вставляет некоторые данные в базу данных, затем вызывает приложение B
Приложение B - вставляет некоторые данные в базу данных, связанные (через внешние ключи) с данными А. Возвращает «ID» в Приложение A
Приложение A - использует идентификатор для вставки дополнительных данных, включая идентификатор из B
Теперь, поскольку это отдельные транзакции, но обе основаны на данных от транзакций друг друга, нам нужно фиксировать между вызовами к каждому приложению. Это, конечно, очень затрудняет откат, если что-то пойдет не так.
Как бы вы подошли к этой проблеме, с минимальным рефакторингом кода. Конечно, такого рода это распространенная проблема в мире SOA?
------ Обновление --------
Мне не удалось найти что-либо в Oracle 9i, однако Oracle 11g предоставляет DBMS_XA , что делает именно то, что я делал.