The Document Is Already Locked By Someone Else.

Тема в разделе "Lotus - Программирование", создана пользователем fedotxxl, 11 май 2011.

  1. fedotxxl

    fedotxxl Well-Known Member

    Регистрация:
    9 ноя 2005
    Сообщения:
    614
    Симпатии:
    0
    Есть агент, который исполняется на сервере. Блокирую документ пользователем ns.username. Пытаюсь сохранить документ nd.save и получаю ошибку " Notes error: The document is already locked by someone else.". Перепроверил - ns.username и заблокировавший пользователь совпадают. В чем логика?
     
  2. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    effectiveUserName совпадает с userName?
    зачем блокируем ns.userName, а не обычным lock() без параметров?
    вызов lock возвращает true?

    не открыт ли этот же документ где-нить в UI на редактирование? есть крайне неприятная штука под названием soft locking, способная на дикие фокусы.
     
  3. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    fedotxxl
    Создаёте темы ради тем; ответ вам уже был дан.

    Подружить hard-locking и soft-locking возможно.
     
  4. fedotxxl

    fedotxxl Well-Known Member

    Регистрация:
    9 ноя 2005
    Сообщения:
    614
    Симпатии:
    0
    VladSh
    Две разные проблемы. Вчитайтесь

    turumbay
    Нет, effectiveUserName не совпадает с userName. Документ точно не открыт на ui, точно блокируется корректно. Передавать userName вынуждает бизнес логика

    Может быть кто встречался с данной проблемой?
     
  5. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    fedotxxl
    Зато ответ один. Только вдумайтесь!

    P.S. Из моей БЗ, м.б. поможет:
    <!--QuoteBegin-"VladSh"+-->
    <table border="0" cellpadding="0" cellspacing="0" align="center" width="98%"> [tr] <td class="vbquote"> <table border="0" cellpadding="0" cellspacing="0" width="100%"> [tr] <td class="vbquote" width="75" valign="bottom"> <table border="0" cellpadding="0" cellspacing="0" width="50px"> [tr] <td class="vbquote" width="28" valign="top">[​IMG]</td> <td class="vbquote" width="100%" style="background-image: url('style_images/ckr/quotes/quote-bg.gif'); background-position: center;" valign="middle"><span class="vbquote">Цитата:</span></td> <td class="vbquote" valign="top">[​IMG]</td> [/tr] </table> </td> <td class="vbquote" align="left" style="background-image: url('style_images/ckr/quotes/quot-lr-bg.gif')" valign="bottom"></td><td class="vbquote" width="0" align="left" valign="bottom"> <table border="0" cellpadding="0" cellspacing="0" width="200"> [tr] <td class="vbquote" valign="top">[​IMG]</td> <td class="vbquote" width="100%" style="background-image: url('style_images/ckr/quotes/quot-bye-bg.gif')" align="left" valign="middle" nowrap="nowrap"><span class="vbquote">("VladSh")</span></td> <td class="vbquote" valign="top">[​IMG]</td> [/tr] </table> </td><td class="vbquote" width="100%" align="right" valign="bottom"> <table border="0" cellpadding="0" cellspacing="0" width="100%"> [tr] <td class="vbquote" width="100%"> <table border="0" cellpadding="0" cellspacing="0" width="100%"> [tr] <td class="vbquote" style="background-image: url('style_images/ckr/quotes/quot-top-bg.gif')" width="100%" valign="middle"></td> <td class="vbquote" align="left" valign="top">[​IMG]</td> [/tr] </table> </td> [/tr] </table> </td> [/tr] </table> <table border="0" cellpadding="0" cellspacing="0" width="100%"> [tr] <td class="vbquote" width="10" style="background-image: url('style_images/ckr/quotes/quoting-left.gif')"></td> <td class="vbquotemain" width="100%" valign="top"></td> <td class="vbquote" width="10" style="background-image: url('style_images/ckr/quotes/quoting-right.gif')"></td> [/tr] [tr] <td class="vbquote" width="10" style="background-image: url('style_images/ckr/quotes/quot-left-bg.gif')"></td> <td class="vbquotemain" width="100%" valign="top"><!--QuoteEBegin-->Err=4000
    ...
    8. "Notes error: Документ заблокирован другим пользователем" (The document is already locked by someone else).
    Варианты при notesDocument.UnLock():
    а). Когда производится разблокировка нового, только что созданного, документа;
    б). При одновременном использовании Soft (EditMode) у одного пользователя и Hadr Lock (Not EditMode) у другого. У 1-го возникает такая ошибка, но изменения сохраняются. У 2-го пользователя документ в BackEnd не сохраняется...
    в). Если поля прописывались вручную (ReplaceItemValue) и в базе не включена блокировка (Hard Locking и Master Lock Server); свойство документа LockHolders в этом случае содержит пустой массив. Просто удалять эти поля вручную.
    При попытке сохранения (NotesDocument.Save(False, False)) только что заблокированного документа, пользователем, не входящим в список заблокировавших документ (текущий пользователь, блокируя, прописывал не своё имя (не ns.effectiveUserName) во $Writers).<!--QuoteEnd--></td> [/tr] [tr] [/tr] </table> </td> [/tr] </table>
    <!--QuoteEEnd-->
     
  6. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    ну дык елы-палы (с)
    Модификация идет от имени effectiveUserName, а локхолдер - userName.
    Если документ заблокирован Васей, то логично послать Петю при попытке изменения этого документа.
     
Загрузка...

Поделиться этой страницей