Domino 9 und frühere Versionen > Entwicklung
Replizieren von Dokumenten verhindern
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