Autor Thema: Serverseitiger Agent bei Feldänderung aufrufen  (Gelesen 1817 mal)

Offline dormi

  • Junior Mitglied
  • **
  • Beiträge: 56
  • Geschlecht: Männlich
Serverseitiger Agent bei Feldänderung aufrufen
« am: 29.04.09 - 13:17:03 »
Hallo,

ich möchte gerne einen Agenten auf dem Server ausführen, wenn ein bestimmtes Feld in einem Formular geändert wird.

Kann mir jemand sagen, wie das geht?

Danke
Jürgen

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Serverseitiger Agent bei Feldänderung aufrufen
« Antwort #1 am: 29.04.09 - 13:22:59 »

Eventuell hilft dieses hier.

aus der Designer-Hilfe - Klasse NotesAgent

Code
status = notesAgent.RunOnServer( [ noteID$ ] )


Andreas

Offline dormi

  • Junior Mitglied
  • **
  • Beiträge: 56
  • Geschlecht: Männlich
Re: Serverseitiger Agent bei Feldänderung aufrufen
« Antwort #2 am: 29.04.09 - 13:51:05 »
Hallo,

ich hab das mal nach dem Hilfe Beispiel so gelöst:

Code
Sub Exiting(Source As Field)
	
	Dim s As New NotesSession
	Dim db As NotesDatabase
	Dim agent As NotesAgent
	Set db = s.CurrentDatabase
	Set agent = db.GetAgent("Kunden_Agent_ODBC_OF")
	If agent.RunOnServer = 0 Then
		Messagebox "Agent ran",, "Success"
	Else
		Messagebox "Agent did not run",, "Failure"
	End If	
	
	
End Sub

Das klappt auch.

Was ist denn mit unseren ADM, die nur eine lokale Replik auf Ihren Notebooks haben? Die haben dort keine Verbindung zu der ODBC Datenbank.

Kann ich es irgendwie erreichen, dass der Client eine Zeiger auf den geänderten Datensatz setzt und der Server nach der nächsten Replikation die Aktualsierungen durchführt?

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: Serverseitiger Agent bei Feldänderung aufrufen
« Antwort #3 am: 29.04.09 - 13:58:40 »
Ja das kannst du ....

Erst mal musst du deinen Exiting Teil so ändern, das der Agent nur dann läuft wenn er nicht lokal arbeitet und anstelle des Agents dann ein "Flagitem" im Dokument setzt. Und dann brauchst du einen periodischen Agent, der grundsätzlich alles was das Flagitem hat durchnudelt und da die Daten aus der ODBC Datenbank holt. Logischerweise muss der anschließend das Flag Item löschen.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline dormi

  • Junior Mitglied
  • **
  • Beiträge: 56
  • Geschlecht: Männlich
Re: Serverseitiger Agent bei Feldänderung aufrufen
« Antwort #4 am: 29.04.09 - 14:17:58 »
OK, falls mir jetzt jemand eine Lösung posten würde, könnte ich das, ansonsten muss ich den Agenten halt serverseitig auf jedes geänderte Dokument loslassen, was leider relativ lange dauert und viel Last für die Repliken bedeutet :-(

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: Serverseitiger Agent bei Feldänderung aufrufen
« Antwort #5 am: 29.04.09 - 14:26:18 »
Was möchtest du jetzt?

1. Das dir jemand eine mögliche Lösung deines Problemes skizziert?

2. Oder das es dir jemand löst?

Das erste hast du schon bekommen. Für das zweite habe ich mal ein Beschreibung wann ein Problem für mich "interessant wird" hier geposted. Ersetze in diesem Beitrag einfach den Begriff !!HELP!! durch "dein Problem" und lese ihn aufmerksam durch.

OK?
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline dormi

  • Junior Mitglied
  • **
  • Beiträge: 56
  • Geschlecht: Männlich
Re: Serverseitiger Agent bei Feldänderung aufrufen
« Antwort #6 am: 29.04.09 - 14:39:56 »
Nein, ist schon klar. - auch ohne, dass ich Dein Posting gelesen habe.

Die Lösung ist nur zu komplex für mich.

Endweder gib es dafür sowas wie eine Musterlösung oder eine der sehr guten Anleitungen hier im Forum oder ich krieg das nicht hin.

Dafür muss ich erstmal in die LS Schule gehen ;-)

Danke für den Lösungsansatz. Fortsetzung meinerseits erfordert aber leider etwas Fortbildung ....

Gruß
Jürgen

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: Serverseitiger Agent bei Feldänderung aufrufen
« Antwort #7 am: 29.04.09 - 15:38:38 »
Also dann Fortbildung ....

Schau dir in der Online Hilfe des Designers die Db Class Properties an und da speziell die Server Property.

Wenn du rausgefunden hast, wie du rausbekommst ob die Datenbank lokal oder auf dem Server liegt, dann weist du auch wie du die If Abfrage gestalten musst mit der du entscheiden kannst, ob du entweder den Agent startest, oder einen Wert in ein von dir beliebig zu benennendes (und es muss nicht in der Form vorhanden sein) Feld in deinem Dokument schreibst. Felder heisen in Notes Items und es gibt grundsätzlich zwei Wege ein Item in einem Notes Dokument zu erstellen. Die verkürzte Syntax mit  ..... Doc.DeinFeldname = "Flag" oder ...= 1 oder mit .... set item = doc.replaceitemvalue(....) Näheres dazu ebenfalls in der Hilfe in der document class.

Dein Agent, den du dann eben nicht auf alle geänderten Dokumente loslässt, sondern auf bestimmte Dokumente in einer Ansicht, die nur die Dokumente enthält, die  ....  >> Select Form = "DeineForm" & DeinFeldname = "Flagwert" << ... gesetzt haben. Ansonsten läuft das eins zu eins identisch mit dem Agent den du ja schon zu haben scheinst.

Du kannst für diesen Zweck deinen ODBC Connect Agent der ja auch etwas komplizierter ist kopieren und anpassen.

Wie du schon bemerkt hast ist die Aktivierung des Agents für alle geänderten Dokumente nicht wirklich korrekt und kann zu leichten Verdauungsschwierigkeiten bei deiner Anwendung führen.

Deswegen würde ich mir an deiner Stelle jemand aus dem Forum schnappen und mir von ihm live helfen lassen. Dabei lernst du mehr als mit zig Kursen.
TeamViewer ist dafür ganz gut geeignet (allerdings hab ich mit dem Teil in letzter Zeit immer wieder Timeouts gehabt). Oder eine gemeinsame Sametime Session mit Desktop Sharing.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz