Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: DaWutz am 06.07.05 - 16:48:45

Titel: Löschen per Agent (Formula)
Beitrag von: DaWutz am 06.07.05 - 16:48:45
Hallo zusammen,

ich hab wohl mal wieder ein Brett vor dem Kopf.

Habe einen Agenten gebaut (scheduled, 1x am Tag) der Dokumente die älter sind als x Tage (bei mir 30) löschen soll.
Zitat
SELECT @All;
@If(DeliveredDate != ""; _dateCheck := DeliveredDate; PostedDate != ""; _dateCheck :=PostedDate; _dateCheck := @Created);

_date := @Date(@Adjust(@Now;0;0;-30;0;0;0));

@If(_dateCheck < _date;@DeleteDocument;@True);

Dieser Agent macht aber nix - garnichts. Weder löschen noch eine Fehlermeldung bringen. Baue ich eine View mit der entsprechenden Selektion, dann zeigt er mir die Dokumente die in Frage kommen aber artig an.

Darf ich eine der Datumsformulas nicht in einem Agenten anwenden, oder was ist das Problem?

EDIT: Der Agent läuft über die gesamte Datenbank - das Select @All schreibt er immer selber rein.
Titel: Re: Löschen per Agent (Formula)
Beitrag von: koehlerbv am 06.07.05 - 17:20:53
Nur, um auf Nummer sicher zu gehen, baue doch mal Deinen Agent wie folgt um (das sollte dann aber auf jeden Fall funktionieren, wenn der Agent auch so eingestellt ist, dass er auf "Alle Dokumente in der Datenbank" läuft).

Code
_dateCheck := @If (DeliveredDate != ""; DeliveredDate; PostedDate != ""; PostedDate; @Created);

_date := @Date (@Adjust (@Now; 0; 0; -30; 0; 0; 0));

@If (_dateCheck < _date; @DeleteDocument; "");

SELECT @ALL

HTH,
Bernhard
Titel: Re: Löschen per Agent (Formula)
Beitrag von: DaWutz am 06.07.05 - 17:28:18
Hallo Bernhard,

ich habe den Agent umgebaut, auch wenn es ja nur eine Umstellung meiner Syntax war, aber der Erfolg war gleich Null. Ich habe auchmal folgenden Thread zu Hilfe gezogen <<LINK>> (http://www.atnotes.de/index.php?topic=21299.msg134522#msg134522) aber auch damit komme ich nicht weiter.

Der Agent läuft "on behalf of: LocalDomainAdmin" (Verzweiflungstat), und mit vollen administrativen Rechten.
Titel: Re: Löschen per Agent (Formula)
Beitrag von: Semeaphoros am 06.07.05 - 17:32:29
Also, wenn Du schon zur Verzweiflungstat greifst, dann signiere das Tierchen doch lieber mit der Server-ID. Das Verhalten könnte schon auf ein Rechteproblem hinweisen. Ich habs selber noch nicht probiert, kann mir aber vorstellen, dass OnBehalf nicht mit einem Gruppennamen funktioniert.
Titel: Re: Löschen per Agent (Formula)
Beitrag von: koehlerbv am 06.07.05 - 17:38:28
Es muss ein Einstellungs- oder Rechteagent sein. Ich habe den Code eben gegen meine Mail-DB laufen lassen:

Zitat
Agent 'Test Delete' wurde am 06.07.2005 17:35:59 gestartet
Bearbeitet alle Dokumente in der Datenbank: insgesamt 2612
2612 Dokumente gefunden, die die Suchkriterien erfüllen
2612 Dokument(e) wurden durch die Formel geändert
2552 Dokument(e) gelöscht
Agent 'Test Delete' wurde am 06.07.2005 17:36:46 beendet

Guuuut, dass ich das in einer Kopie der DB gemacht habe  ;D

Nur zur Sicherheit: Der Agent ist auch als gemeinsamer Agent deklariert ?

Bernhard
Titel: Re: Löschen per Agent (Formula)
Beitrag von: Semeaphoros am 06.07.05 - 17:41:30
Rechteagent

Dein Verschreiber steht bestimmt für Rechteproblem ..... oder?
Titel: Re: Löschen per Agent (Formula)
Beitrag von: DaWutz am 06.07.05 - 17:49:12
@Bernhard: gemeinsamer Agent? Ist das die deutsche Version von "Shared"? Wenn ja, dann ja!  ;)

@Jens: Signieren tut ihm auch nix...

Ich versteh nicht warum der nicht läuft? Das ist doch eigentlich kein aussergewöhnlicher Agent, oder?
Titel: Re: Löschen per Agent (Formula)
Beitrag von: Glombi am 06.07.05 - 17:56:06
Was sagt denn das Agent Log dazu?
Was steht in der log.nsf dazu?
Hat der Signer denn Löschrechte in der DB?

Andreas
Titel: Re: Löschen per Agent (Formula)
Beitrag von: DaWutz am 06.07.05 - 18:01:15
Agent Log:
Started running agent 'deleteMailsOlderThan30Days' on 06.07.2005 17:53:47
Running on all documents in database: 463 total
Found 463 document(s) that match search criteria
463 document(s) were modified by formula
Done running agent 'deleteMailsOlderThan30Days' on 06.07.2005 17:54:14

Es ist aber kein Doc rausgeflogen...

Der Signer ist der Server himself, und der ist in der ACL nochmal explizit eingetragen mit vollen Rechten. Und die log.nsf schweigt sich über den Agenten aus...

EDIT: Ich seh grade er findet alle Dokumente in der Bedingung, aber er sollte nur 4 finden... Werde mal in die Richtung weiter forschen!
Titel: Re: Löschen per Agent (Formula)
Beitrag von: Glombi am 06.07.05 - 18:05:04
Versuche mal, anstelle von
  @DeleteDocument 
ein
  @HardDeleteDocument 
zu verwenden.

Andreas
Titel: Re: Löschen per Agent (Formula)
Beitrag von: Glombi am 06.07.05 - 18:06:01
Zitat
EDIT: Ich seh grade er findet alle Dokumente in der Bedingung, aber er sollte nur 4 finden... Werde mal in die Richtung weiter forschen!
Natürlich findet er alle, da SELECT @All verwendet wird.

Es geht besser so:
_dateCheck := @If (DeliveredDate != ""; DeliveredDate; PostedDate != ""; PostedDate; @Created);
_date := @Date (@Adjust (@Now; 0; 0; -30; 0; 0; 0));
SELECT _dateCheck < _date

Andreas
Titel: Re: Löschen per Agent (Formula)
Beitrag von: DaWutz am 06.07.05 - 18:16:59
Ok - nu klappts.

Nach dem @HardDeleteDocument gings... In der DB ist aber kein SoftDeletion aktiviert, was macht denn da den Unterschied? Laut Designer-Hilfe verhält er sich ja dann wie ein normales @DeleteDocument.

Hier der "garstige" Agent:
Zitat
_dateCheck := @If (DeliveredDate != ""; DeliveredDate; PostedDate != ""; PostedDate; @Created);
_date := @Date (@Adjust (@Now; 0; 0; -30; 0; 0; 0));
SELECT _dateCheck < _date;
@HardDeleteDocument


Vielen Dank an alle beteiligten!!  :D Prompte Hilfe, wie immer!  :-*