AtNotes Übersicht Willkommen Gast. Bitte einloggen oder registrieren.
05.08.21 - 13:51:21
Übersicht Hilfe Regeln Glossar Suche Einloggen Registrieren
News:
Schnellsuche:
+  Das Notes Forum
|-+  Domino 9 und frühere Versionen
| |-+  Entwicklung (Moderatoren: Axel, eknori, Hoshee, ata, Thomas Schulte, koehlerbv)
| | |-+  Agenten per Script steuern
« vorheriges nächstes »
Seiten: [1] 2 Nach unten Drucken
Autor Thema: Agenten per Script steuern  (Gelesen 7972 mal)
MiMueller
Frischling
*
Offline Offline

Geschlecht: Männlich
Beiträge: 37


das is´ halt Notes...


« am: 08.07.03 - 11:02:30 »

Hallo,

wie kann ich einem bestehenden Agenten per Lotus-Script die Parameter für den Zeitplan übergeben.



Michael


 
Gespeichert
Meff
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 2095


Das Denken der Zukunft muß Kriege unmöglich machen


WWW
« Antworten #1 am: 08.07.03 - 11:05:02 »

Falls sich Deine Frage darauf bezieht, die RunTime des Agents mittels Script zu setzten:

Gar nicht. Das müsstest Du über die API machen, mit Script kommst Du da nicht dran.

Meff
Gespeichert

"Zwei Dinge sind zu unserer Arbeit nötig: Unermüdliche Ausdauer und die Bereitschaft, etwas, in das man viel Zeit und Arbeit gesteckt hat, wieder wegzuwerfen."
Albert Einstein
MiMueller
Frischling
*
Offline Offline

Geschlecht: Männlich
Beiträge: 37


das is´ halt Notes...


« Antworten #2 am: 08.07.03 - 11:09:20 »

Kein Problem, wenn es mittels Notes-API geht!

Hast du da eine Lösung ?
Gespeichert
Axel
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 8658


It's not a bug, it's Notes


« Antworten #3 am: 08.07.03 - 11:28:29 »

Hi,

ich hab mal in der API-Doku geschaut. Ich hab keine Möglichkeit gefunden.


Axel
Gespeichert

Ohne Computer wären wir noch lange nicht hinterm Mond!
MiMueller
Frischling
*
Offline Offline

Geschlecht: Männlich
Beiträge: 37


das is´ halt Notes...


« Antworten #4 am: 08.07.03 - 11:41:30 »


Wo kann man die API-Doku downloaden ?
Gespeichert
Axel
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 8658


It's not a bug, it's Notes


« Antworten #5 am: 08.07.03 - 11:55:14 »

Hi,

hier:
http://www-15.lotus.com/ldd/products/.cmd/cs/.ce/155/.s/377/_th/302/_lpid.301/307/_lp.301/0/_s.155/372


Axel


Gespeichert

Ohne Computer wären wir noch lange nicht hinterm Mond!
Meff
Freund des Hauses!
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 2095


Das Denken der Zukunft muß Kriege unmöglich machen


WWW
« Antworten #6 am: 08.07.03 - 11:55:31 »

Also, Du kommst an die Einstellungen mittels:

LNAGENTSCHEDULE GetAgentSchedule() const

Und verändern kannst Du das ganze über :

LNSTATUS SetAgentSchedule( LNAGENTSCHEDULE option )

Die aktuelle Dokumentation findest Du hier:

http://www-15.lotus.com/ldd/products/.cmd/cs/.ce/155/.s/377/_th/302/_lpid.301/307/_lp.301/0/_s.155/372

Meff
Gespeichert

"Zwei Dinge sind zu unserer Arbeit nötig: Unermüdliche Ausdauer und die Bereitschaft, etwas, in das man viel Zeit und Arbeit gesteckt hat, wieder wegzuwerfen."
Albert Einstein
Axel
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 8658


It's not a bug, it's Notes


« Antworten #7 am: 08.07.03 - 12:03:36 »

Hi,

äähmm, ist in meiner Doku nicht vorhanden.  Huh

Welche Version hast du denn? Ist C-API oder C++ - API?


Axel
Gespeichert

