четверг, 23 июля 2009 г.

Использование сессии в сценариях бизнес-процессов

Чтобы пользоваться сессией - объект 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

7 комментариев:

  1. можете раскрыть причины подобного ограничения? к каким последствиям может привести использование сессии workflow?

    ОтветитьУдалить
  2. В версии 4.1 такой сценарий не будет компилироваться. ИМХО причина в том, что Workflow и скомпилированный сценарий используют разные библиотеки (DocsVision.Platform.ObjectManager.dll и DocsVision.ObjectManager.Interop.dll), и привести такие типы, хоть они и выглядят одинаково, не получится.

    ОтветитьУдалить
  3. т.е. "нельзя пользоваться сессией Workflow" - это не рекомендация, а указание на физическую невозможность использования?

    ОтветитьУдалить
  4. А в версии DocsVision 4.0 имеет значение, какую сессию использовать - process.Session или полученную через шлюз? Может ли использование process.Session привести к каким-либо нежелательным последствиям (кроме проблем при переходе на новую версию)?

    ОтветитьУдалить
  5. В 4.0 не замечено проблем. Но зачем себе создавать трудности :). Странно, что такой способ нигде не описан, однако многие им пользуются.

    ОтветитьУдалить
  6. Drago, вот только проблемы с переходом и будут, когда нужно будет позаботиться о том, чтобы во всех сценариях всех активных процессов внеслись изменения... поэтому лучше об этом позаботиться заранее :)
    Михаил Захаров, да, он правда нигде не описан... такой способ брался из примеров сценариев при внедрении digdes-ом...

    ОтветитьУдалить