PowerBuild /EA Server Разделение транзакций в PB и Java

Я упоминал об этом приложении в моем предыдущем посте о PBNI. Приложение (налоговое программное обеспечение) было написано на PB/Java/EAF, работающем на сервере EA. Он был разработан около 8 лет назад с использованием доступных на то время технологий. Приложение работает нормально, но есть остатки прошлого наследия, которые я пытаюсь очистить код / ​​дизайн.

Существует определенный код, который выполняет транзакции с базой данных (Oracle) через PB и Java, и так как 2 оказались в разных сеансах базы данных (Oracle), изменения в одном не видны в другом. Таким образом, в этих случаях приложение использует коммутатор для использования кода PB для полной транзакции вместо разделения на PB и Java. В противном случае используется комбинация PB / Java.

Это означает, что идентичные наборы программных блоков существуют в PB и Java. Технический кошмар!! Я считаю, что объекты PB были созданы первыми, и кто-то портировал их на Java по соображениям производительности (не принимая во внимание вышеупомянутую проблему разделения транзакций). Я пытаюсь устранить один (вероятно, код PB, учитывая производительность). Я изучаю PBNI в этом контексте.

Пожалуйста, дайте мне знать, если кто-нибудь из вас сталкивался с подобной ситуацией и как бы вы ее решили

Заранее большое спасибо.

Сэм

1 ответ

Я не утверждаю, что полностью понимаю природу вашего заявления, но, пожалуйста, примите во внимание мои комментарии.

Позвольте PowerBuilder и Java выполнять необходимые обновления. Мне кажется, что вы можете фиксировать транзакции в любой системе и использовать идею логического коммита. В начале транзакции обновите столбец, чтобы указать, что запись логически не зафиксирована. Java и PowerBuilder по очереди обновляют и фиксируют записи. Передача ROWID(ов) между двумя программами и SELECT в любой из программ обеспечат получение точных данных. Когда транзакция логически завершена, обновите столбец до логической фиксации.

Что касается производительности, перенос бизнес-логики в пакет Oracle или хранимую процедуру никогда не является плохой идеей. Это может занять немного времени, но тот же код может быть запущен из PowerBuilder ИЛИ Java. Плюс, есть несколько выдающихся инструментов настройки для Oracle. Сделайте ваши транзакции короткими и фиксируйте их в пакете / процедуре.

Не бойтесь помещать логически неполные транзакции в "рабочую" таблицу и копировать логически завершенные строки в "полную" таблицу.

Другие вопросы по тегам