пятница, 5 марта 2010 г.

DocsVision 4.0: попытка открыть пользователем карточку заблокированную им же

Есть такая проблема: DocsVision версии 4.0 не всегда стабилен и любит порой убивать Internet Explorer, оставляя пользователю проблему с блокировками карточек и файлов. Точно также проблемы могут возникнуть, если пользователь не закрыв старую сессию, откроет новую. А вот проблемы могут посыпаться самые разные.
Так вот, если надо обработать эту ситуацию, а именно, что пользователь пытается открыть карточку, которую он сам же и блокирует (напомню, что система в таком случае позволяет пользователю "переписать" блокировку в текущую сессию), то достаточно проверить в QueryActivate на наличие блокировки карточки данным пользователем. Но не проверять ILockable.LockStatus на вполне резонное, как кажется, LockStatusEnum.STATUS_OWNER_LOCKED, а проверять на наличие блокировки вообще и то, что владелец блокировки - текущий пользователь:

IsCardHasCorruptedLockByCurrentUser =
lockedObject.LockStatus == LockStatusEnum.STATUS_LOCKED &&
lockedObject.OwnerName == Session.Properties["AccountName"].Value.ToString();


Далее, если QueryActivate вернул всё необходимое для открытия карточки, то в промежутке между ним и Activate, пользователю будет выдан запрос на то, хочет ли он открыть её на редактирование или нет. Результат мы можем узнать непосредственно в Activate по установленному флагу ActivateFlagEnum.ACTIVATE_EDIT в ActivateMode.
Теперь мы знаем практически всё о ситуации и можем её обработать :)

Комментариев нет:

Отправить комментарий