Autor Thema: Agent für Archivierung  (Gelesen 2140 mal)

Offline sja

  • Senior Mitglied
  • ****
  • Beiträge: 328
  • Geschlecht: Weiblich
  • Ich liebe dieses Forum!
Agent für Archivierung
« am: 03.12.03 - 18:08:16 »
Hallo.
Agenten habe ich noch nie programmiert und werde für jede Hilfe sehr dankbar.
Folgender Agent muss ich erstellen:
- eine Datenbank enthält Hauptdokumente mit Anhängen
- ein Hauptdokument enthält ein Feld "ArchivDatum"
- ein periodischer Agent muss alle Hauptdokumente mit dazu gehörigen Anhängen in eine Archiv-Datenbank kopieren und in aus der Datenbank löschen, wenn ArchivDatum=@Today ist.
Wäre interessant wie Formula Language, als auch LotusScript.

Ich habe domino 6.0.2.

Vielen Dank im Voraus

sjn
« Letzte Änderung: 03.12.03 - 18:14:44 von sja »

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Agent für Archivierung
« Antwort #1 am: 03.12.03 - 22:03:50 »
Ebenfalls hallo !

Wenn Du solch eine Aufgabe erfüllen willst, wirst Du mit Notes-Bordmitteln nichts erreichen, und Formelsprache nützt Dir auch nichts - dafür sind @functions nicht gemacht. Mit LS geht es (okay, entgegen vielen oberflächlichen Aussagen kann man damit ja notfalls auch Kaffee kochen ;-)

Wir haben daher eine Applikation entwickelt, die genau so etwas erledigt wie Du willst, und das Setup (was soll wann archiviert werden) pro zu archivierender DB kannst Du wiederum per @functions erledigen (und / oder Dir von uns dabei helfen lassen). Die ganze Applikation liegt in der 1.000 Euro-Klasse ;-)

Bernhard

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re:Agent für Archivierung
« Antwort #2 am: 03.12.03 - 22:10:51 »
Hi,

Zitat
Agenten habe ich noch nie programmiert und werde für jede Hilfe sehr dankbar.
Ich denke Bernhard's Tipp war in diesem Fall genau richtig, wenn Du schnell eine Lösung brauchst (also externen DL einschalten und/oder DB kaufen).

Wenn Du das selbst machen willst:
- Bücher lesen
- Schulung(en) besuchen
- mit einfachen Dingen anfangen (Masken, Views, etwas Formelsprache)
- einfache Scripts schreiben
etc.

Man könnte jetzt zwar ein LotusScript hier posten, aber ich denke das würde ganz einfach überfordern, schließlich wäre das niemals nicht per "Copy & Paste" übernehmbar.

Viel Erfolg,
TMC
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline sja

  • Senior Mitglied
  • ****
  • Beiträge: 328
  • Geschlecht: Weiblich
  • Ich liebe dieses Forum!
Re:Agent für Archivierung
« Antwort #3 am: 04.12.03 - 15:08:58 »
Lieber Bernhard, TMC,

vielen Dank für eure reiche Hilfe.
Jetzt weiss ich, dass mit Formelsprache soll ich keine Zeit verschwinden und fange an mit LotusScript.
Leider habe ich für den Agent keine 1.000 EURO und glaube nicht, dass es Wert ist. Was betrifft Schulungen, die habe ich schon gemacht, und habe schon etwas Erfahrung in Formelsprache und LotusScript, die Gestaltungselemente kann ich auch nicht schlecht. Ich habe nur periodische Agenten noch nie gemacht. Die Bücher habe ich auch, leider nicht für v. 6, aber ich kaufe welche und versuche selbst das zu erledigen. Ich denke es wird billiger als 1000 EURO.
Noch mal vielen Dank für Hilfe.

Mit freundlichem Gruss
sja
« Letzte Änderung: 04.12.03 - 15:11:12 von sja »

Offline HarryB

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 521
  • Geschlecht: Männlich
Re:Agent für Archivierung
« Antwort #4 am: 04.12.03 - 16:58:16 »
Vielleicht so viel als Hinweis:

Ich würde eine Ansicht bauen, welche die Dokumente nach dem folgenden Kriterium selektiert: "SELECT ArchivDatum = @Today"; dabei solltest Du darauf achten, daß diese beiden Informationen kompatibel sind; soll heißen "ArchivDatum" sollte vom Datentyp Datum sein, ansonsten mußt Du "@Date(ArchivDatum)" verwenden.

Der Agent hätte dann folgende Grobstruktur:

---

Dim ses As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim achivDoc As NotesDocument
Dim helpDoc as NotesDocument

Set db = ses.CurrentDatabase
Set view = db.GetView("heuteArchivieren")

Set archivDoc = view.GetFirstDocument

While Not (archivDoc is Nothing)

<Schritte, welche zur Archivierung notwendig sind>

Set helpDoc = archivDoc
Set archivDoc = view.GetNextDocument(archivDoc)
Call helpDoc.Remove

Wend

---

Viele Grüße
Harry
Harald "HarryB" Börger

2 x 7.0.2FP1 auf AIX (Cluster)
1 x 7.0.2FP2 auf AIX
1 x 6.5.5 auf AIX
4 x 7.02.FP2 auf WIN

