CftClub.ru
Клуб специалистов ЦФТ-Банк

Временные структуры и 3L-архитектура

 
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Уроки ЦФТ-Банк для начинающих
Предыдущая тема :: Следующая тема  
Автор Сообщение
bulkin
Участник


Вступление в Клуб: 15.01.2013
СообщениеВт Апр 09, 2013 10:43   Временные структуры и 3L-архитектура Ответить с цитатой
Полезность: Нет оценки
Всем добрый день!
Имеется такая ситуация: потребовалось в ТБП хранить список счетов - разных типов и в разных валютах. Для этого в ТБП как раз есть подходящий реквизит - "Список счетов договора", ARRAY_DOG_ACC
Но в нём многовато разных ненужных (для данного случая) полей, посему, чтобы не пугать пользователей, сделали некую промежуточную временную структуру, более "дружелюбного" вида, с признаком "Может иметь экземпляры" и "Время жизни - сессия". При открытии формы переписываем все счета из реквизита в эту структуру, на форме работаем с ней, при закрытии формы всё возвращаем назад.
На данный момент всё работает хорошо: поскольку это временная структура, то если даже работают несколько пользователей одновременно - данные не путаются, каждый видит только свои данные, из своей сессии.
Возникает интересный вопрос - будет ли это всё так же хорошо работать через Сервер приложений, когда у пользователя не будет своей собственной выделенной оracle-сессии?
(Хотя, в документации сказано что "при открытии формы операции пользователю выделяется сессия из пула, которая держится до тех пор, пока не закроется последняя форма этой операции")
Возможно, при записи в структуру нужно добавлять какой-то уникальный идентификатор - что именно будет таким идентификатором? utils.session_id? stdlib.userid?
Может быть есть где-нибудь пример чего-нибудь подобного?
Random
Эксперт


Вступление в Клуб: 27.06.2011
СообщениеВт Апр 09, 2013 12:10   Re: Временные структуры и 3L-архитектура Ответить с цитатой
Полезность: Нет оценки
bulkin пишет:
Возникает интересный вопрос - будет ли это всё так же хорошо работать через Сервер приложений, когда у пользователя не будет своей собственной выделенной оracle-сессии?


Не будет.

Время жизни - сессия.
Этим всё сказано.

Вот вы открываете форму. Выполняется java-код на Сервере Приложений, которому нужно прочитать данные из БД. Из пула берётся соединение с БД, запрашиваются данные, переносятся во временную структуру с временем жизни - сессия, выводятся на форму, сессия возвращается обратно в пул. Сессия отпущена, данные из временной таблички уничтожаются.
Пользователь изменил что-то на экранной форме, выполняется валидатор (или тело операции), который берёт из пула первую попавшуюся сессию, не обнаруживает там никаких данных и либо бросает исключение, либо, что хуже, записывает в ARRAY_DOG_ACC пустой массив счетов.

Что касается уникального идентификатора - хороший вопрос. Задам.
Alexsey
Эксперт


Вступление в Клуб: 06.09.2007
СообщениеВт Апр 09, 2013 13:49    Ответить с цитатой
Полезность: Нет оценки
Есть такая хорошая структурка "SR"
Ее отчетники в свое время использовали. В ней можно рассчитать идентификатор сессии и потом вычитать данные по этому идентификатору.
В 3L данный функционал замечательно работает, единственное, что придется чистить за собой данные.
В библиотеке LIB данного ТБП есть все необходимое для расчета идентификатора сессии и чистки данных.
_________________
всегда есть как минимум 2 выхода
Показать сообщения:   
Ответить на тему    Клуб специалистов ЦФТ-Банк (IBSO) -> Уроки ЦФТ-Банк для начинающих Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Рейтинг@Mail.ru