Агентом узнать открыт ли документ?

maliy

Green Team
20.03.2007
180
2
BIT
76
Документ, открыт пользователем. Есть агент, который должен записать информацию в этот документ. Но дабы избежать конфликта, необходимо записывать в документы информацию когда документ закрыт, если открыт - тогда ничего не записывать. Как узнать агентом открыт ли документ?Или вообще как правильно реализовать такую(описанную выше) логику?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
473
Или вообще как правильно реализовать такую(описанную выше) логику?
в классическом нотусе нет штатных (вменяемых, с моей т.з.) способов...
есть самопальные велики (например - очередь на сервере), но мне почему-то (по опыту) кажется - вы не будете это использовать
Давайте начнем с задачи и не с того места - где вы решили согласовывать изменение дока, а с самого начала задачи ;)
м.б. и не нужно будет "лочить" документ
 

maliy

Green Team
20.03.2007
180
2
BIT
76
документ при открытии "Лочится" и так. Задача проста - есть агент, который мониторит определенные документы. Если документ открыт - ничего не делать, если закрыт - тогда в поле записать нужную информацию. вот и все.
"Лочится" вот так :
Код:
user = session.CommonUserName
Set item = source.Document.GetFirstItem("ath") ' поле ath  - тип авторс, и содержит имена пользователей   
If item.Contains(user) O Then  
        Source.EditMode = True  
      
        If source.EditMode=False Then          
            source.close   
End If
    End If
То есть если документ открыл пользователь из списка ath - то другой пользователь из списка ath не откроет его пока первый не закроет.
Но момент в другом - чтоб агент, если документ открыл, не трогал этот документ.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
473
Но момент в другом - чтоб агент, если документ открыл, не трогал этот документ.
что-то страшное случится? ;)
есть глюкавая фича
она может добавить проблем
 

maliy

Green Team
20.03.2007
180
2
BIT
76
Ничего страшного не случится - но зачем плодить конфликты.
Фича про локхолдерс - галочка на бд не поднята, поэтому и не использую эту фичу, потому как реально глюковатая...
 

maliy

Green Team
20.03.2007
180
2
BIT
76
иронии не понял. интересует по моему первому посту есть мысли?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
473
иронии не понял. интересует по моему первому посту есть мысли?
это правда жизни, так работает нотус - распределенная система
повторю - есть велосипеды, через написание собственного управления, опираясь на очереди
 

garrick

Lotus Team
26.10.2009
1 367
152
BIT
364
Документ, открыт пользователем. Есть агент, который должен записать информацию в этот документ. Но дабы избежать конфликта, необходимо записывать в документы информацию когда документ закрыт, если открыт - тогда ничего не записывать. Как узнать агентом открыт ли документ?Или вообще как правильно реализовать такую(описанную выше) логику?
Если вы знаете заранее какое поле или поля изменит ваш агент, вы можете при открытии документа сохранить его в переменную, а при закрытии перед сохранением считать снова из бэкграунд документа и сравнить с ранее сохранённым значением. Если значения не совпадают надо вывести пользователю мессаджбокс "Пока ты тут чесал репу всё пропало! Надо закрыть документ без сохранения, а затем открыть его снова". Ну, и не разрешать пользователю сохранить этот документ. А если значения совпадают, значить агент ничего не поменял и можно смело сохранить документ. На мой взгляд это самый простой вариант. Хотя мне кажется у вас там с архитектурой всего приложения что-то не в порядке, раз возникают такие вопросы.
 
S

Shandrik

А в поле ath групп быть не может?

Я бы решил задачу так - отдельная база, где хранятся тикеты открытых документов, и уже по ней разруливать. Мне сдаётся, надо Лотусу дать возможность самому решить, можно ли юзеру открыть данный документ - в любом случае сделать EditMode=True, а если не получится - закрываем (хоть и очень странно это).

Но из-за распределённости да, неожиданки возможны...
 

alexas1

Green Team
10.04.2014
1 202
225
BIT
45
где хранятся тикеты открытых документов
- и чем это отличается от штатно локнутого (если этим пользоваться) домином дока? ;) ну, кроме велосипедности
альтернативы ток 2 - разруливать уже возникшие конфликты (врукопашную или агентом) или всегда считать последнюю правку "правильной" (конкретного измененного поля), можно оценку "правильности" расширить контролем принадлежности юзверя к определённой группе - типа, начальник может быть более прав :). Поля, изменённые ТОЛЬКО другим пользователем\агентом, оставлять без изменений (при сохранении из UI)
эт достигается сохранением дока НЕ! в UI (ругани при сохранении в этом случае конечно не будет)
 

swyatogor

Green Team
24.02.2014
594
24
BIT
5
а чем Вам lockholdera не нравятся.. у мну стоит и вполне себе работает.. в чем глюки?
 
Мы в соцсетях:

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