Получение контекста объектов в серверном расширении
Программист может использовать в серверном расширении контекст объектов Docsvision для доступа к данным системы.
-
Пользовательский — создаётся для каждого пользователя при его входе в Web-клиент. Права на работу с объектами соответствуют правам данного пользователя в системе Docsvision.
-
Серверный — создаётся для сервера Docsvision. Права на работу с объектами соответствуют правам учетной записи пула приложений с Web-клиентом в системе Docsvision.
Получить контекст объектов можно используя функции сервиса ICurrentObjectContextProvider
:
-
GetOrCreateCurrentSessionContext
— возвращает контекст объектов текущего пользователя. -
GetOrCreateApplicationPoolSessionContext
— возвращает серверный контекст объектов.
Сервис ICurrentObjectContextProvider
может быть получен двумя способами:
public class LayoutController : ApiController (1)
{
public LayoutController(ICurrentObjectContextProvider currentObjectContextProvider) {
var context = currentObjectContextProvider.GetOrCreateCurrentSessionContext().ObjectContext (2)
public LayoutController(IServiceProvider serviceProvider) { (3)
var serviceHelper = new ServiceHelper(serviceProvider);
var context = serviceHelper.CurrentObjectContextProvider.GetOrCreateCurrentSessionContext().ObjectContext; (4)
1 | Указать сервис в качестве аргумента конструктора класса контроллера. |
2 | Получение контекста пользователя. |
3 | Получить сервис из передаваемого в конструктор поставщика сервисов serviceProvider. |
4 | Получение контекста пользователя. |
Web-клиент периодически закрывает неиспользуемые пользовательские сессии, из-за чего контекст объектов, сохранённый в статический объект класса (серверного расширения или контроллера), спустя время станет недействительным. Всегда получайте контекст объектов заново (с помощью функции GetOrCreateCurrentSessionContext
).
Примеры работы с контекстом объектов рассмотрены в документе Docsvision 5. Руководство программиста. Следующий код демонстрирует пример получения объектной модели карточки Документ.
Document document = objectContext.GetObject<Document>(Guid.Parse("9E11083F-D0EC-4F9F-8981-285498280BD9")); (1)
1 | В метод GetObject передаются тип объекта (Document) и идентификатор объекта (ID карточки). |