Domino 9 und frühere Versionen > Entwicklung

Replizieren von Dokumenten verhindern

(1/2) > >>

Don Pasquale:
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

Gandhi:
Z.B. mit einem Leserfeld in den Dokumenten, dass beim Verschieben in den Ordner (wo genau auch immer) gesetzt wird.

ata:
... 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

Don Pasquale:

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

ata:
... ich denke das reicht noch nicht , habe aber erst heute Abend Zeit mir deinen Code genauer anzuschauen..

ata

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln