Zasady dotyczące objaśnień przepływu

Przeglądasz dokumentację Apigee Edge.
Przejdź do Dokumentacja Apigee X.
informacje.

Użyj zasady FlowCallout, aby wywołać udostępniany przepływ z serwera proxy interfejsu API lub innego. wspólne przepływy pracy.

W ramach wspólnego procesu tworzysz sekwencję kroków do wykorzystania w czasie wykonywania z wielu miejsc. Te kroki są implementowane jako zasady, tak jak w serwerze proxy interfejsu API. Zasada FlowCallout umożliwia wywoływanie współdzielonego przepływu z serwerów proxy interfejsu API i innych współdzielonych przepływów. Działa jak wywołanie funkcji w tradycyjnym języku programowania.

  • Wyobraź sobie na przykład, że masz wspólny proces z funkcjami zabezpieczeń, takimi jak weryfikację klucza interfejsu API, weryfikację tokena OAuth i ochronę za pomocą wyrażeń regularnych. Ten udostępniony proces to Twoja konwencja sprawdzania żądań przychodzących. Dzięki zasadom FlowCallout możesz wywoływać ten wspólny przepływ z wielu serwerów proxy interfejsu API.
  • Możesz wywołać jeden udostępniony proces z innego, implementując zasadę Flowobjaśnienia z poziomu udostępnionego procesu. przepływu danych.
.

Przykłady

Zweryfikuj klucz interfejsu API w udostępnionym przepływie

W tym przykładzie wspólny przepływ jest używany do wykonywania typowych zadań związanych z bezpieczeństwem. Tutaj Wspólny przepływ weryfikuje klucz interfejsu API. Serwery proxy interfejsu API i inne współdzielone przepływy mogą używać rozszerzenia FlowCallout zgodnie z zasadami dotyczącymi korzystania ze wspólnego procesu.

Poniższa definicja przepływu współdzielonego zawiera zasadę Verify-API-Key, która jest wykonywana gdy udostępniany przepływ jest wywoływany z zasady FlowCallout na serwerze proxy API.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<SharedFlow name="default">
    <Step>
        <Name>Verify-API-Key</Name>
    </Step>
</SharedFlow>

Zasada VerifyAPIKey w ramach poprzedniego udostępnionego przepływu pobiera wartość klucza i zostanie potwierdzona.

<VerifyAPIKey async="false" continueOnError="false" enabled="true" name="Verify-API-Key">
    <DisplayName>Verify API Key</DisplayName>
    <APIKey ref="request.queryparam.apikey"/>
</VerifyAPIKey>

Poniższa zasada FlowCallout, używana na serwerze proxy interfejsu API, wywołuje poprzedni udostępniony przepływ do zweryfikować klucz interfejsu API. Pakiet przepływu współdzielonego (verify-apikey-shared) (niewidoczny tutaj) konfiguruje udostępniony przepływ tak, jak pakiet APIProxy konfiguruje serwer proxy.

<FlowCallout async="false" continueOnError="false" enabled="true" name="Auth-Flow-Callout">
    <DisplayName>Auth Flow Callout</DisplayName>
    <SharedFlowBundle>verify-apikey-shared</SharedFlowBundle>
</FlowCallout>

Przekazywanie parametrów do udostępnianego przepływu

