===== AgilogikBaseAccessor ===== ==== Semaphore, Lock und Synchronisation ==== Dienste zur Basissynchronisation. Sicherheit erfokgt hier über Absprache und Einhaltung von Vereinbarungen einzelner Schlüssel für die Locks beantragt oder zurückgesetzt werden. === AquireLockService === == Parameter == String itentis String lockIdentityKey - Schlüssel für den ein Lock beantragt wird * String message - Optionale Nachricht, die für das beantragen des Locks vermerkt wird. Derzeit nicht genutzt. Long validTimeMilliseconds - Zeit in Millisekunden, für die der lock gültig sein soll. * == Return == Boolean * **true**, wenn ein Lock gesetzt werden konnte. * **false**, falls der Lock verweigert wird. == Beschreibung == Wird ein Lock beantragt, so wird zunächst geprüft, ob dieser Schlüssel schon in der Datenbank mit einem derzeit noch gültigen Lock vorhanden ist. In diesem Fall wird der Antrag abgelehnt. Falls er eingetragen werden kann, wird die gewünschte Laufzeit, die größer als Null sein muss vermerkt und das entsprechende Ablaufdatum eingetragen. Zu diesem Daten läuft der lock auch dann ab, wenn er nicht zurückgegestzt wurde. Für die Laufzeit gilt derzeit eine Obergrenze von einer Stunde, dh. 3600000 ms. Wird ein höherer wert beantragt, wird nur der wert für diese Obergrenze eingetragen. === ReleaseLockService === == Parameter == String itentis String lockKey - Schlüssel für den ein passender Lock aufgelöst werden soll. String message - Optionale nachricht zu dieser Auflösung, derzeit nicht verwendet. == Return == Boolean * **true**, falls der Lock aufgelöst werden konnte. * **false** sonst. == Beschreibung == Wurde ein Lock zu einem gewünschten Schlüssel erwirkt, so sollte er nach dem Sichern der veränderten daten wieder aufgelöst werden, da erst danach ein Lock für den gleichen Schlüssel beantragt werden kann. Das Auflösen des Lock kann nur mit dem Schlüssel und vom selben Nutzer und dem selben Vertrag und Produkt, wie bei der Beantragung aufgelöst werden.