как избежать того, чтобы кто-то еще открыл конкретную запись в MS CRM - PullRequest
1 голос
/ 10 ноября 2010

В моем приложении я хочу запретить любому другому пользователю открывать запись определенного клиента, пока кто-то уже открыл ее. И покажи ему какую-нибудь ошибку или предупреждение.

Как мне это сделать ?? Я ценю любые ответы или предложения.

Спасибо

Ответы [ 2 ]

2 голосов
/ 10 марта 2011

Нет простого способа сделать это, но вы можете сделать то, что GCATNM упомянуло до меня. Я бы добавил одну вещь.

Если это локальная установка, вы можете настроить службу asmx, которая принимает entityid и имя пользователя. Это обновит заблокированную дату атрибута с текущей датой. Затем создайте сценарий, который запускается для записи объекта, который вызывает этот asmx каждую минуту, чтобы обновить дату lockedOn. Это говорит системе, что вы все еще активно используете эту запись.

Затем в своем коде, который проверяет, блокирует ли кто-либо сущность, вы игнорируете любые блокировки, которые имеют дату блокировки более 5 минут назад.

1 голос
/ 10 ноября 2010

Вы можете добавить поиск к systemuser («В настоящее время открыт») к сущности, и когда форма открыта, проверьте, имеет ли она значение. Если это так, отобразите сообщение и закройте форму или перейдите к форме только для чтения. Если нет, задайте поиск для текущего пользователя с помощью вызова веб-службы (чтобы он в тот же момент находился в базе данных), чтобы все остальные получали уведомление при открытии формы. При сохранении или закрытии формы (событие onbeforeunload) выполните другой вызов веб-службы (или, при сохранении, просто установите для свойства ForceSubmit пустого поиска значение true), чтобы очистить поиск.

Обратите внимание, что это не поймает некоторые вещи, такие как сбойный клиент (который оставил бы запись "заблокированной"), поэтому вам понадобится какой-нибудь отказоустойчивый, такой как рабочий процесс, который очищает поиск после того, как он был установлен и запись не изменялась снова в течение определенного времени.

Кроме того, любая другая логика, которая может изменить запись (например, плагины, импорт, любая пользовательская разработка), должна выполняться таким образом, чтобы избежать коллизий с этой функциональностью «блокировки».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...