Чтобы пользоваться сессией - объект UserSession, в сценариях, нужно её создать.
Делается это так:
C#
// получаем шлюз
DVGate oGate = (DVGate)process.Gates[DVGate.GateID];
// получаем сессию
UserSession oSession = oGate.Session;
VB.NET
' получаем шлюз
Dim oGate As DVGate = CType(process.Gates(DVGate.GateID), DVGate)
' получаем сессию
Dim oSession As DocsVision.Platform.ObjectManager.UserSession = oGate.Session
Нельзя пользоваться сессией Workflow: process.Session
можете раскрыть причины подобного ограничения? к каким последствиям может привести использование сессии workflow?
ОтветитьУдалитьВ версии 4.1 такой сценарий не будет компилироваться. ИМХО причина в том, что Workflow и скомпилированный сценарий используют разные библиотеки (DocsVision.Platform.ObjectManager.dll и DocsVision.ObjectManager.Interop.dll), и привести такие типы, хоть они и выглядят одинаково, не получится.
ОтветитьУдалитьт.е. "нельзя пользоваться сессией Workflow" - это не рекомендация, а указание на физическую невозможность использования?
ОтветитьУдалитьда, именно так
ОтветитьУдалитьА в версии DocsVision 4.0 имеет значение, какую сессию использовать - process.Session или полученную через шлюз? Может ли использование process.Session привести к каким-либо нежелательным последствиям (кроме проблем при переходе на новую версию)?
ОтветитьУдалитьВ 4.0 не замечено проблем. Но зачем себе создавать трудности :). Странно, что такой способ нигде не описан, однако многие им пользуются.
ОтветитьУдалитьDrago, вот только проблемы с переходом и будут, когда нужно будет позаботиться о том, чтобы во всех сценариях всех активных процессов внеслись изменения... поэтому лучше об этом позаботиться заранее :)
ОтветитьУдалитьМихаил Захаров, да, он правда нигде не описан... такой способ брался из примеров сценариев при внедрении digdes-ом...