Archiv des Intrexx Live! Forums

Hier sehen Sie die Foreneinträge aus dem Intrexx Live! Forum. Bis November 2016 war es das Forum für alle Fragen rund um die Software Intrexx von United Planet.
Seit November 2016 gibt es ein neues moderiertes Forum, das Intrexx Community Forum. Nutzen Sie bitte unbedingt dieses für aktuelle Fragen, Antworten und Informationen.

Wichtig: Dieses Forum dient als Archiv. Die Einträge beziehen sich oft auf ältere Versionen von Intrexx und entsprechen nicht mehr den aktuellen technischen Gegebenheiten.
Daher sollten alle Inhalte ausschließlich von Experten genutzt werden. Bei unsachgemäßer Anwendung kann es zu zeitaufwändigen Problemen oder Datenverlust kommen.
Übersicht > Intrexx Professional: Programming > ODATA Adapter und Prozess

ODATA Adapter und Prozess

Hi,

ich hatte in einem anderen Threat schon einmal ein Problem bezüglich der Synchronisierung mehrere Portale gepostet. Damals wurde auf den OData Adapter verwiesen. Ich habe nun diesen etabliert und getestet. Soweit funktioniert dies auch, soll heissen : es werden Daten präsentiert die in einem anderen Portal 'konsumiert' werden können. Nun das Problem : Wird ein neuer Datensatz eingefügt, so wird dieser auch korrekt (als Fremddatentabelle) im 'konsumierenden'Portal angezeigt, lässt sich aber dort nicht in einem Prozess als Trigger für Folgeaufgaben verwenden.
Ich bekomme nicht hin , dass auf das Einfügen einens Datensatzes via OdataAdapter ein Ereignis im lesenden Portal ausgelöst wird. Was mache ich falsch ? Wie bekomme ich es hin , dass auf Ändern/Einfügen in der präsentierenden Tabelle in der konsumierenden Struktur reagiert wird ?
Ich habe mir das Workaround des EM Tipspiels angeschaut, aber da wird nur via Timer regelmässig abgefragt...

Hat jemand einen Tip ? Oder denke ich in die falsche Richtung ?
Es müssten doch viele mit eben dieser Fragestellung bereits konfrontiert sein ... attention


Grüße
14.10.2016 10:41 von Negtec
Da es sich um eine Fremddatengruppe im konsumierenden Portal handelt, bekommt dieses erstmal nicht mit, dass ein Datensatz eingefügt wird. Das Einfügen läuft ja auch nicht über die Businesslogik des konsumierenden Portals, also wie auch.

Was man aber machen kann: Am konsumierenden Portal ebenfalls einen OData-Dienst anbieten, der eine "Trigger"-Datengruppe bereitstellt. Wenn nun im Producer-Portal ein Datensatz eingefügt wird, ruft dieser den ODatadienst des konsumierenden Portals auf und fügt dort z.B. die neu generierte PK ein. Das kann dank OData über einen simplen URL-Aufruf geschehen.
Dieses Einfügen passiert dann über die BL und das konsumierende Portal weiß direkt, um welchen neuen Datensatz es sich handelt.
17.10.2016 07:54 von ManuelS
Wie geil ist das denn ?
Auf diese Lösung wäre ich nie gekommen ! Ich hatte einfach nicht bedacht dass die Fremddatengruppe beim Einfügen nicht triggert.

Jetzt versuche ich mal die Lösung mit konsumierend / präsentierend und schau ob ich dies hin bekomme.
Ich würde , sollte ich scheitern , noch mal anfragen.

Herzlichen Dank
17.10.2016 10:24 von Negtec
Am einfachsten ist, Du definierst eine Function, die als Parameter in die DatensatzId entgegennimmt. An diesen kommst Du dann im Script über g_oFunctionParameters['DatensatzId'] und kannst damit ein SQL-Statment machen.
Dann aus demselben Script z.B. einen Timer starten, der über die Datengruppe rennt und neue Datensätze verarbeitet.

Der Vorteil einer Function ist nämlich, dass Du diese direkt über einen URL-Aufruf triggern kannst (http://.../myservice.svc/myfunction?DatensatzId=123), für ein "normales" Post müsstest Du die Daten im Header übergeben, das macht es etwas komplizierter.
17.10.2016 13:15 von ManuelS
So...fertig gebastelt.

Soweit alles funktionell aufgebaut, aber ich kann in die Trigger-DB nix schreiben 'ACCESS DENIED'.
Sonst wäre jetzt alles hübsch aufgebaut mit schönen SQL -Proc.
Ich habe im ODATA sogar Admin - Benutzer angegeben.

Irgendwie scheine ich die Sache nicht so begriffen zu haben mit diesem Adapter....
Das Konzept ist mir prinzipiell klar...auch die Trigger - DB ect. aber in der Konfiguration der Adapter mache ich wohl Fehler. Beim Präsentieren sind alle Möglichkeiten zugelassen (Insert, Update, Delete ect...)

Ich fühle mich jetzt irgendwie ziemlich undereducated...oder einfach dumm.
So schwer kann das doch nicht sein... wacko
17.10.2016 14:20 von Negtec
Der Benutzer, der sich über OData anmeldet, muss ein Passwort haben, sonst weigert sich Intrexx.
Außerdem muss dieser Benutzer Schreibrechte in der Applikation in der entsprechenden Datengruppe haben.
Als Auth-Methode sollte im OData-Service beim Anbieter - wacko also in diesem Fall Consumer wacko - Basic ausgewählt sein.
Außerdem muss der User, unter dessen Kontext der Prozess bzw. die Function ausgeführt wird, Schreibrechte haben.

Irgendetwas davon scheint bei Dir zu fehlen...
17.10.2016 14:55 von ManuelS
*Plopp*
So ...das war es. Manuel Du bist mein persönlicher Held an diesem neuen Tag ! Es funzt famos! Jetzt kann ich endlich dieses Problem abhaken.

Herzlichen Dank ...ehrlich !

Grüße
17.10.2016 22:20 von Negtec
Zurück | Alles über Intrexx | Impressum | Datenschutzerklärung

Über United Planet
© 2019 United Planet GmbH
Schnewlinstraße 2
79098 Freiburg