• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Merge Conflict Documents

  • Автор темы FixeR
  • Дата начала
F

FixeR

Пользователь берёт документ на редактирование. В это время по расписанию начинает исполняться агент на сервере, в котором меняется одно поле у этого же документа и сохраняется (doc.Save). Теперь пользователь нажимает на сохранение документа:

Another copy of this document was saved while you were editing it.
Save your changes also as a Save Conflict Document?

Точно известно, что в агенте меняется только 1 поле, которого нет на форме.
Т.е. пользователь это поле изменить никак не может.

Вопрос: как-нибудь можно сохранить изменения агента и пользователя в одном документе?

В агенте - doc.Save(True, False)
У формы - Merge/No Conflicts
Кнопка "Сохранить" на форме - uidoc.Save

Перепробовал кучу комбинаций уже.

По хелпу мне нужно у формы выставить значение "Merge/No Conflicts".
Но какой бы вариант я там не выбирал - результат один и тот же.

Ещё у Save есть пара параметров, отвечающих за создание конфликтных документов - совершенно непонятно, как это всё работает в паре с параметром Conflict Handling формы.
 

VladSh

начинающий
Lotus Team
11.12.2009
1 784
157
BIT
57
Правильно - это выставить у форм "No Conflicts", а во всех случаях изменении документов использовать блокировки (метод Lock), - поищите по форуму, здесь много было об этом.
 
F

FixeR

а во всех случаях изменении документов использовать блокировки (метод Lock)
Ну это слишком просто ;)

Вот из справки:
Merge Conflicts -- If a replication conflict occurs, saves the edits to each field in a single document. However, if two users edit the same field in the same document, Notes saves one document as a main document and the other document as a response document marked as a replication conflict. The main document is selected based on the criteria listed in the bullet above.
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Не то выделил. Надо было: If a replication conflict occurs.

Добавлено: Можно в QuerySave проверять не изменился ли документ.
 
P

phantom76

могу порекомендовать варианты, но потребуют серьезной реализации:

1. Юзеру отдавать на редактирование копию документа ( например ввиде респонса), при сохранении обновлять по его образу оринигал

2. Как я писал для случая многосерверной распределенной среды писал движок, который обрабатывал очередь транзакций по предопределенным правилам. Транзакции генерировались действиями пользователя.

Вариант с блокировкой лично меня не устрол для распределенной среды,т.к. долго держит документ занятым...

3. Еще один раз для разбора конфликтов репликаций писал агент, который анализировал доки и сливал в один.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!