Ohne Computer wären wir noch lange nicht hinterm Mond!
Axel
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 8658


It's not a bug, it's Notes


« Antworten #8 am: 08.07.03 - 12:28:43 »

Hi,

ich hab's gefunden. Ich hatte eine ältere C-API - Doku. Ist aber in der C++ - API enthalten.


Axel
Gespeichert

Ohne Computer wären wir noch lange nicht hinterm Mond!
eknori
@Notes Preisträger
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 11551


« Antworten #9 am: 08.07.03 - 12:34:07 »

geht auch mit script ( zumindest im weiteren Sinne )

Const wAPIModule = "NNOTES"  ' Windows/32
Const NOTE_CLASS_FILTER = &H0200

Type AssistInfo
   Version As Integer
   TriggerType As Integer  ' 0 none, 1 schedule, 2 new mail, 3 paste, 4 manual, 5 update, 6 router
   SearchType As Integer  ' 0 none, 1 all, 2 new, 3 new/mod, 4 selected, 5 view, 6 unread, 7 prompt, 8 UI
   IntervalType As Integer  ' 0 none, 1 minutes, 2 days, 3 weeks, 4 months
   Interval As Integer
   Time1 As Variant  ' Start time (ms since midnight)
   Time2 As Variant  ' Long (weekday or day of month) or end time (ms since midnight)
   StartTime As Variant  ' Time/Date
   EndTime As Variant  ' Time/Date
   Flags As Long  ' 1 hidden, 2 no weekends, 4 store highlights, 8 mail/paste, 16 choose server
   Spare(15) As Long
End Type

Type BlockID
   hPool As Long
   Block As Integer
End Type

Declare Function ConvertTIMEDATEToText Lib wAPIModule Alias "ConvertTIMEDATEToText" _
(  Byval zI As Long, Byval zT As Long, Byval T As Long, Byval S As String, Byval nS As Integer, nT As Integer) As Integer

Declare Function ConvertTextToTIMEDATE Lib wAPIModule Alias "ConvertTextToTIMEDATE" _
(  Byval zI As Long, Byval zT As Long, pS As Long, Byval nS As Integer, Byval T As Long) As Integer

Declare Private Function NIFFindDesignNote Lib wAPIModule Alias "NIFFindDesignNote" _
(  Byval hDB As Long, Byval S As String, Byval C As Integer, N As Long) As Integer

Declare Private Function NSFDbOpen Lib wAPIModule Alias "NSFDbOpen" _
(  Byval PathName As String, DbHandle As Long) As Integer

Declare Private Function NSFDbClose Lib wAPIModule Alias "NSFDbClose" _
(  Byval DbHandle As Long) As Integer

Declare Private Function NSFNoteOpen Lib wAPIModule Alias "NSFNoteOpen" _
(  Byval hDB As Long, Byval NoteID As Long, Byval F As Integer, hNT As Long) As Integer

Declare Private Function NSFNoteClose Lib wAPIModule Alias "NSFNoteClose" _
(  Byval hNT As Long) As Integer

Declare Function NSFItemInfo Lib wAPIModule Alias "NSFItemInfo" _
(  Byval hNT As Long, Byval N As String, Byval nN As Integer _
,  iB As BlockID, D As Integer, vB As BlockID, nV As Long) As Integer

Declare Private Function NSFNoteUpdate Lib wAPIModule Alias "NSFNoteUpdate" _
(  Byval hNT As Long, Byval F As Integer) As Integer

Declare Function NSFItemDelete Lib wAPIModule Alias "NSFItemDelete" _
(  Byval hNT As Long, Byval N As String, Byval nN As Integer) As Integer

Declare Private Function OSMemAlloc Lib wAPIModule Alias "OSMemAlloc" _
(  Byval T As Integer, Byval N As Long, hM As Long) As Long

Declare Private Function OSMemFree Lib wAPIModule Alias "OSMemFree" _
(  Byval hM As Long) As Long

Declare Private Function OSLockObject Lib wAPIModule Alias "OSLockObject" _
(  Byval H As Long) As Long

Declare Private Sub OSUnlockObject Lib wAPIModule Alias "OSUnlockObject" _
(  Byval H As Long)

