1. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

Откат Документов

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

  1. Chron

    Chron Well-Known Member

    Репутация:
    0
    Регистрация:
    16 авг 2010
    Сообщения:
    49
    Симпатии:
    0
    Всем привет. Столкнулся с проблемой... Есть база электронного документооборота, есть в ней многозначные поля с исполнителями и соответствующее поле со значениями статуса исполнения документа этими исполнителей... В какой-то определенный момент времени документ откатывает назад, то есть приходит к первоначальному виду... Проще говоря если документ был выполнен, исполнитель написал отчет об исполнении, дату и все такое, то через некоторое время документ чудит так, что вроде и не делал он этого... В чем прикол, код весь перерыл, ну нет так такого прикола, чтобы документ вот так вот просто брал и откатывал... может ли сервер системно влиять на такое дело?
     
  2. nvyush

    nvyush Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Реплики базы есть?
     
  3. Мыш

    Мыш Well-Known Member
    Lotus team

    Репутация:
    1
    Регистрация:
    12 фев 2008
    Сообщения:
    1.075
    Симпатии:
    12
    Chron, а в свойствах док-та что - кто и когда его модифицировал посл. раз?
     
  4. lmike

    lmike нет, пердело совершенство
    Lotus team

    Репутация:
    1
    Регистрация:
    27 авг 2008
    Сообщения:
    6.375
    Симпатии:
    336
    несинхрон во времени, на компах с реплик-копиями, вполне может дать такой эффект
     
  5. Chron

    Chron Well-Known Member

    Репутация:
    0
    Регистрация:
    16 авг 2010
    Сообщения:
    49
    Симпатии:
    0
    А вот как быстро определить, есть ли реплики у базы.. будь то локальные, на этом же сервере или на другом... Пробую при помощи аналайзера, он ругается на отсутствие файла dba4.nsf
     
  6. lmike

    lmike нет, пердело совершенство
    Lotus team

    Репутация:
    1
    Регистрация:
    27 авг 2008
    Сообщения:
    6.375
    Симпатии:
    336
    на сервере - открыть catalog.nsf

    Добавлено: но главное м.б. не сами реплики - а различие времени
     
  7. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Репутация:
    0
    Регистрация:
    6 ноя 2007
    Сообщения:
    3.185
    Симпатии:
    22
    открыть свойство БД - история репликации
     
  8. Chron

    Chron Well-Known Member

    Репутация:
    0
    Регистрация:
    16 авг 2010
    Сообщения:
    49
    Симпатии:
    0
    В истории репликации все пусто... В общем-то и так мог бы сказать, что база в единственном экземпляре...
     
  9. lmike

    lmike нет, пердело совершенство
    Lotus team

    Репутация:
    1
    Регистрация:
    27 авг 2008
    Сообщения:
    6.375
    Симпатии:
    336
    где - на сервере? серверов сколько, каталог смотрели?
     
  10. Chron

    Chron Well-Known Member

    Репутация:
    0
    Регистрация:
    16 авг 2010
    Сообщения:
    49
    Симпатии:
    0
    На дочернем сервере...
     
  11. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Репутация:
    0
    Регистрация:
    6 ноя 2007
    Сообщения:
    3.185
    Симпатии:
    22
    значит почистили ;)
     
  12. Chron

    Chron Well-Known Member

    Репутация:
    0
    Регистрация:
    16 авг 2010
    Сообщения:
    49
    Симпатии:
    0
    Дико извиняюсь, но вынужден апнуть тему. Проблема то не решилась, просто подзабил на нее, но с ростом количества пользователей проблема возникает все чаще. Уверен в одном, база в единственном экземпляре, репликации базы запрещена. Документы каким-то чудесным образом продолжают откатываться. Что за чертовщина творится, не понимаю...
     
  13. Darkhan

    Darkhan Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    14 дек 2012
    Сообщения:
    98
    Симпатии:
    4
    Может народ одновременно исполняет документ? Через УИ или в бэкенде
     
  14. savl

    savl Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    28 окт 2011
    Сообщения:
    2.116
    Симпатии:
    157
    @Chron, точно запрещена репликация?
    История репликации между серверами пустая?
     
  15. rinsk

    rinsk Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    12 ноя 2009
    Сообщения:
    894
    Симпатии:
    84
  16. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    30 май 2006
    Сообщения:
    1.323
    Симпатии:
    4
  17. garrick

    garrick Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    26 окт 2009
    Сообщения:
    853
    Симпатии:
    68
    Реплик может и не быть, но документы с конфликтами могут быть вполне. Один пользователь открыл документ и что-то там делает, второй пользователь тоже открыл документ, но немного позже первого... первый завершил своё дело и сохранил документ, в истории сохранилась запись об этом, после этого второй пользователь завершил своё дело и тоже сохранил документ, в его версии в истории нет записи о действиях первого пользователя, но появилась запись об его истории и т.к. его действия последние и в итоге сохранилась его версия документа, то в истории документа "пропадёт" запись о действиях первого пользователя.

    Способы борьбы
    1. Хранить историю по каждому действию в отдельном респонз документе и показывать всю историю в эмбедед вью. Недостаток - большое количество документов в базе.
    2. При открытии документа на редактирование делать его копию (можно не сохранять), а при сохранении считывать новую копию документа с диска из базы и проверять не изменились ли какие-то поля уже после открытия. Ну хотя бы как минимум проверить время последнего изменения. Если что-то изменилось предпринять соответствующие действия на ваш вкус - сообщить пользователю, что оно не прав и не дать сохранить документ, втихоря скопировать историю с более новой версией и т.п. Недостаток - много всяких действий и кода с проверками.
    Следует учесть, что в качестве "второго пользователя" вполне может выступать какой-нибудь агент на сервере, работающий по расписанию.
     
  18. savl

    savl Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    28 окт 2011
    Сообщения:
    2.116
    Симпатии:
    157
    я бы в отдельной базе хранил, а путь/реплику прописывал бы в документ при создании.
    Плюсы: всегда знаешь в какой базе история к документу, баз может быть over 9000, при критическом количестве - создаем новую базу и меняем настройку.

    Можно чуть проще:
    При открытии писать в глобальную переменную текущий документ.
    При сохранении переполучить документ из базы в другую переменную, затем проверить у документов $UpdateBY.
    Если размер не совпадает, то кто-то пересохранил документ.

    Третий вариант - самописная блокировка.
    Делается база, в которой при открытии на редактирование создается документ, при попытке отредактировать другим пользователем - проверяем наличие этого документа, если документ есть - запретить редактирование второму пользователю.
    Но от агентов не сильно спасет.
     
Загрузка...

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