Standardmethode für den Zugriff auf andere serverseitige Business Objekte
Voraussetzungen
Um auf andere serverseitige Business Objekte zugreifen zu können, müssen Sie diese in den Business-Objekt-Einstellungen hinzufügen.
Andernfalls wird das angeforderte serverseitige Business-Objekt bei der Ausführung nicht gefunden und die Abhängigkeit kann beim Transport nicht behandelt werden.
Greifen Sie auf andere Geschäftsobjekte zu
Sie können alle anderen Geschäftsobjekte in Ihrem aktuellen Geschäftsobjekt auf ähnliche Weise aufrufen wie einen Konnektor, indem Sie die folgende Syntax verwenden:
Simplifier.BusinessObject.<BOName>.<MethodName>(payload?: string|object, parametrized?: boolean = true): object Simplifier.CurrentBusinessObject.<MethodName>(payload?: string|object, parametrized?: boolean = true): object
Beispiele:
var otherMethodResult = Simplifier.BusinessObject.OtherBO.someMethod({"foo": "bar"}); var unparamtetrizedResult = Simplifier.BusinessObject.OtherBO.someMethod("{\"foo\": \"baz\"}", false); var sameBoResult = Simplifier.CurrentBusinessObject.someMethodOnSameBO({"baz": "baz"}); var noArgsResult = Simplifier.CurrentBusinessObject.methodWithoutArgs();
Serverseitige Business Objects dynamisch aufrufen
Was bedeutet dynamisches Aufrufen?
Imaging Simplifier Integrationen fungieren als Middleware zwischen vielen verschiedenen Frontend-Anwendungen wie Online-Shops, und jeder einzelne Shop benötigt ein anderes Backend-System (über Konnektoren) oder eine andere Geschäftslogik.
Stellen wir uns das also vor:
Möglichkeiten dynamischer Anrufe
Wenn Sie ein Business Objekt dynamisch anlegen möchten, haben Sie drei Möglichkeiten
- Verwenden Sie Variablen für Business Objektnamen und -aufrufe anstelle von festen Namen
- Nutzen Sie unsere dynamische Call-Funktion
- Verwenden Sie einen Simplifier REST Connector, um Business Objects über unsere Client API auszuführen
In diesem Artikel werden die ersten beiden Optionen behandelt, die dritte Option wird aus Leistungsgründen nicht empfohlen und daher in dieser Dokumentation nicht behandelt.
Option 1: Business Objekte über Variablen aufrufen
In diesem Szenario rufen wir die Business Objekte mit Variablen für den Namen und den Aufruf auf
Präparat
Alle Business Objects, die auf diese Weise aufgerufen werden, müssen zuvor im Caller Business Objekt referenziert werden.
Bearbeiten Sie also das Quell-Business-Objekt, von dem aus Sie die anderen Business Objekte aufrufen, und fügen Sie sie den Referenzen hinzu:
Integration
Der dynamische Aufruf des Business Objekts hat die folgende Syntax
Simplifier.BusinessObject[sNameOfObject][sNameOfFunction](oPayload).return;
Beispiel
Lassen Sie uns einen kleinen Code für das Shop-Szenario erstellen, das in der Einleitung erläutert wird.
Wir decken 2 Shops ab, einen mit der ID 232 und einen mit der ID 453 – anstatt wie bei diesem dynamischen Aufruf ein Business Objekt
output.stock = Simplifier.BusinessObject.SAPERP.readStockStatusfromWM(oPayload).stock;
aufzurufen:
output.stock = Simplifier.BusinessObject[sBoName][sBoFunction](oPayload).stock;
Here the complete example: /** * This function acts as are generic api that is capable to read stock information from different backends depending on ShopID **/ try { let sBoName, sBoFunction; let oPayload = input; // check which shop are the requester switch (input.ShopID) { case 232: sBoName = "SAPERP"; sBoFunction = "readStockStatusfromWM"; break; case 453: sBoName = "Infor"; sBoFunction = "readStockfromIMHub"; break; default: // in case of no shop id , raise an error throw "Shop ID is not valid"; } // run Business Object dynamically output.stock = Simplifier.BusinessObject[sBoName][sBoFunction](oPayload).stock; } catch (e) { throw e.message; }
Option 2: Aufruf von Business Objekten mit dynamicBusinessObjectCall
In diesem Szenario rufen wir die Business Objects mit der Methode dynamicBusinessObjectCall auf.
Präparat
Um die neue Methode dynamicBusinessObjectCall verwenden zu können, müssen Sie in den Servereinstellungen die Einstellung “Dynamisches Aufrufen von serverseitigen Business Objekten erlauben” aktivieren.
Integration
Der dynamische Aufruf des Business Objekts hat die folgende Syntax
Simplifier.dynamicBusinessObjectCall("NameofConnector", "MethodName", $payload).return;
Beispiel
Lassen Sie uns einen kleinen Code für das Shop-Szenario erstellen, das in der Einleitung erläutert wird.
Wir decken 2 Shops ab, einen mit der ID 232 und einen mit der ID 453 – anstatt wie bei diesem dynamischen Aufruf ein Business Objekt
output.stock = Simplifier.BusinessObject.SAPERP.readStockStatusfromWM($payload).stock;
aufzurufen:
output.stock = Simplifier.dynamicBusinessObjectCall("SAPERP", "readStockStatusfromWM", $payload).stock;
Hier das komplette Beispiel:
/** * This function acts as are generic api that is capable to read stock information from different backends depending on ShopID **/ try { let sBoName, sBoFunction; let oPayload = input; // check which shop are the requester switch (input.ShopID) { case 232: sBoName= "SAPERP"; sBoFunction = "readStockStatusfromWM"; break; case 453: sBoName = "Infor"; sBoFunction = "readStockfromIMHub"; break; default: // in case of no shop id , raise an error throw "Shop ID is not valid"; } // run Business Object dynamically output.stock = Simplifier.dynamicBusinessObjectCall(sBoName,sBoFunction,oPayload).stock; } catch (e) { throw e.message; }