<ph type="x-smartling-placeholder"></ph>
Sie sehen die Dokumentation zu Apigee Edge.
Gehen Sie zur
Apigee X-Dokumentation. Weitere Informationen
Die FlowCallout-Richtlinie verwenden, um einen freigegebenen Ablauf von einem API-Proxy oder einem anderen aus aufzurufen freigegebenen Ablauf.
In einem freigegebenen Ablauf erstellen Sie eine Reihe von Schritten, die Sie bei der Ausführung an verschiedenen Orten wiederverwenden können. Diese Schritte werden wie Richtlinien als API-Proxy implementiert. FlowCallout-Richtlinie können Sie den freigegebenen Ablauf über API-Proxys und andere freigegebene Abläufe aufrufen. Sie funktioniert wie Funktionsaufrufe in einer herkömmlichen Programmiersprache.
- Stellen Sie sich beispielsweise vor, Sie haben einen freigegebenen Ablauf mit Sicherheitsfunktionen wie Überprüfung von API-Schlüsseln, OAuth-Token-Validierung und Schutz vor regulären Ausdrücken Dieser freigegebene Ablauf stellt Ihre Konvention zur Überprüfung eingehender Anfragen dar. Mit den FlowCallout-Richtlinien können Sie diesen freigegebenen Ablauf von mehreren API-Proxys aus aufrufen.
- Sie können einen freigegebenen Ablauf aus einem anderen aufrufen, indem Sie eine FlowCallout-Richtlinie innerhalb eines freigegebenen Ablaufs implementieren. Ablauf.
Beispiele
API-Schlüssel im freigegebenen Ablauf prüfen
In diesem Beispiel wird ein freigegebener Ablauf verwendet, um allgemeine sicherheitsbezogene Aufgaben auszuführen. Hier Mit dem freigegebenen Ablauf wird ein API-Schlüssel validiert. API-Proxys und andere freigegebene Abläufe können das FlowCallout verwenden Richtlinie verwendet, um Aufrufe an diesen freigegebenen Ablauf zu senden.
Die folgende Definition des freigegebenen Ablaufs enthält eine Verify-API-Key
-Richtlinie, die
Der freigegebene Ablauf wird über eine FlowCallout-Richtlinie in einem API-Proxy aufgerufen.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <SharedFlow name="default"> <Step> <Name>Verify-API-Key</Name> </Step> </SharedFlow>
Die VerifyAPIKey
-Richtlinie im vorherigen freigegebenen Ablauf ruft den Schlüsselwert ab und überprüft ihn.
<VerifyAPIKey async="false" continueOnError="false" enabled="true" name="Verify-API-Key"> <DisplayName>Verify API Key</DisplayName> <APIKey ref="request.queryparam.apikey"/> </VerifyAPIKey>
Mit der folgenden FlowCallout-Richtlinie, die in einem API-Proxy verwendet wird, wird der vorherige freigegebene Ablauf aufgerufen, um den API-Schlüssel zu prüfen. Das freigegebene Ablauf-Bundle verify-apikey-shared
(hier nicht gezeigt) konfiguriert den freigegebenen Ablauf so, wie ein API-Proxy-Bundle einen Proxy konfiguriert.
<FlowCallout async="false" continueOnError="false" enabled="true" name="Auth-Flow-Callout"> <DisplayName>Auth Flow Callout</DisplayName> <SharedFlowBundle>verify-apikey-shared</SharedFlowBundle> </FlowCallout>
Übergeben Sie Parameter an einen freigegebenen Ablauf
Dieses Beispiel zeigt, wie Parameter von einer FlowCallout-Richtlinie an eine freigegebenen Ablauf. Hier ruft eine FlowCallout-Richtlinie einen gemeinsamen Ablauf auf, der allgemeine Funktionen zur Zeichenfolgenbehandlung. Der freigegebene Ablauf umfasst JavaScript, das seine Eingabe verkettet, seine Eingabe in Kleinbuchstaben einschränkt oder beides. Die FlowCallout-Richtlinie definiert Parameter, die eine die Eingabe des Strings und die Ausgabe und was mit der Eingabe geschehen soll.
Die FlowCallout-Richtlinie
String-Handler
ruft den freigegebenen Ablauf auf. Parameter übergeben, mit denen die Variable zum Speichern der Ausgabe des freigegebenen Ablaufs, des freigegebenen Ablaufs Operation und welche Eingabe zu verwenden ist (hier ein String-Literal, aber auch ein Flow-Variable). Mit denParameter
-Elementen werden die Namen und Werte von Variablen angegeben um eine Laufzeit zu erstellen. Der freigegebene Ablauf kann diese Variablen zur Verwendung in ihrem eigenen Code abrufen.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <FlowCallout async="false" continueOnError="false" enabled="true" name="String-Handler"> <DisplayName>String Handler</DisplayName> <Parameters> <Parameter name="input">Gladys Kravitz</Parameter> <Parameter name="operations">concatenate tolowercase</Parameter> <Parameter name="outputVariable">string.handler.output</Parameter> </Parameters> <SharedFlowBundle>StringHandler</SharedFlowBundle> </FlowCallout>
Der folgende freigegebene Ablauf von
default
enthält eine JavaScript-RichtlinieSharedStringFunctions
, die ausgeführt wird, wenn der freigegebene Ablauf über eine FlowCallout-Richtlinie aufgerufen wird.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <SharedFlow name="default"> <Step> <Name>SharedStringFunctions</Name> </Step> </SharedFlow>
Im freigegebenen Ablauf gibt die folgende JavaScript-Richtlinie
SharedStringFunctions
die JavaScript-Datei SharedStringFunctions.js mit dem auszuführenden Code an.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="SharedStringFunctions"> <DisplayName>SharedStringFunctions</DisplayName> <Properties/> <ResourceURL>jsc://SharedStringFunctions.js</ResourceURL> </Javascript>
Der folgende JavaScript-Code, SharedStringFunctions.js, wird über den JavaScript-Richtlinie für
SharedStringFunctions
. Dieses Skript ruft Werte aus Variablen, die aus Elementen der FlowCallout-RichtlinieParameter
erstellt wurden.// Input value from the calling API proxy. var handledString = context.getVariable("input"); // Variable to use for output from this script. var outputVariable = context.getVariable("outputVariable"); // A space-separated list of things to do to the input string. // Convert to lower case to handle unintentional capitals in configuration. var operation = context.getVariable("operations").toLowerCase(); // If "lowercase" was given as an operation, convert the input to lowercase. if (operation.includes("tolowercase")) { handledString = handledString.toLowerCase(); } // If "concatenate" was given as an operation, concatenate the input. if (operation.includes("concatenate")) { handledString = handledString.replace(/\s+/g, ''); } // Assign the resulting string to the output variable specified by // the calling API proxy. context.setVariable(outputVariable, handledString);
- Die Ausführung fließt von der JavaScript-Richtlinie zurück zum freigegebenen Ablauf und dann zur FlowCallout-Richtlinie im ursprünglichen API-Proxy.
Elementreferenz
Die folgenden Elemente und Attribute können Sie für diese Richtlinie konfigurieren:
<FlowCallout async="false" continueOnError="false" enabled="true" name="Flow-Callout-1"> <DisplayName>Custom label used in UI</DisplayName> <SharedFlowBundle>thereferencedsharedflowbundle</SharedFlowBundle> </FlowCallout>
<FlowCallout>-Attribute
<FlowCallout async="false" continueOnError="false" enabled="true" name="Flow-Callout-1">
In der folgenden Tabelle werden Attribute beschrieben, die für alle übergeordneten Richtlinienelemente gelten:
Attribut | Beschreibung | Standard | Präsenz |
---|---|---|---|
name |
Der interne Name der Richtlinie. Der Wert des Attributs Optional können Sie das Element |
– | Erforderlich |
continueOnError |
Legen Sie Legen Sie |
false | Optional |
enabled |
Setzen Sie den Wert auf Legen Sie |
true | Optional |
async |
Dieses Attribut wurde verworfen. |
false | Veraltet |
<DisplayName>-Element
Wird zusätzlich zum Attribut name
verwendet, um die Richtlinie im Proxy-Editor der Verwaltungs-UI mit einem anderen Namen in einer natürlichen Sprache zu versehen.
<DisplayName>Policy Display Name</DisplayName>
Standardeinstellung |
– Wenn Sie dieses Element weglassen, wird der Wert des Namensattributs |
---|---|
Präsenz | Optional |
Typ | String |
<SharedFlowBundle> -Element
Gibt den Namen des gemeinsamen Aufrufs an, der aufgerufen werden soll. Der Wert dieses Elements sollte mit dem -Wert des Namensattributs des Ziel-SharedFlowBundle-Elements.
<SharedFlowBundle/>
Im einfachsten Beispiel geben Sie den Namen des freigegebenen Ablaufs, der aufgerufen wird, als Wert für dieses
-Elements. Das heißt, der Wert dieses Elements muss mit dem name
des freigegebenen Ablaufs übereinstimmen
Attributwert
<SharedFlowBundle>Shared-Flow-Name</SharedFlowBundle>
Standard | – |
Präsenz |
Erforderlich. |
Typ | – |
Attribute
–
<Parameter>-Element
Gibt einen Parameter und einen Wert (oder eine Wertquelle) an, die als Variable an den gemeinsamen Ablauf übergeben werden sollen, der von dieser Richtlinie aufgerufen wird.
Mit einem Parameter können Sie einen Wert (oder eine Variable mit einem Wert) festlegen, die an den von der Richtlinie aufgerufenen freigegebenen Ablauf übergeben wird. Dies ist konzeptionell ähnlich wie die Angabe eines Parameters in einem Funktionsaufruf. Wie ein Funktionsparameter kann der Wert eines FlowCallout-Parameters variieren je nach Kontext des freigegebenen Ablaufs.
FlowCallout-Parameter sind nur während der Ausführung des freigegebenen Ablaufs sichtbar.
Syntax
Sie können dieses Element mit einem der folgenden Syntaxformen verwenden. Wenn Sie einen Literalwert verwenden, hängt das Format des angegebenen Werts vom Code ab, der ihn verwendet.
<!- A literal value in an attribute. --/> <Parameter name="parameter-name" value='parameter-value' /> <!- A reference to a variable in an attribute. --/> <Parameter name="parameter-name" ref='source-variable-name' /> <!- A literal value in the element content. --/> <Parameter name="parameter-name">parameter-value</Parameter> <!- An reference to an attribute in the element content. --/> <Parameter name="parameter-name">{source-variable-name}</Parameter>
Beispiel
Diese FlowCallout-Richtlinie vom Typ String-Handler
übergibt Parameter, die angeben, wo
zum Speichern der Ausgabe des freigegebenen Ablaufs und der zu verwendenden Eingabe. Die Parameter
-Elemente
die Namen und Werte von Variablen angeben, um die Laufzeit zu erstellen. Der freigegebene Ablauf kann diese Variablen zur Verwendung in ihrem eigenen Code abrufen.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <FlowCallout async="false" continueOnError="false" enabled="true" name="String-Handler"> <DisplayName>String Handler</DisplayName> <Parameters> <Parameter name="input">Gladys Kravitz</Parameter> <Parameter name="outputVariable">string.handler.output</Parameter> </Parameters> <SharedFlowBundle>StringHandler</SharedFlowBundle> </FlowCallout>
Standard | – |
Präsenz |
Erforderlich. |
Typ | – |
Attribute
Attribut | Beschreibung | Standard | Präsenz | Typ |
---|---|---|---|---|
Name | Der Name der Laufzeitvariable, die mit diesem Parameter erstellt werden soll. | – | Erforderlich. | String |
Ref |
Die Variable enthält den Wert, der zur Laufzeit verwendet werden soll. Lassen Sie dieses Attribut weg, wenn Sie einen Literalwert angeben, der verwendet werden soll. |
– | Optional. | String |
Wert | Der Wert, der in der Laufzeitvariable, die mit diesem Parameter erstellt wurde, verwendet werden soll. Lassen Sie dieses Attribut weg, wenn Sie den Namen einer Variable angeben, die die Wertquelle sein soll. | – | Optional. | String |
<Parameter>-Element
Gibt den Satz von <Parameter>-Elementen an, die als Variablen in den von dieser Richtlinie aufgerufenen freigegebenen Ablauf übergeben werden sollen.
Syntax
<Parameters> <Parameter name="parameter-name" value='parameter-value' /> </Parameters>
Standard | – |
Präsenz |
Optional. |
Typ | – |
Attribute
–
Schemas
Ablaufvariablen
Ablaufvariablen ermöglichen ein dynamisches Verhalten von Richtlinien und Abläufen zur Laufzeit, basierend auf HTTP-Headern, Nachrichteninhalten oder dem Ablaufkontext. Weitere Informationen zu Ablaufvariablen finden Sie in der Variablenreferenz.
Variable | Beschreibung |
---|---|
|
Umfang: Bei der Ausführung des freigegebenen Ablaufs Wert des Namensattributs des freigegebenen Ablaufs |
|
Bereich: Während der Ausführung des freigegebenen Ablaufs, der an den Ablauf-Hook angehängt ist. Der Name des Ablauf-Hooks. |
Fehlerreferenz
In diesem Abschnitt werden die Fehlercodes und Fehlermeldungen beschrieben, die zurückgegeben werden, sowie die Fehlervariablen, die von Edge festgelegt werden, wenn diese Richtlinie einen Fehler auslöst. Diese Informationen sind wichtig, wenn Sie Fehlerregeln zur Verarbeitung von Fehlern entwickeln. Weitere Informationen finden Sie unter Was Sie über Richtlinienfehler wissen müssen und Fehler beheben.
Laufzeitfehler
Diese Fehler können bei Ausführung der Richtlinie auftreten.
Fehlercode | HTTP-Status | Ursache | Problembehebung |
---|---|---|---|
flow.SharedFlowNotFound |
500 | Entweder ist der freigegebene Ablauf nicht vorhanden oder der freigegebene Ablauf existiert, ist aber nicht bereitgestellt. | build |
Bereitstellungsfehler
–
Weitere Informationen
- Freigegebene Abläufe erstellen: Wiederverwendbar freigegebene Abläufe
- Freigegebene Abläufe auf mehreren Proxys ausführen: Freigegebene Abläufe mithilfe eines Ablauf-Hooks anhängen