Declare Private Function OSPathNetConstruct Lib wAPIModule Alias "OSPathNetConstruct" _
(  Byval NullPort As Long, Byval Server As String, Byval FIle As String, Byval PathNet As String) As Integer

Declare Private Sub Peek Lib "MSVCRT" Alias "memcpy" _
(  D As Any, Byval P As Long, Byval N As Long)

Declare Private Sub Poke Lib "MSVCRT" Alias "memcpy" _
(  Byval D As Long, D As Any, Byval N As Long)

Declare Private Sub PokeString Lib "MSVCRT" Alias "memcpy" _
(  Byval D As Long, Byval S As String, Byval N As Long)






Sub Click(Source As Button)
   a$ = Inputbox$("Name of agent:", "Agent Info", "")
   If a$ = "" Then Exit Sub
   
   Dim session As New NotesSession
   Dim info As AssistInfo
   GetAssistInfo session.CurrentDatabase, a$, info
   
   Messagebox "Version: " & Cstr(info.Version) _
   & Chr$(10) & "TriggerType: " & Cstr(info.TriggerType) _
   & Chr$(10) & "SearchType: " & Cstr(info.SearchType) _
   & Chr$(10) & "IntervalType: " & Cstr(info.IntervalType) _
   & Chr$(10) & "Interval: " & Cstr(info.Interval) _
   & Chr$(10) & "Time1: " & Cstr(info.Time1) _
   & Chr$(10) & "Time2: " & Cstr(info.Time2) _
   & Chr$(10) & "StartTime: " & Cstr(info.StartTime) _
   & Chr$(10) & "EndTime: " & Cstr(info.EndTime) _
   & Chr$(10) & "Flags: " & Cstr(info.Flags)
End Sub

Sub GetAssistInfo(db As NotesDatabase, agent As String, info As AssistInfo)
   np$ = Space(1024)
   OSPathNetConstruct 0, db.Server, db.FilePath, np$
   
   Dim hDB As Long
   NSFDbOpen np$, hDB
   If hDB = 0 Then
      Messagebox "Can't open database", 16
      Exit Sub
   End If
   
   pt& = Instr(agent, "|")
   If pt& = 0 Then ti$ = Trim$(agent) Else ti$ = Trim$(Left$(agent, pt& - 1))
   
   Dim nID As Long
   NIFFindDesignNote hDB, ti$, NOTE_CLASS_FILTER, nID
   If nID = 0 Then
      Messagebox "Can't find agent " & ti$, 16
      Exit Sub
   End If
   
   If Instr(db.GetDocumentByID(Hex$(nID)).~$Flags(0), "f") = 0 Then
      Messagebox ti$ & " is not an agent", 16
      Exit Sub
   End If
   
   Dim hNT As Long
   NSFNoteOpen hDB, nID, 0, hNT
   
   Dim iB As BlockID, vB As BlockID
   NSFItemInfo hNT&, "$AssistInfo", 11, iB, dt%, vB, nv&
   If Not vB.hPool = 0 Then
      p& = OSLockObject(vB.hPool) + vB.Block
      Peek info.Version, p& + 2, 2
      Peek info.TriggerType, p& + 4, 2
      Peek info.SearchType, p& + 6, 2
      Peek info.IntervalType, p& + 8, 2
      Peek info.Interval, p& + 10, 2
      Peek v&, p& + 12, 4
      If v& <= 31 Then info.Time1 = v& Else info.Time1 = Cdat(v&/100/60/60/24)
      Peek v&, p& + 16, 4
      If v& <= 31 Then info.Time2 = v& Else info.Time2 = Cdat(v&/100/60/60/24)
      t$ = Space(81)
      ConvertTIMEDATEToText 0, 0, p& + 20, t$, 80, nt%
      If Not nt% = 0 Then info.StartTime = Cdat(Left$(t$, nt%))
      t$ = Space(81)
      ConvertTIMEDATEToText 0, 0, p& + 28, t$, 80, nt%
      If Not nt% = 0 Then info.EndTime = Cdat(Left$(t$, nt%))
      Peek info.Flags, p& + 36, 4
      OSUnlockObject vB.hPool
   End If
   
   NSFNoteClose hNT
   NSFDbClose hDB
