NotesAgent.Run возвращаемое значение - PullRequest
0 голосов
/ 09 сентября 2011

У меня есть агент, который запускает других агентов (давайте назовем эти «субагенты» для моей цели). Каждый раз, когда агент запускается, он регистрирует свои действия, независимо от того, успешно ли он работал или сгенерировал ошибку. Теперь я хочу войти в систему, если субагенты будут успешно работать или нет (используя NotesAgent.Run/RunOnServer). В документации сказано, что этот метод возвращает 0, если субагент запущен успешно. Но когда я вынуждаю ошибку для субагента, метод Run по-прежнему возвращает 0. Есть ли способ, которым я могу заставить его возвращать другие значения при возникновении ошибки? Или есть другой способ, которым я могу записать событие субагентов в базу данных основного агента. Обратите внимание, что субагенты работают в других базах данных. Большое спасибо! : D

Ответы [ 3 ]

1 голос
/ 09 сентября 2011

Это может быть хорошим руководством для объединения агентов вместе.

0 голосов
/ 15 сентября 2011

Статья, на которую ссылается @giulio, описывает хороший подход для эффективной передачи данных между «связанными» агентами.

Единственная проблема с примером в статье, с которой может столкнуться @Jairo, заключается в том, что документ, чей noteid передается дочернему агенту (назовем его «прокси»), хранится в базе данных, инициируя вызов агента. Это нормально, если субагент находится в той же базе данных, однако в оригинальном описании указано, что субагент иногда находится в другой базе данных. Это означает, что если вы хотите получить и обновить прокси-сервер из субагента, сначала вам нужно получить дескриптор к вызывающей БД.

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

Поэтому хорошим подходом является хранение прокси в месте, которое, как вы знаете, всегда будет доступно. Например. при связывании агентов из вызова, сделанного на клиенте Notes, вы можете сохранить прокси-документ в локальном файле "bookmarks.nsf". Это системная база данных, и она всегда доступна, поэтому это хорошее место для хранения документов. Затем, когда ваш субагент запускается, извлеките прокси из bookmarks.nsf, используя переданный «noteid», не беспокоясь о том, где находится родительский агент. Вероятно, хорошей практикой будет удаление прокси-документов из закладок db после того, как вы закончите.

0 голосов
/ 09 сентября 2011

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

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

...