Idempotenz ist beim Aufbau einer Serviceorientierten Architektur ein häufig gefordertes Pattern bei der Gestaltung der Services. Ein Service ist idempotent, wenn er die Fähigkeit besitzt, damit umzugehen, dass Nachrichten mehrfach zugestellt werden. Er soll sich bei wiederholten Aufrufen mit denselben Parametern identisch verhalten, ohne dabei Schaden anzurichten. Im Klartext heißt das: Wird ein Service mit denselben Parametern zweimal aufgerufen, soll er denselben Zustand hinterlassen.
Diese Forderung klingt erstmal vernünftig. Um eine solches Verhalten zu erzielen, werden gelegentlich Idempotenz-Frameworks geschaffen, die Service-Aufrufe und deren Ergebnisse cachen. Wird dann der gleiche Aufruf nochmal durchgeführt, wird einfach das gecachte Ergebnis zurückgeliefert, anstatt die Verarbeitung ein weiteres Mal anzustoßen. Warum ein solcher Weg aber besonders im Kontext vom BPM und Prozessautomatisierung gefährlich ist, möchte ich an einem Praxisbeispiel erläutern.