Так вот, если надо обработать эту ситуацию, а именно, что пользователь пытается открыть карточку, которую он сам же и блокирует (напомню, что система в таком случае позволяет пользователю "переписать" блокировку в текущую сессию), то достаточно проверить в 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.
Теперь мы знаем практически всё о ситуации и можем её обработать :)
Комментариев нет:
Отправить комментарий