End Sub

Sub SetAssistInfo(db As NotesDatabase, agent As String, info As AssistInfo)
   np$ = Space(1024)
   OSPathNetConstruct 0, db.Server, db.FilePath, np$
   
   Dim hDB As Long
   NSFDbOpen np$, hDB
   If hDB = 0 Then
      Messagebox "Can't open database", 16
      Exit Sub
   End If
   
   pt& = Instr(agent, "|")
   If pt& = 0 Then ti$ = Trim$(agent) Else ti$ = Trim$(Left$(agent, pt& - 1))
   
   Dim nID As Long
   NIFFindDesignNote hDB, ti$, NOTE_CLASS_FILTER, nID
   If nID = 0 Then
      Messagebox "Can't find agent " & ti$, 16
      Exit Sub
   End If
   
   If Instr(db.GetDocumentByID(Hex$(nID)).~$Flags(0), "f") = 0 Then
      Messagebox ti$ & " is not an agent", 16
      Exit Sub
   End If
   
   Dim hNT As Long
   NSFNoteOpen hDB, nID, 0, hNT
   
   Dim iB As BlockID, vB As BlockID
   NSFItemInfo hNT&, "$AssistInfo", 11, iB, dt%, vB, nv&
   If Not vB.hPool = 0 Then
      p& = OSLockObject(vB.hPool) + vB.Block
      Poke p& + 2, info.Version, 2
      Poke p& + 4, info.TriggerType, 2
      Poke p& + 6, info.SearchType, 2
      Poke p& + 8, info.IntervalType, 2
      Poke p& + 10, info.Interval, 2
      If Isdate(info.Time1) Then Poke p& + 12, Clng(Cdbl(info.Time1) * 24 * 60 * 60 * 100), 4 _
      Else Poke p& + 12, Clng(info.Time1), 4
      If Isdate(info.Time2) Then Poke p& + 16, Clng(Cdbl(info.Time2) * 24 * 60 * 60 * 100), 4 _
      Else Poke p& + 16, Clng(info.Time2), 4
      Dim hM As Long
      OSMemAlloc 0, 81, hM
      b& = OSLockObject(hM)
      If Isdate(info.StartTime) Then
         t$ = Cstr(info.StartTime) & Chr$(0)
         PokeString b&, t$, Len(t$)
         ConvertTextToTIMEDATE 0, 0, b&, 81, p& + 20
      Else
         Poke p& + 20, 0&, 4
         Poke p& + 24, 0&, 4
      End If
      If Isdate(info.EndTime) Then
         t$ = Cstr(info.EndTime) & Chr$(0)
         PokeString b&, t$, Len(t$)
         ConvertTextToTIMEDATE 0, 0, b&, 81, p& + 28
      Else
         Poke p& + 28, 0&, 4
         Poke p& + 32, 0&, 4
      End If
      Poke p& + 36, info.Flags, 4
      OSUnlockObject hM
      OSMemFree hM
      OSUnlockObject vB.hPool
   End If
   
   NSFNoteUpdate hNT, 0
   NSFNoteClose hNT
   NSFDbClose hDB
End Sub

Gespeichert
MiMueller
Frischling
*
Offline Offline

Geschlecht: Männlich
Beiträge: 37


das is´ halt Notes...


« Antworten #10 am: 08.07.03 - 14:54:55 »

Hallo eknori,

Danke für das Beispiel. habe es gleich ausprobiert und es funktioniert auch LOKAL super.

Wenn ich das ganze dann auf dem Server aktualisiere habe ich leider immer das Problem, das ich die DB mit NSFDbOpen nicht öffnen kann. ("Can´t Open Database"). Hast du eine Idee woran das liegen könnte.

Der Server ist ein "Windows 2000 Server".

!!! Wie gesagt, ich habe das Problem generell. Das Script funktioniert lokal tadellos. Nur auf dem Server nicht. !!!

Danke, Micha
Gespeichert
eknori
@Notes Preisträger
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 11551


« Antworten #11 am: 08.07.03 - 15:07:11 »

versuche mal bitte statt

OSPathNetConstruct 0, db.Server, db.FilePath, np$

