Временные структуры и 3L-архитектура
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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 выхода |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|