FlowCallout-Richtlinie

Sie sehen die Dokumentation zu Apigee Edge.
Zur Apigee X-Dokumentation
weitere Informationen

Verwenden Sie die FlowCallout-Richtlinie, um einen freigegebenen Ablauf entweder von einem API-Proxy oder einem anderen freigegebenen Ablauf aufzurufen.

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. Die FlowCallout-Richtlinie bietet Ihnen die Möglichkeit, den freigegebenen Ablauf von API-Proxys und anderen freigegebenen Abläufen aufzurufen. Sie funktioniert wie Funktionsaufrufe in einer herkömmlichen Programmiersprache.

  • Angenommen, Sie haben einen freigegebenen Ablauf mit Sicherheitsfunktionen wie der Überprüfung von API-Schlüsseln, der OAuth-Token-Validierung und dem Schutz regulärer Ausdrücke erstellt. Dieser freigegebene Ablauf stellt Ihre Konvention zur Prüfung eingehender Anfragen dar. Mithilfe der 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 innerhalb eines freigegebenen Ablaufs eine FlowCallout-Richtlinie implementieren.

Samples

API-Schlüssel im freigegebenen Ablauf prüfen

In diesem Beispiel wird ein freigegebener Ablauf verwendet, um allgemeine sicherheitsbezogene Aufgaben auszuführen. Hier validiert der freigegebene Ablauf einen API-Schlüssel. API-Proxys und andere freigegebene Abläufe können die FlowCallout-Richtlinie verwenden, um Aufrufe an diesen freigegebenen Ablauf zu senden.

Die folgende Definition des freigegebenen Ablaufs enthält eine Verify-API-Key-Richtlinie, die ausgeführt wird, wenn der freigegebene Ablauf von einer FlowCallout-Richtlinie in einem API-Proxy aufgerufen wird.

<?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 einen freigegebenen Ablauf übergeben werden. Hier ruft eine FlowCallout-Richtlinie einen freigegebenen Ablauf auf, der zur Ausführung allgemeiner Funktionen zur Stringverarbeitung dient. Der freigegebene Ablauf umfasst JavaScript, das seine Eingabe verkettet, seine Eingabe in Kleinbuchstaben einschränkt oder beides. Die FlowCallout-Richtlinie definiert Parameter, die die Stringeingabe, -ausgabe und -eingabe festlegen.

  1. Die FlowCallout-Richtlinie String-Handler ruft den freigegebenen Ablauf auf und übergibt Parameter, die die Variable zum Speichern der Ausgabe des freigegebenen Ablaufs, den zu verwendenden Vorgang des freigegebenen Ablaufs und die zu verwendende Eingabe übergeben (hier ein Stringliteral, kann aber auch eine Ablaufvariable sein). Die Parameter-Elemente geben die Namen und Werte von Variablen an, 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>
    
  2. Der folgende freigegebene Ablauf default enthält die JavaScript-Richtlinie SharedStringFunctions, 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>
  3. 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>
  4. Der folgende JavaScript-Code, SharedStringFunctions.js, wird über die JavaScript-Richtlinie SharedStringFunctions ausgeführt. Dieses Skript ruft Werte aus Variablen ab, die aus den Parameter-Elementen der FlowCallout-Richtlinie 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);
  5. 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 name kann Buchstaben, Ziffern, Leerzeichen, Bindestriche, Unterstriche und Punkte enthalten. Dieser Wert darf 255 Zeichen nicht überschreiten.

Optional können Sie das Element <DisplayName> verwenden, um die Richtlinie im Proxy-Editor der Verwaltungs-UI mit einem anderen Namen in einer natürlichen Sprache zu versehen.

Erforderlich
continueOnError

Legen Sie false fest, um einen Fehler zurückzugeben, wenn eine Richtlinie fehlschlägt. Dies ist für die meisten Richtlinien das erwartete Verhalten.

Legen Sie true fest, damit die Ablaufausführung auch nach dem Fehlschlagen einer Richtlinie fortgesetzt wird.

false Optional
enabled

Setzen Sie den Wert auf true, um die Richtlinie zu erzwingen.

Legen Sie false fest, um die Richtlinie zu deaktivieren. Die Richtlinie wird nicht erzwungen, selbst wenn sie mit einem Ablauf verknüpft ist.

true Optional
async

Dieses Attribut wurde verworfen.

false Eingestellte Funktionen

<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>
Standard

Wenn Sie dieses Element weglassen, wird der Wert des Namensattributs name der Richtlinie verwendet.

Präsenz Optional
Typ String

<SharedFlowBundle> -Element

Gibt den Namen des gemeinsamen Aufrufs an, der aufgerufen werden soll. Der Wert dieses Elements muss mit dem Wert des Namensattributs des Ziel-SharedFlowBundle-Elements übereinstimmen.

<SharedFlowBundle/>

Im einfachsten Beispiel geben Sie den Namen des aufgerufenen freigegebenen Ablaufs als Wert für dieses Element an. Der Wert dieses Elements muss also mit dem Attributwert name des gemeinsamen Ablaufs übereinstimmen.

<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 bei einem Funktionsparameter kann der Wert eines FlowCallout-Parameters je nach Kontext des freigegebenen Ablaufaufrufs variieren.

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 String-Handler-FlowCallout-Richtlinie übergibt Parameter, die angeben, wo die Ausgabe des freigegebenen Ablaufs gespeichert werden soll und welche Eingabe verwendet werden soll. Die Parameter-Elemente geben die Namen und Werte von Variablen zum Erstellen der Laufzeit an. 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
value 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

apigee.edge.sharedflow.name

Umfang: Bei der Ausführung des freigegebenen Ablaufs
Typ: String
Berechtigung: Lesen

Wert des Namensattributs des freigegebenen Ablaufs

apigee.edge.flowhook.name

Bereich: Während der Ausführung des freigegebenen Ablaufs, der an den Ablauf-Hook angehängt ist.
Typ: String
Berechtigung: Lesen

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.

Bereitstellungsfehler

Weitere Informationen