ein

OSPathNetConstruct 0, db.Server, db.FilePath, trim (np$)

irgendwo da liegt der Hund begraben.

Gespeichert
eknori
@Notes Preisträger
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 11551


« Antworten #12 am: 08.07.03 - 15:12:54 »

kann auch am

np$ = ...

hier mal np$ = String$(1024, " ")

probieren. Mit und ohne trim im OSNetPath...
Gespeichert
MiMueller
Frischling
*
Offline Offline

Geschlecht: Männlich
Beiträge: 37


das is´ halt Notes...


« Antworten #13 am: 08.07.03 - 15:33:44 »

Ja, war genau das Problem, es geht nun einen Schritt weiter.

Bei

NIFFindDesignNote hDB, ti$, NOTE_CLASS_FILTER, nID

gibt es genau das selbe Problem. Jetzt kann er die Agents nicht finden. :-(
Gespeichert
eknori
@Notes Preisträger
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 11551


« Antworten #14 am: 08.07.03 - 15:43:05 »

hmm, ist auch nicht mein Code ( hab das mal auf LDD gefunden )

pt& = Instr(agent, "|")
   If pt& = 0 Then ti$ = Trim$(agent) Else ti$ = Trim$(Left$(agent, pt& - 1))


erscheint mir ein wenig komisch; keine Ahnung, warum das gemacht wird, da der Agent doch als string übergeben wird.

also testen wir jetzt einmal ti$ = agent

und lassen den ganzen quatsch von oben einfach weg.
Gespeichert
MiMueller
Frischling
*
Offline Offline

Geschlecht: Männlich
Beiträge: 37


das is´ halt Notes...


« Antworten #15 am: 08.07.03 - 16:00:33 »

Ich habe den Namen des Agent in Script mal "hard" kodiert. Hat auch nichts gebracht.

Ich glaube, die DB wird nicht richtig geöffnet. Gebe ich den Parameter np$ mit Trim an, funktioniert das öffnen der DB auch LOKAL nicht mehr... :-(

Ich habe nun mal versucht die DB mit dem Object-Handle hDB zu schließen.

NSFDBCLOSE nDB

Dabei verabschiedet sich Notes mit dem Hinweis "ungültiges Object-Handle". Also liegt der Fehler warscheinlich doch beim öffnen der DB.

« Letzte Änderung: 08.07.03 - 18:41:26 von MiMueller » Gespeichert
eknori
@Notes Preisträger
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 11551


« Antworten #16 am: 09.07.03 - 07:06:14 »

kannst du mir mal deine db mit dem Code zukommen lassen? dann brauche ich das nicht meinerseits aufzubauen, um das mal zu debuggen.
Gespeichert
MiMueller
Frischling
*
Offline Offline

Geschlecht: Männlich
Beiträge: 37


das is´ halt Notes...


« Antworten #17 am: 09.07.03 - 08:53:39 »

Guten Morgen eknori,

ich habe die DB mal auf das wesentliche reduziert. Es geht um die Einstellungen in einem Profile-Dokument.

"Aktionen / Admin-Tools / Einstellungen" öffnet eine Maske. Dort sollen 3 Agenten konfiguriert werden. Im "QueryClose" der Maske befindet sich das Script zu setzen der Agenten.

Danke im voraus für deine Hilfe...

Gespeichert
eknori
@Notes Preisträger
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 11551


« Antworten #18 am: 09.07.03 - 09:08:36 »

soo, habs mal getestet ( local, w2k server, linux server )
arbeitet fehlerfrei !
Ich muß aber dazu sagen, daß ich das Ganze unter ND6 getestet habe; hab keine 5er mehr.
Möglicherweise kann das aber noch mal jemand mit nen 5er Server und client testen, bitte

Ulrich
Gespeichert
ata
Moderator
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 5092


drenaiondrufflos


WWW
« Antworten #19 am: 09.07.03 - 09:11:23 »

... könnte ich testen, allerdings erst heuet Abend zu Hause...

ata
Gespeichert

Grüßle Toni Smiley
Seiten: [1] 2 Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS
Impressum Atnotes.de - Powered by Syslords Solutions - Datenschutz | Partner: