Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: DAU-in am 08.08.12 - 22:06:56

Titel: SUMMARY READ/WRITE-ACCESS NAMES PROTECTED
Beitrag von: DAU-in am 08.08.12 - 22:06:56
Ich habe einen Agenten, der auf ein Adressbuch einer anderen Orga zugreift, und Werte ausliest.
Es werden Änderungen in die eigene DB eingetragen.
Der Agent läuft im Prinzip, aber in der Praxis. Bei einem bestimmten Item legt er sich manchmal auf die Nase. Bei diesen Dokumenten steht steht in den Eigenschaften des Items:
SUMMARY READ/WRITE-ACCESS NAMES PROTECTED
.
Das bedeutet doch eigentlich, daß man zur Bearbeitung dieses Feldes mindestens Editorzugriff braucht.
Ich lese jedoch nur aus.
Woran kann es liegen, daß es den Agenten an der Stelle zerlegt?   :-:

Alle anderen Items werden problemlos ausgelesen.

Version ist 8.5.x (muss ich noch einmal nachsehen)

Titel: Re: SUMMARY READ/WRITE-ACCESS NAMES PROTECTED
Beitrag von: Peter Klett am 09.08.12 - 06:52:44
Wie "zerlegt" es denn den Agenten? Gibt es eine Fehlermeldung?
Titel: Re: SUMMARY READ/WRITE-ACCESS NAMES PROTECTED
Beitrag von: ascabg am 09.08.12 - 07:49:19
Hallo,

Zitat
Das bedeutet doch eigentlich, daß man zur Bearbeitung dieses Feldes mindestens Editorzugriff braucht.
Sind das nicht Autorenfelder?


Andreas
Titel: Re: SUMMARY READ/WRITE-ACCESS NAMES PROTECTED
Beitrag von: DAU-in am 09.08.12 - 08:17:46
@peter:
ich werde am Freitag nochmals debuggen.

Im Debugger war das Item als Name zu sehen, ohne Array, keine Werte dazu.

Eine spezielle Fehlermeldung kam nicht, auch kein 'Variable not set' oder so. Der Agent brach ab.
Wenn ich dieses spezielle Item nicht ausgelesen habe, lief der Agent fehlerfrei durch.

Wenn ich dann von Hand eines der betreffenden Dokument geöffnet habe, konnte ich Werte in den Dokumenteigenschaften lesen, und es sah eigentlich alles völlig normal aus, bis auf den Read/Write Access Names protected.
Ich habe damit noch nie zu tun gehabt.

Aber liege ich richtig in der Annahme, daß das reine Auslesen solcher Felder kein Problem darstellen sollte? Oder sind da meine Infos schon falsch?

@Andreas: würde dann nicht AUTHOR oder so ähnlich drinstehen? ICh habe gerade kein Notes hier. Names protected ist etwas anderes.
Titel: Re: SUMMARY READ/WRITE-ACCESS NAMES PROTECTED
Beitrag von: Peter Klett am 09.08.12 - 08:42:35
Ein reines Autorenfeld wird mit SUMMARY READ/WRITE-ACCESS NAMES dargestellt, PROTECTED habe ich noch nie gesehen und auch keine Ahnung, wo das herkommt, bzw. wie man das einstellt.

Primär würde ich versuchen, herauszubekommen, wie das PROTECTED da reinkommt, bzw. welcher Zweck dahintersteckt. Wenn das gewollt ist, würde ich im Agenten prüfen, ob Du bei

IsArray (doc.Feldname)

ein entsprechendes Ergebnis zurückbekommst und damit eventuell die Problemdokumente umgehen kannst.

Ein ähnliches Phänomen hatten wir zu Notes 5-Zeiten mit lesegeschützen Dokumenten. Ein periodischer Agent auf dem Server fand zwar die Dokumente, brach aber beim Zugriff auf die Dokumente ab, weil er sie selbst nicht lesen durfte. Wir hatten das damals mit If (Isarray (doc.Items)) umgehen können.
Titel: Re: SUMMARY READ/WRITE-ACCESS NAMES PROTECTED
Beitrag von: ascabg am 09.08.12 - 08:46:57
Anbei einmal die Feldeigenschaften des Feldes "Owner" aus dem NAB.
Dieses ist ja bekanntermassen ein reines Autorenfeld.

Feldname: Owner
Datentyp: Text
Datenlänge: 38 Byte
Seq.-Num.: 1
Doppeleintrags-ID: 0
Feld-Flags: SUMMARY READ/WRITE-ACCESS NAMES PROTECTED


Andreas
Titel: Re: SUMMARY READ/WRITE-ACCESS NAMES PROTECTED
Beitrag von: Peter Klett am 09.08.12 - 09:01:22
Interessant, was es nicht alles gibt. In den Feldeigenschaften des Feldes Owner im NAB ist die Option gesetzt "Mindestens Editorzugriff für Bearbeitung erforderlich" (dritter Reiter), so, wie Anita geschrieben hatte.

Ich würde dann mal überprüfen, mit welchen Rechten der Agentenunterzeichner auf das Item zugreift, und falls er kein Editor ist, passt vielleicht die geschilderte Maßnahme.
Titel: Re: SUMMARY READ/WRITE-ACCESS NAMES PROTECTED
Beitrag von: Ralf_M_Petter am 09.08.12 - 09:06:09
@ascabg

Nein offensichtlich nicht, den ein reines Autorenfeld hat SUMMARY READ/WRITE-ACCESS NAMES  ohne PROTECTED.

Das Protected kommt von der Einstellung Sicherheitsoptionen auf dem Propellerheadreiter "Mindestens Editorzugriff zum editieren des Feldes notwendig".

Du kannst das übrigens mit isProtected abfragen.

Grüße

Ralf

Edit Peter war wie immer schneller ;-)
Titel: Re: SUMMARY READ/WRITE-ACCESS NAMES PROTECTED
Beitrag von: Glombi am 09.08.12 - 09:07:02
Mit dem folgenden Code kann ich das Item auslesen und auf die Values zugreifen.

Dim session As NotesSession
   Dim db As NotesDatabase
   Dim dc As NotesDocumentCollection
   Dim doc As NotesDocument
   Dim item As NotesItem   
   Set session = New NotesSession
   Set db = session.CurrentDatabase
   Set dc = db.UnprocessedDocuments
   Set doc = dc.GetFirstDocument
   Set item = doc.GetFirstItem("Owner")


item.Type ist gleich 1076, also Author. Das protected ändert also nichts am Type.

Welche Rechte hat den der Agentunterzeichner im NAB?

Andreas
Titel: Re: SUMMARY READ/WRITE-ACCESS NAMES PROTECTED
Beitrag von: koehlerbv am 09.08.12 - 09:15:25
Auch, wenn die IsProtected-Property des NotesItems hier gesetzt war: Das ist wohl verwirrend gewesen, hat aber mit dem eigentlichen Problem nichts zu tun. Das von Anita genannte Item kann man (wenn der Rest auch passt) schon als Leser auslesen.
Das Problem muss also ein anderes sein.

Anita: Betrifft das alle Dokumente mit solchen Items?

Bernhard
Titel: Re: SUMMARY READ/WRITE-ACCESS NAMES PROTECTED
Beitrag von: ascabg am 09.08.12 - 09:15:40
Ok.
Nachdem jetzt geklaert ist, was es mit diesem Item auf sich hat, stellt sich dennoch die Frage,
ob es eine Fehlermeldung/Meldung gibt, bevor der Agent beim Zugriff auf dieses Item
seinen Dienst einstellt.

Egal ob es nun PROTECTED ist oder nicht, wen ich Leserechte auf die Db und das Dokument habe, muesste ich doch auch an die Werte problemlos herankommen.

Schon mal den Debugger bemueht?


Andreas
Titel: Re: SUMMARY READ/WRITE-ACCESS NAMES PROTECTED
Beitrag von: Axel am 09.08.12 - 09:20:11
Ein reines Autorenfeld wird mit SUMMARY READ/WRITE-ACCESS NAMES dargestellt, PROTECTED habe ich noch nie gesehen und auch keine Ahnung, wo das herkommt, bzw. wie man das einstellt.

Primär würde ich versuchen, herauszubekommen, wie das PROTECTED da reinkommt, ....

Das PROTECTED kommt wahrscheinlich aus den Feldeigenschaften. Hier ist mit Sicherheit die entsprechende Sicherheits-Option "Must have at least Editor access to use" gesetzt.

Das verhindert, dass jemand mit Autorenrechten das entsprechende Feld ändern kann.

Axel
Titel: Re: SUMMARY READ/WRITE-ACCESS NAMES PROTECTED
Beitrag von: Glombi am 09.08.12 - 10:13:17
Interessant wäre mal den Code zu sehen, wie auf das Item "Owner" zugegriffen wird.

Owner ist ja bspw. auch eine Property beim NotesAgent. Vielleicht kommt sich das was ins Gehege.
Titel: Re: SUMMARY READ/WRITE-ACCESS NAMES PROTECTED
Beitrag von: DAU-in am 13.08.12 - 21:47:10
@Glombi:  Es handelt sich nicht um das Feld 'Owner'.

Es ist ein wohl nachträglich eingefügtes Personenfeld, das bei einigen Dokumenten auf protected steht.

@Bernhard:  Genau bei diesen Dokumenten hat der Agent abgebrochen. (7 von ca. 4000 Dokumenten)

@ascab: ja, siehe Post 3. keine Fehlermeldung, nur kein Array sichtbar

@Peter: ich habe den Agenten von Hand gestartet, er läuft mit meinen Rechten.


@all:
Da es sich nur um einzelne Dokumente handelt und die DB nicht in unserem Einfluß liegt, umgehe ich diese 'special documents' mit dem Tip von Peter.
Nur hasItem hat nicht gewirkt, das Item hat er ja gesehen, nur den Inhalt nicht.


Code

ForAll x In listFields
             
                If docA.hasItem(ListTag(x)) Then
                        If IsArray(docA.getItemValue(ListTag(x))) then             '<--- Peters Tip
                                  If docB.HasItem(X) Then
                                            If CStr(docB.Getitemvalue(x)(0)) <> CStr(docA.getItemValue(ListTag(x))(0)) Then
                                                        Call docB.replaceItemValue( x, docA.getItemValue(ListTag(x)))
                                                        flagSave = true
                                             End If
                                  Else
                                                 Call docB.replaceItemValue( x,docA.getItemValue(ListTag(x)))
                                                flagSave = True                                       
                                End If
                        End If
                End If
End ForAll