# Gleichzeitiges Bearbeiten von Objekten herausfinden



## andyx1975 (17. Dez 2012)

Hallo,

ich habe mit SmartGWT eine Webapplikation geschrieben, die von mehreren Benutzern verwendet wird. Jetzt möchte ich verhindern, dass 2 Benutzer ein Objekt gleichzeitig öffnen und bearbeiten können. Wie realisiere ich dass am besten? Einen DB Eintrag mit den gesperrten Objekten ist wohl nicht zielführend, weil wenn der Benutzer den Browser schließt bleibt das Objekt gesperrt. Kennt jemand einen guten Ansatz bzw. ein gutes Framework, das mir weiterhilft und in die GWT/SmartGWT Welt passt?

Danke
Andy


----------



## Templarthelast (17. Dez 2012)

Er Ansatz mit der Datenbank funktioniert schon, allerdings musst du entwender das Verlassen der Seite oder ähnliches event per Javascript abfangen oder überprüfen ob der Browser antwortet und falls nach einer gewissen Zeit das Objekt wieder freigeben.


----------



## freez (17. Dez 2012)

Ergänzend dazu: der Eintrag in der DB könnte ja auch 2 Spalten mit User und Zeitstempel sein. Wenn der Zeitstempel älter als x Minuten ist, dürfen andere User wieder bearbeiten. Als Zeitrahmen kann du ja auch das SessionTimeout der Weboberfläche nehmen. Du musst nur sicherstellen, dass der Zeitstempel auch mal aktualisiert wird, wenn der User noch am Bearbeiten ist. Wie du es im Detail machst, hängt von deinen Anforderungen ab.

PS: Verlassen der Seite per JavaScript funktioniert natürlich nur solange, wie der User eine Verbindung zum Server hat. ggfs. kann man aber auch durch polling den Zeitstempel in der DB aktualisieren. beachte aber: Wenn der User die Bearbeitung offen hält und dann erst mal 2 Stunden Mittagessen geht, können andere nicht den Datensatz bearbeiten.


----------



## andyx1975 (17. Dez 2012)

Hey Danke für euer Feedback... Wie kann ich prüfen ob der Browser antwortet? Hat jemand ein Code Beispiel hierzu? Danke und Gruß 

Gesendet von meinem HTC One X mit Tapatalk 2


----------



## freez (18. Dez 2012)

Ich kenne mich mit SmartGWT nicht aus, aber kurz nach Polling gegoogelt:

lmgtfy

Da sollte was zu finden sein. Solange der Browser pollt, ist er auf der Seite noch online.


----------



## andyx1975 (20. Dez 2012)

Super... Vielen Dank... Habt mir weiter geholfen... Habe es jetzt doch über die dB geregelt. Danke für die Tips 

Gesendet von meinem HTC One X mit Tapatalk 2


----------



## andyx1975 (21. Dez 2012)

Ok ich habe noch was nach zu liefern.... im Falle von GWT bzw. SmartGWT funktioniert das Abfangen ob der Browser geschlossen wurde viel einfacher... einfach den folgenden Code verwenden:


```
// release all user locks when Browser will be close by user
        final CloseHandler closeHandler = new CloseHandler()
        {
            public void onClose( final CloseEvent closeEvent )
            {
                //TODO write your code here
            }
        };
        com.google.gwt.user.client.Window.addCloseHandler( closeHandler );
```


----------

