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