Ten przykład pokazuje, jak przekazywać parametry z zasady FlowCallout do wspólne przepływy pracy. Tutaj zasada Flowobjaśnienia wywołuje wspólny proces mający na celu wykonanie wspólnych funkcje obsługi ciągów znaków. Wspólny przepływ obejmuje kod JavaScript, który łączy dane wejściowe, będzie zapisywać dane wejściowe małymi literami lub w obu tych miejscach. Zasada FlowCallout definiuje parametry określające dane wejściowe i wyjściowe oraz co z nimi zrobić.

  1. Zasada Flowobjaśnienia String-Handler wywołuje wspólny proces, przekazywanie parametrów określających zmienną do przechowywania danych wyjściowych wspólnego przepływu, a także oraz jakich danych wejściowych użyć (w tym przypadku może to być literał łańcuchowy, zmienną przepływu). Elementy Parameter określają nazwy i wartości zmiennych aby utworzyć środowisko wykonawcze. Wspólny przepływ może pobierać te zmienne do własnego kodu.

    <?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. Poniższy udostępniony przepływ default zawiera zasadę JavaScript SharedStringFunctions, która jest wykonywana, gdy wspólny przepływ jest wywoływany z zasady FlowCallout.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <SharedFlow name="default">
      <Step>
        <Name>SharedStringFunctions</Name>
      </Step>
    </SharedFlow>
  3. W ramach procesu współdzielonego następujące zasady JavaScriptu: SharedStringFunctions określa plik JavaScript SharedStringFunctions.js z kodem do wykonania.

    <?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. Poniższy kod JavaScript (SharedStringFunctions.js) jest wykonywany z SharedStringFunctions zasada JavaScript. Ten skrypt pobiera wartości z zmienne utworzone na podstawie elementów zasady FlowCallout Parameter.

    // 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. Wykonanie następuje z poziomu zasady JavaScriptu do wspólnego przepływu, a następnie do Zasada FlowCallout w źródłowym serwerze proxy interfejsu API.

Odwołanie do elementu

Oto elementy i atrybuty, które możesz skonfigurować w tej zasadzie:

<FlowCallout async="false" continueOnError="false" enabled="true" name="Flow-Callout-1">
    <DisplayName>Custom label used in UI</DisplayName>
    <SharedFlowBundle>thereferencedsharedflowbundle</SharedFlowBundle>
</FlowCallout>

&lt;FlowCallout&gt; atrybuty

<FlowCallout async="false" continueOnError="false" enabled="true" name="Flow-Callout-1">

W tej tabeli opisano atrybuty wspólne dla wszystkich elementów nadrzędnych zasad:

Atrybut Opis Domyślny Obecność
name

Wewnętrzna nazwa zasady. Wartość atrybutu name może zawierać litery, cyfry, spacje, łączniki, podkreślenia i kropki. Ta wartość nie może przekracza 255 znaków.

Opcjonalnie możesz użyć elementu <DisplayName> do oznaczenia zasady jako edytor proxy interfejsu zarządzania z inną nazwą w języku naturalnym.

Nie dotyczy Wymagane
continueOnError

Ustaw jako false, aby w przypadku niepowodzenia zasady zwracany był błąd. To normalne w przypadku większości zasad.

Ustaw jako true, aby wykonywanie przepływu było kontynuowane nawet po zastosowaniu zasady niepowodzenie.

fałsz Opcjonalnie
enabled

Aby egzekwować zasadę, ustaw wartość true.

Aby wyłączyć zasadę, ustaw wartość false. Te zasady nie będą jest wymuszane nawet wtedy, gdy jest ono połączone z przepływem.

prawda Opcjonalnie
async

Ten atrybut został wycofany.

fałsz Wycofano

&lt;DisplayName&gt; element

Używaj oprócz atrybutu name do oznaczania zasady w edytor proxy interfejsu zarządzania z inną nazwą w języku naturalnym.

<DisplayName>Policy Display Name</DisplayName>
Domyślny

Nie dotyczy

Jeśli pominiesz ten element, atrybut name zasady otrzyma wartość .

Obecność Opcjonalnie
Typ Ciąg znaków

&lt;SharedFlowBundle&gt; element

Określa nazwę udostępnianego przepływu, który ma zostać wywołany. Wartość tego elementu powinna być taka sama jak wartości atrybutu nazwy docelowego elementu SharedFlowBundle.

<SharedFlowBundle/>

W najprostszym przykładzie nadajesz nazwę udostępnianego przepływu, która jest wywoływana jako wartość dla tego procesu. . Oznacza to, że wartość tego elementu musi być taka sama jak wartość name przepływu wspólnego. .

<SharedFlowBundle>Shared-Flow-Name</SharedFlowBundle>
 
Domyślnie Nie dotyczy
Obecność

Wymagane.

Typ Nie dotyczy

Atrybuty

Brak.

&lt;Parameter&gt; element

Określa parametr i wartość (lub źródło wartości), które mają być przekazywane jako zmienna do udostępnianego przepływu wywoływanego przez tę funkcję. .

Za pomocą parametru możesz określić wartość (lub zmienną zawierającą wartość), która powinna być przekazywane do udostępnianego przepływu wywoływanego przez zasadę. Przypomina to koncepcyjnie określenie w wywołaniu funkcji. Tak jak w przypadku parametru funkcji, wartość parametru FlowCallout może być różnią się w zależności od kontekstu wspólnego wywołania procesu.

Parametry FlowCallout są widoczne tylko podczas wykonywania udostępnionego przepływu.

Składnia

Tego elementu możesz używać w dowolnej z podanych niżej form składni. Pamiętaj, że użyj wartości literału, format podanej wartości będzie zależny od kodu pochłaniają tę wartość.

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

Przykład

Ta zasada Flowobjaśnienia (String-Handler) przekazuje parametry, które określają, gdzie do przechowywania danych wyjściowych wspólnego przepływu i danych wejściowych, które mają być używane. Elementy Parameter określać nazwy i wartości zmiennych służące do utworzenia środowiska wykonawczego. Wspólny proces umożliwia pobieranie do użycia w osobnym kodzie.

<?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>
Domyślnie Nie dotyczy
Obecność

Wymagane.

Typ Nie dotyczy

Atrybuty

Atrybut Opis Domyślny Obecność Typ
nazwa Nazwa zmiennej środowiska wykonawczego, która ma zostać utworzona za pomocą tego parametru. Brak. Wymagane. Ciąg znaków
odsyłacz

Zmienna, która zawiera wartość do wykorzystania w czasie działania. Pomiń ten atrybut, jeśli określający do użycia wartość literału.

Brak. Opcjonalnie: Ciąg znaków
wartość Wartość używana w zmiennej środowiska wykonawczego utworzonej za pomocą tego parametru. Pomiń ten atrybut, jeśli określasz nazwę zmiennej, która powinna być źródłem wartości. Brak. Opcjonalnie: Ciąg znaków

&lt;Parameters&gt; element

Określa zestaw elementów &lt;Parameter&gt;, które mają być przekazywane jako zmienne do udostępnianego przepływu wywoływanego przez ten parametr. .

Składnia

<Parameters>
  <Parameter name="parameter-name" value='parameter-value' />
</Parameters>
Domyślnie Nie dotyczy
Obecność

Opcjonalnie:

Typ Nie dotyczy

Atrybuty

Brak.

Schematy

Zmienne przepływu

Zmienne przepływu umożliwiają dynamiczne zachowanie zasad i przepływów w czasie działania na podstawie protokołu HTTP nagłówków, treści wiadomości czy kontekstu przepływu. Więcej informacji o zmiennych Flow: Informacje o zmiennych.

Zmienna Opis

apigee.edge.sharedflow.name

Zakres: podczas wykonywania udostępnionego przepływu
Typ: ciąg znaków
Uprawnienia: Odczyt

Wartość atrybutu nazwa przepływu współdzielonego.

apigee.edge.flowhook.name

Zakres: podczas wykonywania udostępnionego przepływu powiązanego z przepływem. zaczepienie.
Typ: ciąg znaków
Uprawnienia: Odczyt

Nazwa punktu zaczepienia przepływu.

Informacje o błędzie

W tej sekcji opisujemy kody błędów i komunikaty o błędach, które są zwracane, a także zmienne błędów ustawiane przez Edge, gdy ta zasada aktywuje błąd. Te informacje są ważne, jeśli opracowujesz reguły dotyczące błędów do obsługi błędów. Więcej informacji znajdziesz w sekcjach Co musisz wiedzieć o błędach zasad i Postępowanie w przypadku błędów.

Błędy w czasie wykonywania

Te błędy mogą wystąpić podczas wykonywania zasady.

Kod błędu Stan HTTP Przyczyna Napraw
flow.SharedFlowNotFound 500 Przepływ udostępniony nie istnieje albo przepływ udostępniony istnieje, ale nie został wdrożony.

Błędy wdrażania

Nie dotyczy

Powiązane artykuły