Clients: 7.0.2

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Agent für Archivierung
« Antwort #5 am: 04.12.03 - 17:26:47 »
Da steckt aber eine ganz, ganz grosse böse Falle drin: Wenn der Agent mal aus einem einen Grunde nicht läuft, dann bleiben eigentlich zu archivierende Dokumente in der Datenbank drin.
Die Selektionsformel müsste also heissen:
SELECT ArchivDatum >= @Today

HTH,
Bernhard

Offline sja

  • Senior Mitglied
  • ****
  • Beiträge: 328
  • Geschlecht: Weiblich
  • Ich liebe dieses Forum!
Re:Agent für Archivierung
« Antwort #6 am: 04.12.03 - 19:50:15 »
Hallo Harry, Bernhard,

herzlichen Dank für eure Hilfe.
Die Ansicht hatte ich schon mit folgender Auswahlformel

SELECT (ProjektAktiv = "inaktiv")&(DatumArchiv <= @Today)|@AllChildren

In dieser Ansicht sind alle Hauptdokumente mit den Antwortdokumenten bis zum aktuellen Datum und die alle mussen archiviert werden.

DatumArchiv >= @Today wäre falsch.

Ich versuche jetzt der Agent zu codieren und zu testen und schreibe dann meine Code und Testergebnisse.

Ich hatte einfach Probleme mit User Interface für LS Agent: wuste nicht wie soll man zu den defaulten Abschnitten (Options. Declarations, Initialize und Terminat) weitere Abschnitte (Funktionen und Prozeduren) hinzufügen. Jetzt weiss ich es. Vielleicht für jemanden wird die Information auch hilfreich:
man fügt in einen freien Beriech eines bereits bestehenden Abschnitts einfach einen neuen Funktionskopf od. Prozedurkopf ein und drückt die Enter-Taste. Meiner Meinung nach, man kann nicht intuitiv dazu kommen.

Grüsse
Sofia


 
« Letzte Änderung: 04.12.03 - 19:52:56 von sja »

Offline sja

  • Senior Mitglied
  • ****
  • Beiträge: 328
  • Geschlecht: Weiblich
  • Ich liebe dieses Forum!
Re:Agent für Archivierung
« Antwort #7 am: 05.12.03 - 16:20:28 »
also meinen Versuch sieht so aus (ich habe nur copy in Archiv Datenbank ausprobiert, deliete noch nicht ):

Abschnitt (Declarations)

Dim VEC As NotesViewEntryCollection   
Dim ve As NotesViewEntry
Dim view As NotesView
Dim db As NotesDatabase
Dim db2 As NotesDatabase
Dim doc As NotesDocument

Abschnitt Initialize

Sub Initialize
   
   Dim s As New NotesSession
   
   Set db = s.CurrentDatabase
   Set view =db.getview("archiv")
   Set VEC = view.AllEntries
   Set ve = VEC.GetFirstEntry()
   
   Set db2 = New NotesDatabase( "", "ARCHIV.nsf" )
   
   While Not (ve Is Nothing)
      Set doc = ve.Document
      Call doc.CopyToDatabase(db2)
                          'Call VEC.DeleteEntry(ve)
                          'Set ve = VEC.GetFirstEntry()
      Set ve = VEC.getNextEntry(ve)
   Wend
   
End Sub

Ergebnisse:
der Agent wurde ausgeführt, die Hauptdokumente und entsprechende Antwortdokumente wurden in der Archiv-Datenbank kopiert

Doch funktioniert das richtig. Jetzt probiere ich mit delete.

Sofia
« Letzte Änderung: 05.12.03 - 17:30:14 von sja »

Offline sja

  • Senior Mitglied
  • ****
  • Beiträge: 328
  • Geschlecht: Weiblich
  • Ich liebe dieses Forum!
Re:Agent für Archivierung
« Antwort #8 am: 07.12.03 - 18:07:02 »
also meinen Agent sieht so aus:

Dim VEC As NotesViewEntryCollection   
Dim ve As NotesViewEntry
Dim view As NotesView
Dim db As NotesDatabase
Dim db2 As NotesDatabase
Dim doc As NotesDocument

Sub Initialize   
   Dim s As New NotesSession
   
   Set db = s.CurrentDatabase
   Set view =db.getview("archiv")
   Set VEC = view.AllEntries
   Set ve = VEC.GetFirstEntry()
   
   Set db2 = New NotesDatabase( "", "archiv.nsf" )
   
   While Not (ve Is Nothing)
      Set doc = ve.Document
      Call doc.CopyToDatabase(db2)
      doc.Remove(True)
      Set ve = VEC.getNextEntry(ve)
   Wend   
End Sub

Ich habe ihn getestet und er funktioniert. Die Hauptdokumente mit den entsprechenden Antwortdokumenten mit dem Datum vor und gleich ToDay wurden in die Archiv-Datenbank kopiert und aus der Projekt-Datenbank gelöscht. Jetzt verstehe ich nicht, warum soll solchen Agent 1.000 EURO kosten. Oder das, was ich gemacht habe, ist falsch und man kann das nicht verwenden?
Also, wenn es richtig ist und für jemand kann das auch zur Hilfe sein, werde ich mich freuen.
Wenn es falsch ist, werde ich sehr dankbar, wenn man mich korrigiert (da ich nur Frischling bin).

Vielen Dank für Hilfe
Sofia
« Letzte Änderung: 08.12.03 - 11:49:07 von sja »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz