Welches Verfahren du brauchst, hängt von einigen Aspekten ab. Welcher Art ist dein "verteiltes System", wie lange dauert ein Bearbeitungszyklus, spielt das Edit-Programm mit, welche Security-Maßstäbe legst Du an, usw. Ich zähle mal ein paar Möglichkeiten auf.
-
Das Edit-Programm öffnet die Datei zur Bearbeitung mit einem Fileshare-Modus, der anderen nur das Lesen erlaubt (wie das konkret geht hängt vom Betriebssystem ab). Es hält die Datei während der Bearbeitung offen. Am Ende überschreibt es den Inhalt (oder Teile davon) und schließt die Datei. Ab jetzt können andere wieder bearbeiten. Vorteil: Ganz einfach zu lösen, und einen Lock des Betriebssystems kann man auch nicht umgehen. Nachteil: Wenn das Betriebssystem keine Funktion hat, die Auskunft über den Sperrbesitzer gibt, weiß man nicht, wer die Datei gerade sperrt. Nachteil 2: Man kann auf diese Weise eine Sperre nicht über längere Zeit halten. Beendet man das Edit-Programm, ist die Sperre wieder weg.
-
Variante von 1: Das Edit-Programm erzeugt am gleichen Ort, wo z.B. foo.txt steht, eine Datei _editlock_foo.txt (oder irgendwas in der Art) und schreibt dort hinein, wer die Datei gerade am Wickel hat. Diese Datei hält es während der Bearbeitung mit Schreibsperre offen. Vorteil: Man hat Metainformationen zum Bearbeitungsvorgang. Nachteil: Wer die Sperrdatei ignoriert, kann konkurrierend editieren.
-
1. und 2. kann man kombinieren, wenn das Format der bearbeiteten Dokumentdatei das hergibt.
-
Erweiterung von 2: Die Sperrdatei wird nicht gelockt, sondern die Existenz einer Sperrdatei wird vom Edit-Programm als Sperre anerkannt. Erst, wenn der Bearbeiter die Sperre explizit freigibt, akzeptiert es Bearbeitung durch andere Personen. Das erlaubt längere Bearbeitungszyklen, funktioniert aber nur wenn die Sperrdatei strikt respektiert wird. Auch hier kann man die Funktion der Sperrdatei in die Dokumentdatei integrieren, wenn das Dateiformat mitspielt.
-
Diese Verfahren kann man noch mit Schutzattributen im Filesystem des Betriebsystems garnieren, aber es ist genau das: Garnitur. Weil der User das Recht haben muss, diese Schutzattribute zu ändern, sonst könnte er nicht bearbeiten. Es hilft nur gegen versehentliche Aktionen.
Wenn dein Edit-Programm nicht darauf ausgelegt ist, Sperren irgendwelcher Art selbst zu managen, brauchst Du eine Serverkomponente. Dafür legt man die Dateien so ab, dass die Anwender sie nur lesen können (Fileshare mit Readonly-Recht oder eine Webseite mit Downloadmöglichkeit). Wer bearbeiten will, muss die Datei mit Hilfe des Servertools auschecken. Der Server vermerkt den Checkout und lässt keinen weiteren Checkout zu. Nach Ende der Bearbeitung checkt man wieder ein und lädt die geänderte Datei über das Servertool hoch, das sie dann in der Ablage zur Verfügung stellt. Bei der Gelegenheit kann man auch gleich das Delta zur Vorversion ermitteln, um auf ältere Versionen zurückzugelangen, man kann Änderungskommentare einfordern und vermerken, wer wann was geändert hat. Der Name dieses Servertools lautet "Versionskontrollsystem", davon gibt's eine Masse, von kostenlos bis unendlich teuer.
Es gibt auch Client-Software, die auf die Nutzung von Servertools für checkin/checkout eingestellt ist und sie automatisch ansteuert (z.B. können viele IDEs für die Softwareentwicklung automatisch mit Sourcecode-Versionskontrollsystemen interagieren, oder Microsoft Office kommuniziert automatisch mit Microsoft Sharepoint).
Rolf