Autor Thema: Thread Problem im Agenten  (Gelesen 4084 mal)

Offline lightnoweb

  • Frischling
  • *
  • Beiträge: 4
Thread Problem im Agenten
« am: 10.01.09 - 22:48:19 »
Hallo zusammen,

ich habe ein Problem mit einem Agenten und gerade keine Ahnung woran es liegt.
Code
import lotus.domino.*;

public class JavaAgent extends AgentBase {

	public void NotesMain() {

		try {			
			Session session = getSession();
			AgentContext agentContext = session.getAgentContext();
			Agent ag = agentContext.getCurrentAgent();
			System.out.println("start workflow...for following noteId: " + ag.getParameterDocID());
			Database db = agentContext.getCurrentDatabase();

		     Document curDoc = db.getDocumentByID(ag.getParameterDocID());


		     String strResponsible = curDoc.getItemValueString("Responsible");
    		     String strDateFrom = curDoc.getItemValueDateTimeArray("DateFrom").toString();
    		     String strDateTo = curDoc.getItemValueDateTimeArray("DateTo").toString();
			System.out.println(strResponsible);							

//RUN sametime
			LotusSametime sametime = new LotusSametime("Test" + strDateFrom + " bis zum " + strDateTo + " beantragen.", strResponsible);
			
			Thread th_same1 = new Thread(sametime);	
			th_same1.start();
			
			//Thread.sleep(10000);
					
		} catch(Exception e) {
			e.printStackTrace();
		}
	}
}

Wenn ich den Agenten starte, dann endet die Java Debug Console mit:
java.lang.ThreadDeath
   at java.lang.Thread.stop(Thread.java:1007)
   at java.lang.ThreadGroup.stopHelper(ThreadGroup.java:684)
   at java.lang.ThreadGroup.stop(ThreadGroup.java:667)
   at lotus.domino.AgentLauncher.run(Unknown Source)
   at lotus.domino.NotesThread.run(Unknown Source)
Error cleaning up agent threads

Meine LotusSametime Klasse soll eigentlich per Sametime eine Nachricht verschicken.
Bloß passiert das in diesem Notes Agenten nicht, weil anscheinend mit dem Enden des Agenten Threads auch der Sametime Thread geschlossen wird. Kann das sein? Denn wenn ich das Thread.sleep oben nicht auskommentiere, dann wird die Sametime Nachricht noch verschickt.

Ich hoffe, ihr könnt mein Problem nachvollziehen. Ich habe gerade erst angefangen mich mit Notes / Agenten / Sametime und Threads auseinanderzusetzen und es bisher auch noch nicht hinbekommen, den Agenten mit Eclipse zu debuggen. Aber vllt. sieht von euch ja jmd. auf den ersten Blick, wo mein Fehler liegt. Oder kann mir einen Hinweis geben, wo ich nähere Info's zu dem Problem finde, bzw. wo es genau liegt.

Schönen gruß und Danke für eventuelle Antworten

Alex

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: Thread Problem im Agenten
« Antwort #1 am: 12.01.09 - 11:22:22 »
Du hast meiner Meinung nach dass Problem richtig erkannt und darfst den Agent erst enden lassen, wenn der von dir erstellte Thread beendet ist. Der Agentmanager prüft am Agentende ob noch threads offen sind und beendet diese Threads. Dies ist eine Vorsichtsmaßnahme damit keine Zombiethreads mit jedem Agent lauf erstellt werden.

Grüße

Ralf m Petter
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline lightnoweb

  • Frischling
  • *
  • Beiträge: 4
Re: Thread Problem im Agenten
« Antwort #2 am: 12.01.09 - 14:17:59 »
Hallo Ralf,

danke erstmal für deine Antwort.

Nur wie löse ich das Problem? Kann ich unterbinden, dass der Agent meinen Thread killt?

edit: Denn wenn der Agent so lange wartet, bis auch der Sametime Thread beendet ist, dann muss der Nutzer, der den Agenten gestartet hat auch so lange warten, oder?
Und dann, wie bringe ich den Agenten dazu, so lange zu warten bis der Sametime thread beendet ist?


gruß

alex
« Letzte Änderung: 12.01.09 - 14:29:18 von lightnoweb »

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: Thread Problem im Agenten
« Antwort #3 am: 12.01.09 - 16:03:36 »
Zu Frage 1 meines Wissens nach nicht, habe aber noch nicht viel in diese Richtung experimentiert.

Meiner Meinung nach bleibt dir nur über den Thread in einer Schleife solange auf Erledigung zu prüfen, bis der Sametimethread fertig ist. Eventuell gäbe es noch Möglichkeiten mit Wait zu warten. Das würde mir hier aber zu kompliziert erscheinen. Noch besser wäre hier aber zu beleuchten, ob das ganze überhaupt aus einem Agent getriggert werden muß. In Notes8 gibt es ja teilweise viel elegantere methoden so was zu machen. Erzähl mal wie deine Funktionalität aussieht.

Grüße

Ralf
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline lightnoweb

  • Frischling
  • *
  • Beiträge: 4
Re: Thread Problem im Agenten
« Antwort #4 am: 12.01.09 - 17:22:07 »
Also letztendlich geht es darum, Informationen aus Notesdokumenten mit einer Frage versehen per Sametime Nachricht zu verschicken. Die Antwort des Sametime Nutzers soll hinterher in dem Notes Dokument gespeichert werden. Hintergrund ist die Möglichkeit simple Workflows zügig über Sametime abwickeln zu können.

Wenn dies einfacher / effizienter / eleganter zu lösen ist, als mit einem Agenten - umso besser.

gruß

alex

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Re: Thread Problem im Agenten
« Antwort #5 am: 13.01.09 - 07:49:57 »
Das entscheidende bei solchen Sachen ist, wie wird die Aktion ausgelöst. Über eine Schaltfläche, über ein Menü oder die Symbolleiste? Die meisten GUI Sachen in Notes kann man mittels Expeditor Plugins erweitern. Das ist natürlich für eine solche Sache eine saubere Sache. Viele Sachen kann man auch über die Schiene Composite Application machen. Dort funktioniert die Anbindung zu java einfach viel besser.

Grüße

Ralf
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline lightnoweb

  • Frischling
  • *
  • Beiträge: 4
Re: Thread Problem im Agenten
« Antwort #6 am: 14.01.09 - 15:00:58 »
Derzeit wird die Aktion über einen Button in einer Form ausgelöst. In dem dortigen Click Event wird über LotusScript der Java Agent aufgerufen.
Ich bin eigentlich nur dabei den Prototypen zu entwickeln. Später sollte die Funktionalität (für den Auftraggeber) in einer LotusScript Funktion zur Verfügung stehen. D.h. in einem Workflow wird an irgendeiner Stelle im dahinter liegenden LotusScript Code die Möglichkeit benötigt mit Benutzern über Sametime zu kommunizieren. Antworten, die der Benutzer an den Sametime Bot weitergibt, müssen auch irgendwo in NotesDokumenten gespeichert werden.

Ich habe in einer 2ten Version testweise den Agenten nun noch so lange warten lassen, bis der Sametime Thread beendet ist. Aber dies ist ja eigentlich nicht Sinn der Sache, da der Agenten Thread ja solange auch das UI des Notes Client blockt.

-----EDIT
Dadurch habe ich nicht die Möglichkeit auf das aufpoppende Sametime Chat Window zu reagieren und mir bleibt nichts anderes übrig als Notes komplett zu killen. Das ganze ist für ein Uni Projekt und ich merke derzeit, das mir wohl auch einiges an Grundwissen zu Notes fehlt. Ich dachte eigentlich, dass die Agenten alle Ihre eigenen Threads haben, damit der Thread im Hintergrund läuft und der Nutzer weiter in Notes arbeiten kann. Bin gerad verwirrt....
----EDIT

Kannst du mir vllt. noch 1-2 Sätze zu Lösungsansätzen mittels Composite Application bzw. Lotus Expeditor sagen, insofern sie mit dem oben genannten Verwendungszweck vereinbar sind.

Danke für deine bisherigen Info's


alex
« Letzte Änderung: 14.01.09 - 17:54:06 von lightnoweb »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz