С Новым годом! Форум программистов, компьютерный форум, киберфорум
HCL Notes: Программирование
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.90/199: Рейтинг темы: голосов - 199, средняя оценка - 4.90
0 / 0 / 0
Регистрация: 16.02.2007
Сообщений: 403

Хитрозамудренный агент.

04.06.2007, 12:04. Показов 36288. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Суть агента:

Есть БД, назовем ее - "Задачи" в которой хранятся ссылки на документы в других разных базах.
В этой базе "Задачи"есть форма - Memo на которой лежат следующие поля:
SendTo (UserNoteName)
SourseUNIDDoc (UNID - документа)
From - (Название базы в которую ведет ссылка по русски)

Юзер видет только свои документы по признаку что он является SendTo
Он открывает документ и в нем есть ссылка на документ из другой БД.
Он нажимет ссылку и знакомится с доком.

Задача написать агент который будет делать следубщее:

Юзер выделяет колекцию своих документов, и реплейсит поля X1; X2 в документах на которые ведут ссыки. Сложность в том что доки лежат в разных базах, но везде есть указаные поля.

Вот за что бы зацепится???
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.06.2007, 12:04
Ответы с готовыми решениями:

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

Java-агент Vs Ls-агент — кто быстрее?
Бэк-агента можно написать как на лс, так и на яве. Кто-нибудь обладает достоверной информацией, какой из них будет выполняться быстрее? Или...

Агент и время
Не могу ни как разобраться в такой проблемме. Есть форма с полем типа Date/Time - CautionDate Пишу в агенте Dim Caution As...

30
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
04.06.2007, 12:16
Имя базы есть?
Тогда:
1. notesSession.GetDatabase
2. notesDatabase.GetDocumentByUNID
3. notesDocument.ReplaceItemValue
0
0 / 0 / 0
Регистрация: 16.02.2007
Сообщений: 403
04.06.2007, 12:38
Ага только имя базы в буквальном смысле database title ;)
Как с этим быть?

Есть еще база "Связи" svazi.nsf в коротой есть список баз (title) и их коды реплик.
Может как-то это зацепить?
Только как???
0
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
04.06.2007, 12:48
Прописать нормальный путь. Можно в скрытое поле.
Можно еще, наверное, через notesSession.GetDbDirectory, а потом notesDbDirectory.GetFirstDatabase и notesDbDirectory.GetNextDatabase.

<!--QuoteBegin-LIGHT+5:06:2007, 12:25 -->
<span class="vbquote">(LIGHT @ 5:06:2007, 12:25 )</span><!--QuoteEBegin-->Есть еще база "Связи" svazi.nsf в коротой есть список баз (title) и их коды реплик.
Может как-то это зацепить?
Только как???

[snapback]68109" rel="nofollow" target="_blank[/snapback]?[/quote]
Тогда можно попробовать:
notesDbDirectory.OpenDatabaseByReplicaID

Или notesDatabase.OpenByReplicaID.
0
0 / 0 / 0
Регистрация: 16.02.2007
Сообщений: 403
04.06.2007, 12:50
На данный момен картина такая.



Sub Click(Source As Button)

Dim s As NotesSession
Dim db As NotesDatabase
Dim uidoc As NotesUIDocument
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Dim w As NotesUIWorkspace
Dim createDate As Variant
Dim i As Variant
**************************************** *******
Set s = New NotesSession
Set db = s.CurrentDatabase
Set dc = db.UnprocessedDocuments
Set doc = dc.GetFirstDocument
Set w = New NotesUIWorkspace

**************************************** ******

Do Until doc Is Nothyng Первый документ

Let From1=doc.From(0) Поле FORM
Let SendTo1=doc.SendTo(0) Поле SendTo
Let SUNID=doc.SourceUNIDDoc(0) Поле SendTo

Messagebox( "Документ " + SUNID + " в БД - " + From1 + " Изменен")

Dim s1 As New NotesSession
Dim db1 As NotesDatabase
Set db1 = s.GetDatabase("server", "svazi")
If Not db1.IsOpen Then
Messagebox "Неудалось открыть базу данных"
Else


Messagebox db1.Title,, "Title of svazi.nsf"

Вот тут вопрос как в открытой теперь БД вытащить документ у которого поле Title = From1
А дальше уже когда вытащин документ, в форме есть поля:
ServerDB
FileDB
ReplicalID

End If

Set doc = dc.GetNextDocument (doc)
Loop


End Sub
0
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
04.06.2007, 12:53
<!--QuoteBegin-LIGHT+5:06:2007, 12:37 -->
<span class="vbquote">(LIGHT @ 5:06:2007, 12:37 )</span><!--QuoteEBegin-->Вот тут вопрос как в открытой теперь БД вытащить документ у которого поле Title = From1
А дальше уже когда вытащин документ, в форме есть поля:
ServerDB
FileDB
ReplicalID
[snapback]68115" rel="nofollow" target="_blank[/snapback]?[/quote]
Использовать notesView.GetDocumentByKey
0
0 / 0 / 0
Регистрация: 16.02.2007
Сообщений: 403
04.06.2007, 13:20
Врезал такой кусок, ругается на неверный тип, не подскажеш на какю мину я наступил?

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
            Dim session2 As New NotesSession
Dim db2 As NotesDatabase
Dim view2 As NotesView
Dim doc2 As NotesDocument
key = From1
Set db2 = session2.CurrentDatabase
Set view2 = db2.GetView ("DBTitleLookup" ) Моя вьюшка
Set doc2 = view2.GetDocumentByKey (key )
If Not (doc2 Is Nothyng) Then
Messagebox "$" & doc2.GetItemValue ("Title")(0),, _
"Title"
Else
Messagebox "DBTitleLookup " + key,, "Not found"
End If
0
0 / 0 / 0
Регистрация: 04.12.2004
Сообщений: 3,329
04.06.2007, 13:29
Для: LIGHT
Ты посмотри в дебаггере на какую строку ругается.
Кстати, вторую сессию (Dim session2 As New NotesSession) не надо создавать. У тебя уже есть - s.
0
0 / 0 / 0
Регистрация: 16.02.2007
Сообщений: 403
04.06.2007, 13:40
А что-то дебагер вообще молчит
Но методом тыка вычисли на что он ругается.
На Set doc2 = view2.GetDocumentByKey (key )
При чем Messagebox key нормально выдает.
Вьюшка DBTitleLookup - существует (это к стати алиас, но пробовал и назваине и алиас, один фиг)
0
1 / 1 / 0
Регистрация: 23.04.2006
Сообщений: 226
04.06.2007, 13:53
Для: LIGHT
Вьюшка категоризированна???
0
0 / 0 / 0
Регистрация: 16.02.2007
Сообщений: 403
04.06.2007, 14:17
Нет там всего 1 колонка - Title
0
1 / 1 / 0
Регистрация: 23.04.2006
Сообщений: 226
04.06.2007, 14:18
Для: LIGHT
поробуй её категоризировать
0
0 / 0 / 0
Регистрация: 16.02.2007
Сообщений: 403
04.06.2007, 15:36
Я кажись понял в чем дело.
Смотрите:

Нужно же прочитать в базе связей документ! у которого поле Title=From1
Проще всего найти название Title во вьюшке DBTitleLookup
А дальше открыть документ который постоен по форме Databese и на которой лежат поля Title File Replical

Что-то запутался....
0
0 / 0 / 0
Регистрация: 12.10.2006
Сообщений: 185
04.06.2007, 15:38
достаточно отсортировать
0
0 / 0 / 0
Регистрация: 16.02.2007
Сообщений: 403
04.06.2007, 16:11
Вроде прбедил, насамом деле была ошибка в коде.
На данный момент я благополучно выдрал ReplicaID и Значение поля Address
Но тут возник затык, поле Address много значное
"Adress/Servers"
"FileName.nsf"

Как бы мне выдрать только последнее?

Ой все вопрос снят!!!
0
0 / 0 / 0
Регистрация: 16.02.2007
Сообщений: 403
04.06.2007, 16:22
Еще вопрос по теме.
Как проще всего отыскать документ зная его UNID?
0
1 / 1 / 0
Регистрация: 04.08.2006
Сообщений: 2,950
04.06.2007, 16:25
<!--QuoteBegin-LIGHT+5:06:2007, 15:09 -->
<span class="vbquote">(LIGHT @ 5:06:2007, 15:09 )</span><!--QuoteEBegin-->Как проще всего отыскать документ зная его UNID?
[snapback]68169" rel="nofollow" target="_blank[/snapback]?[/quote]

...
Set db = s.CurrentDatabase
Set dc = db.AllDocuments
Set doc = dc.GetFirstDocument
While Not(doc Is Nothyng)
If doc.IsResponse Then
Set pdoc = _
db.GetDocumentByUNID(doc.ParentDocumentU NID)
...
0
0 / 0 / 0
Регистрация: 16.02.2007
Сообщений: 403
04.06.2007, 16:31
Code
1
db.AllDocuments
Хм.. а если документов пару сотен тыщ?
0
1 / 1 / 0
Регистрация: 04.08.2006
Сообщений: 2,950
04.06.2007, 16:34
Для: LIGHT
Да Вы на это не сматрите, выше код я привел что бы было понятно что такое db - NotesDataBase

Set db = s.CurrentDatabase
...
Set pdoc = _
db.GetDocumentByUNID(doc.ParentDocumentU NID)
- Finds a document in a database, given the document universal ID (UNID).

Syntax
Set notesDocument = notesDatabase.GetDocumentByUNID( unid$ )
0
0 / 0 / 0
Регистрация: 16.02.2007
Сообщений: 403
04.06.2007, 17:06
Понял, победил.
Начались заморочки с реплейсами.
К примеру есть много занчное поле
Reviewer
"User1NotesName"
"User2NotesName"
"User3NotesName"
"User4NotesName"

Среди них должен быть (не обязательно) SendTo (UserNoteName) т.е. User заненсенный в поле SendTo в самом первом документе (первый пост в этой ветке)
Как мне удалить эту строку в много значном поле?

Как бы логику понимаю сложность отыскать именно эту строку в многозначнике
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.06.2007, 17:06
Помогаю со студенческими работами здесь

Java агент
я написал агент, который берет параметры из профайла - селективную формулу и имя поля, затем по этим параметрам получает сортированный...

Агент по расписанию
Необходимо чтобы агент запускался три раза в день. Я выбрал &quot;More then once a day&quot;, выставил &quot;Run agent every&quot; = 3 hours и...

Java - агент
Проблема с использованием i-text (написанной на java тулзе для формирования pdf-документов) Сделал все как по инструкции (с java в...

Шедулерный агент
Запускаю агента ночью на сервере, утром смотрю в лог вижу ерор - Error creating product object сталкнулся с шедулерами впервые, не знаю...

Агент и профайлы
Имеется документ (профайл), который править может только пользователь с правами менеджера. Но существует вероятность, что потребуется...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru