Прошу Подсказать По Поводу Исключения Конфликтов Репликации

Gandliar

Well-Known Member
Lotus team
16.02.2004
334
7
#1
Привет!

Есть приложение на сервере с которым реплицируется локальные клиенты.

На форме есть ряд полей (computed when composed), которые изменяет время от времени агент на сервере, на локале они не меняются.
На форме установлено $conflictAction = "3" Merge/No Conflicts

в хелпе написано вот так

Merge/No Conflicts -- If replication occurs, saves the edits to each field in a single document. If two users edit the same field in the same document, Notes selects the field from the main document, based on time and date, and an internal document sequence number. No conflict document is generated, instead conflicting documents are merged into a single document at the field level.


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

Я потестил, вроде все так и происходит, но чего то уверенности не хватает.

Заранее благодарю.
 

savl

Well-Known Member
Lotus team
28.10.2011
2 126
163
#2
На старой работе при такой настройке сервак так весело "сливал конфликты", что в документ прописывались только последние изменения и документ становился ответным самому себе.
Так что быстро отказались от этого и сделали просто Create Conflict, хоть разобраться можно.
Но там нагрузка в виде 7-8 тыс активных пользователей была.
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 226
25
#3
1) агент изменил документ
2) у пользователя документ был открыт
3) пользователь его пересохранит и создаст конфлик
 

susinmn

Well-Known Member
16.10.2007
529
8
#4
На форме установлено $conflictAction = "3" Merge/No Conflicts
Отказались от этого. В начале все было тип-топ, потом, возможно, из-за частого изменения документа, стали биться (на одном сервере нормальный, на всех остальных документ совсем без полей), реплицироваться переставали...
 

Gandliar

Well-Known Member
Lotus team
16.02.2004
334
7
#5
То есть надо создавать документ копию, привязанный к основному документу и содержащий поля, которые будут будут обновляться сервером.

Тогда вопрос, можно ли как то попростому сравнить 2 ричтекстовых поля? Одинаковые они или надо перезаписать?
 

savl

Well-Known Member
Lotus team
28.10.2011
2 126
163
#6
можно ли как то попростому сравнить 2 ричтекстовых поля?
Если только текст, то можно, если там еще таблицы/файлы/ссылки/картинки, то нет.
Разве что выгрузить в xml и сравнить, да и то гарантию не дам что поможет.
Отказаться от локальных реплик нельзя?
 

alexas

Well-Known Member
10.06.2009
214
0
#7
Если только текст, то можно, если там еще таблицы/файлы/ссылки/картинки, то нет...
Не совсем так.
Если хранить в RTF инфу, как HTML or MIME, то простым сравнением типа doc.RTF(0) = doc.RTFchanged(0) найдутся различия в тексте/таблицах (кроме различия в атрибутах - шрифт, цвет ...) и в ссылках/аттачах/картинках (по наличию/названию).
Если изменения RTF производятся в UI - то это вторая вкладка в пропертях поля - Storage-Store contents as HTML and MIME.
Если изменения RTF в бэкграунде - то перед записью конвертировать в MIME.

Если надо абсолютно точно, то легко не получится (через DXL можно, а надо-ли?)