PowerBuild / EA Server Разделение транзакций в PB и Java - PullRequest
1 голос
/ 06 ноября 2011

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

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

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

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

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

Sam

1 Ответ

0 голосов
/ 12 апреля 2018

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

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

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

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

...