Merge Conflict Documents

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

FixeR

Гость
#1
Пользователь берёт документ на редактирование. В это время по расписанию начинает исполняться агент на сервере, в котором меняется одно поле у этого же документа и сохраняется (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 248
2
Киев (Русь)
#2
Правильно - это выставить у форм "No Conflicts", а во всех случаях изменении документов использовать блокировки (метод Lock), - поищите по форуму, здесь много было об этом.
 
F

FixeR

Гость
#3
а во всех случаях изменении документов использовать блокировки (метод 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

Что это ? :)
Lotus team
10.12.2004
3 346
2
36
Россия, Калуга
#4
Не то выделил. Надо было: If a replication conflict occurs.

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

phantom76

Well-Known Member
Lotus team
25.02.2005
360
9
41
RU г.Москва
#5
могу порекомендовать варианты, но потребуют серьезной реализации:

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

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

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

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