1 / 1 / 0
Регистрация: 01.10.2006
Сообщений: 615
1

Java агент

31.01.2007, 17:47. Показов 16257. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
я написал агент, который берет параметры из профайла - селективную формулу и имя поля,
затем по этим параметрам получает сортированный массив(тип Vector) и сохраняет в поле этого же профайла этот массив..
НО на самом деле нечего не сохраняется.
агент вызывается скриптом agent.Run или agent.Runonserver
класс агента является наследником от AgentBase..
в дебагере я проверял все правильно - данные получаются, созраняются, затем для контроля вызываю метод, который проверяет, есть ли данные в поле документа - они там есть.
но после завершения работы агента в лотус-скрипте получаю (дебагер) профайл - поле пустое..

какие есть соображения ? в чем тут может быть дело ?

кроме того лотус подвисает на минуту пока агент выпоняется - это слишком долго по сравнению с десятком функций реализующих тоже самое на лотус скрипте

так с производительностью все ясно - ошибка была... тем не менее скрипт быстрее в 4 раза
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.01.2007, 17:47
Ответы с готовыми решениями:

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

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

Java агент по расписанию
Написал агентик который отправляет информацию из документа на ActiveMq сервер. С локальной машины...

Странно работает Java-swing-Агент
День добрый! Есть такой агент, он очень странный. Я исполбзую SWING. В коде который отвечает...

4
0 / 0 / 0
Регистрация: 28.04.2006
Сообщений: 225
01.02.2007, 08:50 2
Я думаю, неплохо было бы привести код агента, а также скрипта, который результаты его работы принимает. Просто у меня похожие проблемы были, мож смогу вспомнить, в чем затык.
0
1 / 1 / 0
Регистрация: 01.10.2006
Сообщений: 615
01.02.2007, 09:22 3
в тот же профайл, из которого берутся параметры не сохраняется.. поэтому решил в новый документ сохранять данные..

кнопка

Код
Sub Click(Source As Button)
Dim ses As New NotesSession
Dim db As NotesDatabase
Dim agent As NotesAgent
Dim profile As NotesDocument
Dim formula As String
Dim varData As Variant
Dim choice As Variant
Dim key As String
Dim coll As NotesDocumentCollection
try:
On Error Goto catch
key = Lcase(Trim(Inputbox("","")))
If key = "" Then Exit Sub

Set db = ses.CurrentDatabase

Dim startTime As New NotesDateTime(Now)

formula = {SELECT Form = "fa_Person" & fl_JobTitle != "Супервайзер" & fl_Deleted !="1"} +_
{& @contains(@LowerCase(} + FIELD_FULLNAME + {);"} + key + {")}

Set profile = db.GetProfileDocument("Formula","")

Call profile.ReplaceItemValue("Formula", Formula)
Call profile.ReplaceItemValue("FieldName",FIELD_FULLNAME)

Call profile.Save(True, False)
Set profile = Nothyng

Set agent = db.GetAgent("aa_Make")
If agent Is Nothyng Then Exit Sub
Call agent.Run

Dim endTime As New NotesDateTime(Now)

Set profile = db.GetProfileDocument("Formula")

varData = profile.GetItemValue("Responce")
If Trim(Cstr(varData(0)))<>"" Then choice = workspace.Prompt(4, Cstr(endTime.TimeDifference(startTime)), "Profile", varData(0), varData)

Call profile.Remove(True)

Exit Sub
catch:
Print Getthreadinfo(1),Err,Error,Erl
Exit Sub
End Sub
агент

Код
import lotus.domino.*;
import java.util.*;

public class JavaAgent extends AgentBase {
Database DB;
DocumentCollection coll;
String query, objectName;
String[]params = new String[1];
Vector responce = new Vector();

public void NotesMain() {

try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
DB = agentContext.getCurrentDatabase();

// параметры:
params = getParams(DB, params.length);
if (params != null){
query = params[0];          // формула отбора
objectName = params[1];     // поле, по которому строится отбор

if (query != ""){
try {
coll = DB.search(query);//коллекция по формуле отбора
if (coll.getCount() > 0){
// получить сортированный массив соответствий запросу
responce = getSortedData(coll,objectName);
if (responce != null){
setData(DB,responce);
//testing


}
}
}catch(Exception e) {
e.printStackTrace();
}
}
}

} catch(Exception e) {
e.printStackTrace();
}
};

// занести массив в поле документа
void setData(Database db, Vector v){
try {
//Document doc = db.createDocument();
Document doc = db.getProfileDocument("Formula",null);
//doc.replaceItemValue("Form", "Formula");
doc.replaceItemValue("Responce", v);

if (doc.save(true,false))
prt("Document saved");
else
prt ("Somethyng went wrong");
doc = null;

}catch(Exception e) {
e.printStackTrace();
}
}

// вывод текста
void prt(String s) {System.out.println(s);}

// получить сортированный Vector-массив соответствий запросу
Vector getSortedData(DocumentCollection coll, String objectName){
Document doc;
Vector resp = new Vector();
List list = new ArrayList();
String objectValue;

try {
doc = coll.getFirstDocument();
while (doc != null){
objectValue = doc.getItemValueString(objectName);
if (list.contains(objectValue)== false )
list.add(objectValue);
doc = coll.getNextDocument(doc);
}
Collections.sort(list);
// трансформировать список в вектор
resp = listToVector(list);

}catch(Exception e) {
e.printStackTrace();
}
return resp;
}

// трансформировать список в вектор
Vector listToVector(List l){
Vector v = new Vector();
try {
for (int i = 0; i < l.size(); i++){
v.addElement(l.get(i));
}
}catch(Exception e) {
e.printStackTrace();
}
return v;
}

// получение параметров
String[] getParams(Database db, int dym){
String[] p = new String[dym+1];
try {
Document profile = db.getProfileDocument("Formula", null);
if (profile.hasItem("Formula")){
p[0] = profile.getItemValueString("Formula");
p[1] = profile.getItemValueString("FieldName");
profile = null;
return p;
}
else
return null;
}catch(Exception e) {
e.printStackTrace();
return null;
}
}
};
0
1 / 1 / 0
Регистрация: 01.10.2006
Сообщений: 615
04.02.2007, 14:35 4
кто писал апплеты, работающие с документам приведите, пожалуйста, каркас апплета с инициализацией сессии, и собственно как апплет прикручивается к лотусу ??

собственно, меня интересует механизм: передача параметров в java - работа с документами - возврат параметра в лотус-скрипт
0
v2v
30.05.2007, 20:09 5
Вопрос.
Я написал ява агент и ещё один класс в этом же ява агенте, теперь я хочу использовать этот класс в другом агенте.
попробывал вынести его в ява скрипт лайбрари, но вот возникла незадача, как мне теперь подключить в агенте эту библиотеку.
30.05.2007, 20:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.05.2007, 20:09
Помогаю со студенческими работами здесь

Java Агент, Link Source Пропадает
Доброго времени суток. Столкнулся с такой проблемой: В Эклипсе написал код с использованием API...

Java Агент. Post Запрос С Авторизацией
Есть Java агент, который по REST API создает POST запрос. .SpoilerTarget&quot;&gt;Спойлер:...

Java агент ошибка при вызове веб сервиса
Добрый день! Агент вызывающий Web-сервис с помощью Axis, вызывает ошибки если файлы jar (axis.jar,...

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

Самоудаляющийся агент
Добрый день(вечер). Может ли агент по завершении своей работы удалить сам себя из базы? :D


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru