Hallo Fabian.

>  Aber wie mache ich es dann? Ich muss ja irgendwie aus der XML-Antwort meine 
> Objekte basteln, über die ich dann im Fluid Template iteriere und die 
> Tabellen zusammensetze.

Das ist genau der Punkt. Du wirst also erst in einem „findAll()“ alle Objekte 
aus der Datenbank holen. Dann lässt Du Dir über den SOAP-Request alle XMLe 
geben. Jetzt kannst Du in einer geschachtelten Schleife über beide drüber 
iterieren und prüfen welche zu aktualisieren sind, welche neu zu erstellen und 
welche zu löschen. Das kostet Dich natürlich erstens ganz massiv RAM. Und 
zweitens musst Du das reine Synchronisations-Hilfsmittel „tstamp“ als Property 
Deines Models mappen – obwohl der tstamp überhaupt nichts mit Deiner Domäne zu 
tun hat. Der gehört da also schlicht nicht hin. Du bläst damit Deine Domäne 
also mit „Kram“ auf.

Dann kommt alles mit Repository->add(), Repository->update() oder 
Repository->delete() in die Datenbank, und unter Umständen musst Du dann ein 
„persistAll()“ aufrufen damit ein anschließender Filter-Query auch wirklich die 
aktualisierten Daten aus der Datenbank bekommt. Ohne das persistAll() werden 
die Persistenzoperationen durchgeführt, *nachdem* die Action erfolgreich 
durchlaufen wurde. Ein „findByIrgendwas()“ innerhalb der Action wenn in den 
ersten Zeilen der Action neue Daten in die Datenbank gekommen sind wird diese 
neuen Daten sonst nicht finden.

Wenn Du jetzt noch „updateoptimiert“ z.B. ein Plugin hast das nur die Daten von 
2017 haben möchte, ein weiteres Plugin das nur die Daten einer bestimmten 
Kategorie aber dafür zeitunabhängig haben möchte und ein drittes Plugin das 
alle Daten sortiert nach Titel dafür mit Pagination anzeigen soll. Dann tust Du 
Dir schon schwer, wirklich sinnvoll auf Basis einer solchen Teilmenge zu 
ermitteln, welche deiner lokalen Daten gelöscht werden sollen oder welche neu 
sind. Das heißt Du musst für jede Plugin-Filter-Teilmenge sowohl den 
Extbase-Query als auch die SOAP-Anfrage so hin optimieren, dass sie die exakt 
identischen Werte liefern. Andernfalls legst Du Daten an die es schon gibt 
(wenn sie von Deinem Extbse-Query ausgefiltert wurden aber über SOAP kommen) 
oder löchst Daten die Du eigentlich noch brauchst (wenn der Extbase-Query zu 
lasch war und mehr Datenliefert als Du anzeigen möchtest).

Sobald Du jetzt die Logik was eigentlich wirklich angezeigt werden soll noch 
den Redakteur überlässt. Denk wieder an News. Filter nach Kategorie, mehrere 
Kategorien AND- oder OR-Verknüpft, Kategoriefilter negiert, absteigend oder 
aufsteigend sortiert, beschränkt auf Datum. All diese Optionen kann der 
Redakteur im News-Plugin selbst wählen.
Und jetzt bau das mal als SOAP-Anfrage nach, damit sie im Frontend zum 
Synchronisationszeitram zu 100% auf den vom Redakteur gewählte 
Extbase-Filter-Query passt.

⇨ Sync zur Laufzeit erzeugt einen wahnsinnigen Kraut-und-Rüben-Code, bläst Dein 
Model auf und kostet RAM im Web-Request.

> Leider liefert der Webservice kein Änderungsdatum o.Ä. an dem ich entscheiden 
> könnte, ob aktualisieren, nicht aktualisieren oder löschen. Bleibt also 
> nichts Anderes übrig als lokal zu entscheiden mittels timestamp, oder?

Wenn Dir der SOAP-Request keine Verändungsinformationen gibt, also weder eine 
Objekt-Version noch ein Änderungsdatum, dann kannst Du überhaupt nichts 
entscheiden. Dann musst Du wohl oder übel das Objekt speichern wenn Du es 
bekommst.

> Da hast du natürlich recht. Ich werde also die getrennte Lösung per Scheduler 
> vorziehen.

Ich würde wirklich genau einen einzigen Sync-Durchlauf per Scheduler machen der 
das komplette Model lokal aufbaut. Anschließend kannst Du in Deinem lokalen 
Model noch filtern und sortieren wie Du lustig bist. Kein Filter, keine 
Sortierung.
Der Scheduler-Durchlauf muss auch überhaupt nicht mit Extbase arbeiten. 
Mindestens die Datenmanipulation kann – gerade wenn es möglicherweise viele 
Daten sind – auch einfach durch den DataHandler passieren.

Beste Grüße,


Stephan Schuler
Web-Entwickler | netlogix Web Solutions

Telefon: +49 (911) 539909 - 0
E-Mail: stephan.schu...@netlogix.de
Web: websolutions.netlogix.de



----------------------------
Neu: Wir sind Amazon Web Services Partner. Mehr erfahren:
https://websolutions.netlogix.de/technologie/amazon-web-services-aws
----------------------------




netlogix GmbH & Co. KG
IT-Services | IT-Training | Web Solutions
Neuwieder Straße 10 | 90411 Nürnberg
Telefon: +49 (911) 539909 - 0 | Fax: +49 (911) 539909 - 99
E-Mail: i...@netlogix.de | Web: http://www.netlogix.de

netlogix GmbH & Co. KG ist eingetragen am Amtsgericht Nürnberg (HRA 13338)
Persönlich haftende Gesellschafterin: netlogix Verwaltungs GmbH (HRB 20634)
Umsatzsteuer-Identifikationsnummer: DE 233472254
Geschäftsführer: Matthias Schmidt



_______________________________________________
TYPO3-german mailing list
TYPO3-german@lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german

Antwort per Email an