Autor Thema: Feldwert in Child-Dokumenten ändern ohne Autorrechte  (Gelesen 2561 mal)

Driri

  • Gast
Hallo,

ich bastele gerade an einer Datenbank für unseren Bereich, über die Anträge der Fachbereiche für Arbeiten unserer Abteilung verwaltet werden sollen.
Dabei habe ich jeweils ein Hauptdokument (Antrag) und mehrere zugehörige Antwortdokumente, über die verschiedene Formulare abgebildet werden (z.B. Abnahmeprotokoll).

Das Problem tritt auf, wenn durch eine Aktion eines Anwenders der Workflow ausgelöst wird. Bei einer Änderung im Status müssen das Hauptdokument sowie alle zugehörigen Antworten upgedatet werden. Da nicht jeder Anwender Autorrechte auf alle Dokumente hat, können nicht alle Dokumente upgedatet werden.

Ich bin ein bißchen unentschlossen, wie ich das am besten umsetze. Überlegt habe ich mir jetzt folgende Möglichkeiten :

a) Workflow-Dokument zu jedem Vorgang, in dem z.B. der Status mitgeführt wird

b) Autorenrechte auf alle Dokumente erteilen, Änderungen vornehmen, Rechte wieder entziehen


Problem bei a) ist, daß die Workflow-Dokumente dann für jeden Anwender im Zugriff sein müssen. Das macht Manipulationen einfacher. Zusätzlich muß dann in jedem Dokument immer der Status aus dem WF-Dokument abgefragt werden.

Bei b) bin ich mir nicht sicher, ob das überhaupt so einfach geht. Ich habe eine DocumentCollection aller betroffenen Dokumente. Hier würde ich dann ein temporäres Autorenfeld schießen, die Stafusfelder ändern und das temporäre Autorenfeld wieder entfernen/leeren.
Ich vermute allerdings, daß ein einfaches StampAll hierfür nicht ausreicht, da ja dem Item dann die Properties fehlen, oder ?


Oder überseh ich mal wieder die einfachste Lösung ? Habt ihr eine Empfehlung für mich ?
« Letzte Änderung: 13.07.06 - 09:02:09 von Driri »

botschi

  • Gast
Re: Feldwert in Child-Dokumenten ändern ohne Autorrechte
« Antwort #1 am: 10.07.06 - 16:24:46 »
Vielleicht einen Agenten mit der Server-ID unterzeichnet, der im Queryclose aufgerufen wird und das erledigt?

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Feldwert in Child-Dokumenten ändern ohne Autorrechte
« Antwort #2 am: 10.07.06 - 16:26:14 »
Mach doch einen periodischen oder - IMHO geschickter - Agent, der auf neue und geänderte Docs läuft. Ist in Deiner Collection ein Hauptdokument, prüfst auf erforderliche Massnahmen und machst ggf. ein Update der ChildDocs. Da der Agent mit Serverrechten läuft, hast Du kein Problem mehr mit den Rechten des auslösenden Anwenders.
By the way: Mit unzureichenden Rechten kannst Du Autorenfelder niemals aushebeln.

Bernhard

Driri

  • Gast
Re: Feldwert in Child-Dokumenten ändern ohne Autorrechte
« Antwort #3 am: 10.07.06 - 16:33:24 »
Müßte ich dann über UnprocessedDocuments die Dokumente holen, die der Agent verarbeiten soll ?


Mit Manipulation meinte ich nicht, daß die User die Autorenfelder umgehen können, sondern daß der Workflowstatus in dem Szenario dann jederzeit von jedem User geändert werden könnte.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Feldwert in Child-Dokumenten ändern ohne Autorrechte
« Antwort #4 am: 10.07.06 - 16:35:31 »
Wenn Du de nTyp "Neue/geänderte Docs" meinst: Ja, die bekommst Du auch über Unprocessed documents. Und nicht vergessen, die "danach" auf processed zu setzen  ;)

Bernhard

Driri

  • Gast
Re: Feldwert in Child-Dokumenten ändern ohne Autorrechte
« Antwort #5 am: 10.07.06 - 16:39:33 »
Danke für die Tipps, dann werde ich das mal ausprobieren  :)

botschi

  • Gast
Re: Feldwert in Child-Dokumenten ändern ohne Autorrechte
« Antwort #6 am: 11.07.06 - 09:46:42 »
Kann ich dazu nochmal eben was fragen:

Wenn Du de nTyp "Neue/geänderte Docs" meinst: Ja, die bekommst Du auch über Unprocessed documents. Und nicht vergessen, die "danach" auf processed zu setzen  ;)

Wenn ich alle markierten Dokumente bekommen möchte, nutze ich immer "Set notesDocumentCollection  = notesDatabase.UnprocessedDocuments".

Wenn man einen Agenten über neue und geänderte Doks laufen lässt, muss man die geänderten Doks nochmal als processed markieren. Aber nur dann oder? Bei dem oberen Beispiel ist dies nicht nötig?

Danke, Gruss Matthias

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Feldwert in Child-Dokumenten ändern ohne Autorrechte
« Antwort #7 am: 11.07.06 - 11:27:48 »
Das ist richtig, Matthias.

Bernhard

Driri

  • Gast
Re: Feldwert in Child-Dokumenten ändern ohne Autorrechte
« Antwort #8 am: 12.07.06 - 11:45:15 »
Ich habe jetzt einiges ausprobiert (scheduled Agent, Agent auf Neue/geänderte Dokumente, etc.), aber so richtig zufrieden bin ich mit der Lösung nicht, weil ich so keinen Einfluß darauf habe, welche Dokumente verarbeitet werden.

Ich habe das jetzt so gelöst, daß ich einen Agent auf "Periodisch/Nie" gestellt habe, der mit Server-ID läuft und der die Änderungen auf die Childs überträgt.

Diesen Agent rufe ich auf und übergebe die NoteID des aktuellen Dokumentes :

Set wfagent = db.GetAgent("UpdateWF")
Call wfagent.Run(docWF.NoteID)

Im Agent selber kann ich dann über den so übergebenen Parameter auf das auslösende Dokument zugreifen :

Set docWF = db.GetDocumentByID(wfagent.ParameterDocID)

So kann ich sicherstellen, daß der Agent wirklich nur auf das aufrufende Dokument läuft und nicht auf alle evtl. als Unprocessed markierten Dokumente.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz