Autor Thema: Autorenfeld  (Gelesen 3509 mal)

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
Autorenfeld
« am: 14.10.08 - 08:44:56 »
Moin,moin,

es ist soweit. Ich muss mich zum ersten Mal mit Autorenfeldern auseinandersetzen. Folgende Situation:

Ich soll eine Reservierungsdatenbank für Firmenfahrzeuge machen. Hier ist es erforderlich mit Autorenfeldern zu arbeiten, weil die User zwar die Reservierungen der anderen sehen, aber diese weder ändern noch löschen dürfen. Wenn zwei Reservierungen für denselben Zeitraum aufeinander treffen, ist es allerdings so, dass die Reservierung mit der größten Entfernung (in km) "gewinnt".

Ich hatte vor, die ganzen Reservierungsfunktionen in eine Scriptbibliothek zu stecken. Wie verhält sich das jetzt, was das Löschen der Reservierung mit der niedrigeren Entfernung über die Scriptbibliothek betrifft? Die Person, die mit Ihrer Reservierung "gewinnt" ist ja natürlich nicht im Autorenfeld der anderen Reservierung eingetragen. Wird hier die ID des User gezogen, oder wie bei Agenten, die ID der Person, die die Scriptbibliothek signiert hat?

Wenn die ID des User gezogen wird, habe ich aufgrund des Autorenfelds ja das Problem, dass die Doks nicht gelöscht werden können. Dann müsste ich das ganze doch über nen Agenten machen.

Wen sollte man generell alles in ein Autorenfeld eintragen? Server, Admins, Designer und User?


Gruß
Demian

Gruß
Demian

Offline DerAndre

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.655
  • Geschlecht: Männlich
  • Keep cool!
Re: Autorenfeld
« Antwort #1 am: 14.10.08 - 08:50:02 »
Wie sieht Deine ACL aus?
Die redet da noch ein Wörtchen mit, Autorenfelder verfeinern nur die ACL, das gilt aber nur für Benutzer die Autorenrechte durch die ACL haben. Alles was höher liegt ist das Autorenfeld Wurstegal.
Schau in der Hilfe mal nach Autorenfeld.
André

Elterninitiative diabetischer Kinder und Jugendlicher e.V.
-----------------------------------------------------------------------------
Fliegen ist die Kunst auf den Boden zu Fallen, aber daneben.
-----------------------------------------------------------------------------
Etwas mehr Hardware dazu zu kaufen ist viel billiger als
Software besser zu machen. ( Niklaus Wirth )

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Autorenfeld
« Antwort #2 am: 14.10.08 - 08:56:01 »
Die Signatur der ScriptLib (oder jeglichen anderen Codes) spielt keine Rolle, wenn der Code über den Client ausgeführt wird - der ausführende User braucht dann die erforderlichen Rechte.
Du wirst also nicht umhin kommen, die Löschung durch einen serverbasierenden Agent durchzuführen.

Wer sollte ins Autorenfeld: In Deinem Fall die User, die Rechte haben sollen. Server und Admins brauchen nur lt. ACL Editor oder höher zu sein, dann greifen Autorenfelder eh nicht mehr.
Ggf. musst Du noch eine Rolle aufnehmen wie "Fuhrpark" o.ä., die auf alle derartigen Reservierungen Zugriff haben sollen, aber ansonsten nicht in der DB frei herumwirtschaften können.

HTH,
Bernhard

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
Re: Autorenfeld
« Antwort #3 am: 14.10.08 - 09:15:56 »
Moin,moin,

@André: Die User haben Autorenrechte. Das mit den höheren Rechten habe ich gestern beim "allgemeinen" Testen auch festsgestellt, nur heute morgen nicht mehr dran gedacht  ::)

@Bernhard: Das hatte ich befürchtet mit dem Agenten, aber wenns nicht anders geht, muss ichs wohl so machen. Das mit der Rolle hatte ich auch schon überlegt, wollte ich aber noch abklären.

Vielen Dank euch beiden.


Gruß
Demian
Gruß
Demian

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
Re: Autorenfeld
« Antwort #4 am: 22.10.08 - 12:59:28 »
Moin,moin,

ich muss das Thema leider nochmal hochholen.

"serverbasierenden Agent" - langt es nicht aus, wenn man im Agent nur bei "Ausführen im Namen von" den Server hinterlegt? Muss der Agent richtig signiert werden? Jedenfalls bekomme ich mit meiner Einstellung die Meldung "Sie können keine docs.... für die sie nicht die erforderlichen Autorenrecht haben."

Der Agent wird mit .runonserver aufgerufen. ICh habe bei Ausführen im Namen von den Server hinterlegt und die Laufzeitsicherheit auf 3.

Die ID mit der der Agent signiert ist, ist in einer Gruppe, die im Serverdoc bei den Optionen für Einschränkungen der Programmierbarkeit überall hinterlegt ist.

Gruß
Demian


EDIT: Die Datenbank liegt noch lokal, aber die konsistente ACL ist aktiviert.
« Letzte Änderung: 22.10.08 - 13:07:06 von Demian »
Gruß
Demian

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
Re: Autorenfeld
« Antwort #5 am: 22.10.08 - 17:49:02 »
Ok, hab die DB jetzt mal auf dem Server gelegt und da gehts. War immer der Meinung konsistente ACL gaukelt der DB vor, sie wäre auf dem Server?

Gruß
Demian

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
Re: Autorenfeld
« Antwort #6 am: 20.11.08 - 18:37:23 »
Moin,moin,

und ein weiteres Mal muss ich das Thema anschneiden. Soweit funktioniert das mit dem Löschen ja wunderbar. Das Problem bei dem serverbasierten Agenten ist, dass s.commonusername natürlich den Namen des Servers zurückgibt.

Schön wäre, wenn ich in der E-Mail auch angeben kann von wem die Reservierung gelöscht wurde.

Hat jemand einen Ansatzpunkt wie ich an den Usernamen komme?


Gruß
Demian
Gruß
Demian

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Autorenfeld
« Antwort #7 am: 20.11.08 - 21:40:48 »
Wenn der Agent zum Löschen aufgerufen wird, dann musst Du ihm doch jetzt schon übergeben, was er löschen soll (oder machst Du das nicht, wenn der ausführende Client feststellt, dass er der "Gewinner" ist?). Dann kannst Du doch auch die anderen Angaben übergeben ...

Beschreibe Dein jetziges Szenario mal genauer, damit man gezielter antworten kann.

So long,
Bernhard


Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
Re: Autorenfeld
« Antwort #8 am: 21.11.08 - 09:00:46 »
Moin,moin,

also, die Maske für die Reservierungen enthält ein Autorenfeld, in dem der Username, sowie eine Rolle für das Sekretariat stehen.

Zum Ablauf: Benutzer A erstellt eine Reservierung. Benutzer B kann den Firmenwagen für den selben Zeitraum nur reservieren, wenn die angegeben Kilometer höher wie die der bereits bestehenden Reservierung sind.

Da Benutzer B aufgrund des Autorenfelds die Reservierung von Benutzer A weder bearbeiten noch löschen kann, habe ich die Löschung über den Server-Agenten gelöst. Der Agent wird mit .runonserver(doc.NoteID) aufgerufen. Doc.NoteID ist die zu löschende Reservierung.

Ich kann den Benutzernamen zu dem Zeitpunkt vor Aufruf des Agenten ja wegen dem Autorenfeld leider nicht in die zu löschende Reservierung schreiben. Sonst hätte ich da halt einfach ein Flag "DeletedFrom" gesetzt.

Dann hatte ich überlegt, das mit Profildokumenten zu machen. Da stellt sich mir aber die Frage, wie ich das im Agenten dann holen, bzw. eindeutig identifizieren kann. Das Kennzeichen als Profilnamen zu nehmen, klappt ja nur solange, wie nicht mehrere User gleichzeitig Reservierungen für den selben Firmenwagen (zu unterschiedlichen Zeiträumen) reservieren.

Ja, und mehr Ideen hatte ich noch nicht.

Gruß
Demian
Gruß
Demian

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Autorenfeld
« Antwort #9 am: 21.11.08 - 10:08:47 »
Nimm am besten ein persönliches ProfileDoc. Schreibe dort den löschenden User rein (oder lese es aus dem entspr. ProfileDoc-Item aus) und das zu löschende Dokument und sonst alles, was den Agent glücklich macht. Übergib dem Agent dann die NoteID vom ProfileDoc.

HTH,
Bernhard

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
Re: Autorenfeld
« Antwort #10 am: 21.11.08 - 11:23:36 »
Stimmt, sorum gehts ja auch.  :D

Werde ich die Tage dann mal umsetzen, auch wenn mir schon davor graut.

Vielen Dank für den Tipp.

Gruß
Demian
Gruß
Demian

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz