Autor Thema: Aktualisierung von berechneten Feldern über einen Agenten  (Gelesen 2088 mal)

Offline Micha

  • Aktives Mitglied
  • ***
  • Beiträge: 106
  • Geschlecht: Männlich
  • Not(es) macht erfinderisch
Nach meiner ersten Antwort, nun meine erste Frage.
Ich haber schon seit einiger Zeit Probleme Felder per Agenten aktualisieren zu lassen.
Ich will sie nur im Backend aktualisiert haben.

z.B. Habe ich in einem Antwort Dokument ein Status Feld das den Status aus einem Übergeordneten Dokument erbt:
@If(@IsNewDoc;"0";@GetDocField($REF;"Status"))
Dieses Feld würde ich nun gern aktuell halten, wegen mir auch mit einem periodischen Agenten.

computeWithForm ist nicht so klasse denn das dauert ewig.
Gibt es eine schnellere Methode um nur dieses eine Feld zu aktualisieren?
5.0.5 Designer und Client
Win NT 4.0

Offline Performance

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.096
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re:Aktualisierung von berechneten Feldern über einen Agenten
« Antwort #1 am: 18.07.03 - 11:33:20 »
ja wenn es nur ein Feld sein soll dann ist das mit dem Agenten ok ... einfach im Agent die doks durchlaufen und nur dein Feld updaten.

cu
Wir können alles außer hochdeutsch !

Alles ist möglich, es ist nur eine Frage der Zeit oder des Geldes!

Offline MrMagoo

  • Senior Mitglied
  • ****
  • Beiträge: 359
  • Geschlecht: Männlich
  • AAAhhh
Re:Aktualisierung von berechneten Feldern über einen Agenten
« Antwort #2 am: 18.07.03 - 11:35:13 »
Ich hatte ein ganz ähnliches Problem und lasse Compute with Form immer nachts laufen. Ansonsten gibt es im FrontEnd noch die Möglichkeit : @Command([ToolsRefreshAllDocs])
oder du schränkst compute with Form ein z.B anstatt

Set collection = db.AllDocuments
Set collection = db.unprocessedDocuments

Gruß

Offline Markus Henke

  • Aktives Mitglied
  • ***
  • Beiträge: 143
  • Geschlecht: Männlich
Re:Aktualisierung von berechneten Feldern über einen Agenten
« Antwort #3 am: 18.07.03 - 11:37:11 »
Hallo,

eine andere Möglichkeit wäre, dass Du beim ändern des Hauptdokumentes auch das andere Dokument änderst. Das müsstest Du dann aber glaube ich in Script machen. Zumindest brauchst Du dann so keinen periodischen Agenten und bist noch aktueller als ein Agent, der mehrmals am Tag läuft.

Gruß
Markus

Offline Micha

  • Aktives Mitglied
  • ***
  • Beiträge: 106
  • Geschlecht: Männlich
  • Not(es) macht erfinderisch
Re:Aktualisierung von berechneten Feldern über einen Agenten
« Antwort #4 am: 18.07.03 - 11:50:24 »
Vielen Dank für die schnellen Antworten,

auch Nachts sind die Server sehr belastet und deshalb sollte der Agent so wenig Last machen wie möglich.

Das mit dem sofort Aktualisieren hatte ich auch schon, verlängert aber den Speicherungsprozess beträchtlich, denn man muss bei jedem Speichern des hauptdokumentes alle Antworten durchsuchen und eintragen.

die Idee mit dem einem Feld updaten ist klasse, aber wie funktioniert das, denn ich will ja den berechneten Code ausführenß
einfach das Feld auf ein item legen oder den Inhalt kopieren?


NotesItem.update gibts ja nich  ???
« Letzte Änderung: 18.07.03 - 11:52:59 von Micha »
5.0.5 Designer und Client
Win NT 4.0

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Aktualisierung von berechneten Feldern über einen Agenten
« Antwort #5 am: 18.07.03 - 12:14:31 »
Um einem Feld (item) einen neuen Wert zu verpassen, einfach folgende Zuweisung treffen:
NotesDocument.Feld = Wert

Um den Code so kompakt wie möglich zu halten, würde ich folgendes machen:
- Eine Ansicht aller Hauptdokumente erstellen (ich weiß nicht, wie Du die unterscheiden kannst - Formname ? Notfalls darf een kein $Ref enthalten sein)
- Durch die Ansicht loopen
- zu jedem Dokument mit NotesDocument.Responses eine NotesDocumentCollection bilden
- Wenn deren count > 0, dann für jedes doc der collection prüfen, ob der Status dem Hauptdokument entspricht (docMain.Status (0) = docResponse.Status (0) , falls nicht:
  docResponse.Status = docMain.Status (0)
- und speichern.

Das ist in ein paar Zeilen geschrieben.
Das selbe Verfahren - eben immer nur für ein Hauptdokument - kannst Du aber auch beim Speichern ausführen - das sollte eigentlich keine grossen Laufzeitprobleme erzeugen (es sei denn, Ihr habt 25000 Hauptdokumente und jeweils 200 Responses dazu).
HTH,
Bernhard

Offline Micha

  • Aktives Mitglied
  • ***
  • Beiträge: 106
  • Geschlecht: Männlich
  • Not(es) macht erfinderisch
Re:Aktualisierung von berechneten Feldern über einen Agenten
« Antwort #6 am: 18.07.03 - 12:56:42 »
Die Variante hört sich gut an, dann kann ich das berechnete Feld weglassen und brauche auch den $Ref eintrag nicht mehr.
Fraglich ist nur wie schnell das ganze ist.
Die Datenbank wird so von 10-30 MA's benutzt und pro Monat kommen so 100-400 Dokumente dazu, kann also schnell sehr groß werden, die pilotapp. hat so 860 MB.

Besten Dankerstmal, wenns geht setze ich den Punkt auf Erledigt
« Letzte Änderung: 18.07.03 - 15:38:47 von Micha »
5.0.5 Designer und Client
Win NT 4.0

Offline Micha

  • Aktives Mitglied
  • ***
  • Beiträge: 106
  • Geschlecht: Männlich
  • Not(es) macht erfinderisch
Re:Aktualisierung von berechneten Feldern über einen Agenten
« Antwort #7 am: 24.07.03 - 12:07:21 »
So ich konnt ein paar Tage nich weiterarbeiten, aber nun gehts, hat insgesamt 60 min gedauert, so mag ich Programmierung  ;D
Nur die Zeile
docResponse.Status = docMain.Status (0) ging nich.
Die hintere 0 musste weg dann war alles OK.
Ich bin aber immernoch nicht so ganz hinter die "Extended class" syntax gestiegen.  ;)
5.0.5 Designer und Client
Win NT 4.0

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz