public function process(Request $request, Response $response) {
        // ggf. Session starten oder fortsetzen
        $this->processSession($request);


        // move ActionMessages stored in the session back to the Request
        $this->restoreCachedActionMessages($request);


        // Mapping fuer den Request ermitteln: wird kein Mapping gefunden, generiert die Methode einen 404-Fehler
        $mapping = $this->processMapping($request, $response);
        if (!$mapping) return;


        // Methodenbeschraenkungen des Mappings pruefen: wird der Zugriff verweigert, generiert die Methode einen 405-Fehler
        if (!$this->processMethod($request, $response, $mapping))
            return;


        // benoetigte Rollen ueberpruefen
        if (!$this->processRoles($request, $response, $mapping))
            return;


        // ActionForm vorbereiten
        $form = $this->processActionFormCreate($request, $mapping);


        // ActionForm validieren
        if ($form && !$this->processActionFormValidate($request, $response, $mapping, $form))
            return;


        // falls statt einer Action ein direkter Forward konfiguriert wurde, diesen verarbeiten
        if (!$this->processMappingForward($request, $response, $mapping))
            return;


        // Action erzeugen (Form und Mapping werden schon hier uebergeben, damit User-Code einfacher wird)
        $action = $this->processActionCreate($mapping, $form);


        // Action aufrufen
        $forward = $this->processActionExecute($request, $response, $action);
        if (!$forward) return;


        // den zurueckgegebenen ActionForward verarbeiten
        $this->processActionForward($request, $response, $forward);
    }