Bau in der Ansicht der Replizierkonflikte eine vernünftige Kategorisierung ein, die dir den Konflikt "sprechend" macht. Denn sonst mußt du jedes Konfliktdokument öffnen, damit du weißt, um welches Dokument es sich dabei handelt, also z.B. als Kategoriespalte:
form+"\\"+"Created at " + @Text(Created) + @If(@IsAvailable($UpdatedBy);" by " + @Subset($UpdatedBy;1);"") + @If(@IsAvailable(subject);" "+@Implode(subject;", ");"")
Bau eine Aktionsschaltfläche ein, mit der du den Konflikt mit dem Nicht-Konflikt vergleichen kannst. Empfehlen kann ich da z.B. etwas wie
http://www-10.lotus.com/ldd/sandbox.nsf/Threads/17C785F8028E7C8785256A7000497FD9?OpenDocumentWenn du dich dafür entscheidest, dann lies und beherzige bitte auch die Kommentare, denn das Tool hat noch ein paar kleine Fallen, deren Lösung dort gleich beschrieben wird.
Ich selbst habe - gerade für die Verwendung in der dir vorschwebenden Ansicht - einen Teil der Script-Lib darum ergänzt, daß das Siegerdokument automatisch als Vergleich herangezogen wird, wenn man nur ein Dokument wählt (das wird dir in der Konfliktdokumentansicht eigentlich immer so gehen):
Sub launch_program (program_name As String)
' 2006-04-18 Norbert Goeth: Extensions for slections of only one document,
Dim collection As NotesDocumentCollection
Dim dcResp As NotesDocumentCollection
Set collection = db.UnprocessedDocuments
If (collection.count > 2) Then
Msgbox "Usage: You can only compare 2 documents. Please don't select more", MB_OK, program_name
Exit Sub
Elseif collection.count=2 Then
' Get selected documents.
Set docMain = collection.GetFirstDocument
Set docConflict = collection.GetNextDocument (docMain)
Elseif collection.Count=0 Then
Msgbox "Usage: You must select 2 documents to compare.", MB_OK, program_name
Exit Sub
Else
Set docMain = collection.GetFirstDocument
If docMain.HasItem("$Conflict") Then
Set docConflict=docMain
Set docMain=db.GetDocumentByUNID(docConflict.ParentDocumentUNID)
Else
Set dcResp=docMain.Responses
If dcResp.count=0 Then
Msgbox "Usage: You have selected only 1 document without conflicts. You must select 2 documents to compare.", MB_OK, program_name
Exit Sub
Else
Set docConflict=dcResp.GetFirstDocument
Do While Not docConflict Is Nothing
If docConflict.HasItem("$Conflict") Then
If dcResp.count>1 Then
Msgbox "The first conflict is taken for comparison with the selected doc.", MB_OK, program_name
End If
Exit Do
End If
Set docConflict=dcResp.GetNextDocument(docConflict)
Loop
If docConflict Is Nothing Then
Msgbox "The selected document has no conflict document. You must select 2 documents to compare.", MB_OK, program_name
Exit Sub
End If
End If
End If
End If
Select Case program_name
Case "Compare Documents"
Call compare_documents
Case "Examine Document Differences"
Set docs (1) = docMain
Set docs (2) = docConflict
Call examine_document_differences
End Select
End Sub
Diese Ansicht und die zugehörigen Aktionen gehört als Standard eigentlich in jede Datenbank. Allerdings gilt immer - und das betrifft das Programmierkonzept: Konflikte vermeiden ist besser als Konflikte zu lösen, und sei das Tool dafür auch noch so ausgefeilt.
Noch eins ist hilfreich, damit Anwender entdecken, daß sie ein Konfliktdokument öffnen oder daß sie ein Dokument öffnen, zu dem es einen Konflikt gibt:
1. Bau in den Header eine dicke, rote Zeile "KONFLIKTDOKUMENT" mit der HW-Formel @IsUnavailable($Conflict) ein.
2. Bau dir eine EmbeddedView mit der Kategorie
@If(@IsAvailable($Ref);@Text($Ref);@Text(@DocumentUniqueID))
Im (Haupt)dokument läßt du diese Ansicht mit der SingleCategory @Text(@DocumentUniqueID) anzeigen, wenn das (Haupt)dokument Antworten enthält. Damit wirfst du in jedem Dokument einen Blick auf die nächste Antwortebene - und siehst damit immer die Konfliktdokumente.
Ich packe diese Ansicht in eine Teilmaske und ziehe diese in der Maske als berechnete Teilmaske ein, z.B.
subform:="EmbZuordnung";
lookupview:="(EmbZuordnung)";
key:=@Text(@DocumentUniqueID);
xview:=@If(@IsNewDoc | d_PrevPane="1";"";subform);
WasDa:=@If(xview="";"";@DbLookup("":"";"";lookupview;key;1));
@If(@IsError(WasDa) | @Elements(WasDa)<2;"";xview)
Und jetzt viel Spaß bei der Konfliktbewältigung.
Gruß
Norbert