Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Don Pasquale am 14.02.03 - 14:54:35

Titel: Replizieren von Dokumenten verhindern
Beitrag von: Don Pasquale am 14.02.03 - 14:54:35
Hallo Leute,

in meiner Anwendung ( die nie Lokal, sondern nur auf genau einem Server liegt) greifen verschiedene Anwedner auf eine Sicht zu und ziehen sich Dokumente in ihre privaten Ordner.

Wie kann ich verhindern, dass dabei dasselbe Dokument dann bei 2 verschiedenen Personen liegt ?

Ciao

Don Pasquale
Titel: Re:Replizieren von Dokumenten verhindern
Beitrag von: Gandhi am 14.02.03 - 19:08:55
Z.B. mit einem Leserfeld in den Dokumenten, dass beim Verschieben in den Ordner (wo genau auch immer) gesetzt wird.
Titel: Re:Replizieren von Dokumenten verhindern
Beitrag von: ata am 14.02.03 - 21:38:15
... ganz so einfach ist es nicht. Was ist, wenn ein User auf einem Server das Doc in seinen Ordner zieht, und jemand anders auf einem anderen Server auch - der zweite denkt er hat das Dokument auch...

... Um das sauber zu matchen muß ein zentraler Server zu jeder Zeit erreichbar sein - dort wird in einer DB die Vergabe entschieden - oder es muß ein Konflikthandling eingeführt werden - bei Speicher- und Replizierkonflikten...

ata
Titel: Re:Replizieren von Dokumenten verhindern
Beitrag von: Don Pasquale am 17.02.03 - 16:41:05

Was ist hiervon zu halten :


Annahmen: Die Anwendung liegt zentral auf dem Server

Annahmen: Wird ein Dokument angewählt, sollen alle
Dokumente derselben Kategorie (e4ihk_Identnummer)
mitverschoben werden.

Zuerst wird geprüft ob das Feld AUSGECHECKT leer ist.

Dann wird der eigenen Name hineingeschrieben

Steht bei der 2 Prüfung immer noch der eigene Name drin,
dann war alles in Ordnung.

Das ist das QueryAddToFolder der Ansicht

Sub Queryaddtofolder(Source As Notesuiview, Target As Variant, Continue As Variant)
   
' ************************
Dim ws As New NotesUiWorkspace
Call ws.viewrefresh
' ************************
Dim session As New NotesSession
Dim nnUserName As New NotesName(session.UserName)
' ************************
Dim docList As String
Dim LISTE List As String
Dim Konflikt As Integer
Dim OK As Integer
Konflikt = 0
Dim doc As NotesDocument

' ************************

   
   
For k = 1 To Source.Documents.Count
Set doc = Source.Documents.GetNthDocument(k)
   If Iselement(LISTE(doc.e4ihk_Identnummer(0)) ) Then
   ' NIX
   Else
   
   LISTE(doc.e4ihk_Identnummer(0)) = doc.e4ihk_Identnummer(0)
   docList = docList & Chr(10) & doc.e4ihk_Identnummer(0) & " " & doc.sf_Firmierung(0)
         
   End If
Next k
   
Forall x In Liste
   If isAusgechecktVorgang( LISTE(x) ) Then
   Konflikt = 1
   End If
End Forall
   
   
If Konflikt = 1 Then
Messagebox " Der Vorgang ist teilweise ausgecheckt"
Exit Sub
Else
   
Forall x In Liste
Anzahl = SETZE_ID_AUF_AUSGECHECKT(LISTE(x) , nnUserName.Common)
End Forall
      
End If
   
   
   MELDUNG$ = "Wollen Sie folgende Vorgänge übernehmen ?" & Chr(10) & docList
   OK = Messagebox(MELDUNG$, MB_OKCANCEL,"Vorgänge übernehmen")
   If OK = 1 Then
      
      Select Case IDOKCANCEL
      Case 1:
         
         Forall x In Liste
            Anzahl = SETZE_ID_AUF_INITIATOR(liste(x), nnUserName.Common)            
            Anzahl = SETZE_ID_AUF_EINGECHECKT(LISTE(x) )
         End Forall
         
      Case 2:
         Forall x In Liste
            Anzahl = SETZE_ID_AUF_EINGECHECKT(LISTE(x) )
         End Forall
         Continue = False   
      End Select
   End If
   
   
End Sub
Titel: Re:Replizieren von Dokumenten verhindern
Beitrag von: ata am 17.02.03 - 17:27:06
... ich denke das reicht noch nicht , habe aber erst heute Abend Zeit mir deinen Code genauer anzuschauen..

ata
Titel: Re:Replizieren von Dokumenten verhindern
Beitrag von: ata am 17.02.03 - 19:56:18
Sodele,

... wenn die Anwedung zentral nur auf diesem Server liegt, dann könnte das funktionieren - allerdings würde ich noch eine Überprüfung einbauen, daß die Anwendung auch wirklich auf dem dafür vorgesehenen Server liegt - und nicht etwa bei einem User Lokal oder sonstwo...

... denn sonst würdest du ein Konfliktmanagement benötigen..

ata
Titel: Re:Replizieren von Dokumenten verhindern
Beitrag von: Don Pasquale am 18.02.03 - 07:21:58
@Ata :

Vielen Dank für Deine Antwort, jetzt traue ich mich, das Teil vom Anwender testen zu lassen.

zu eben :
Meinst Du vielleicht im Postopen Ereignis der Anwendung so etwas ? :

@If(@Name([CN]; @Subset(@DbName; 1)) != "";@Return(""); @Do(
@Prompt([OK];"Restriction"; "Database can only run on server");
@PostedCommand([FileCloseWindow]) ) )


Weitere Idee :

Ich habe gelesen, dass man Lock-Objekte erzeugen kann, bringt das hier etwas oder ist der nur für Agenten ?

ciao

Don Pasquale
Titel: Re:Replizieren von Dokumenten verhindern
Beitrag von: ata am 18.02.03 - 09:04:59
Moin moin

Zitat
@If(@Name([CN]; @Subset(@DbName; 1)) != "";@Return(""); @Do(
@Prompt([OK];"Restriction"; "Database can only run on server");
@PostedCommand([FileCloseWindow]) ) )

... damit unterbindest du eine lokale Verwendung der DB. Du kannst es auch beim Verschieben wollen abfragen, dann kann die DB Lokal verwendet werden, aber Dokumente nicht verschoben...


Zitat
Ich habe gelesen, dass man Lock-Objekte erzeugen kann, bringt das hier etwas oder ist der nur für Agenten ?

... ist denke ich nur für Agenten - in R6 siehts dann besser aus...

ata