המדיניות בנושא יתרונות מרכזיים של זרימה

מוצג המסמך של Apigee Edge.
עוברים אל מסמכי תיעוד של Apigee X.
מידע

להשתמש במדיניות FlowCallout כדי להפעיל תהליך משותף דרך שרת proxy של API או תהליך משותף.

בתהליך משותף, יוצרים רצף של שלבים שאפשר לעשות בהם שימוש חוזר בזמן הריצה מכמה במקומות שונים. השלבים האלה מוטמעים ככללי מדיניות, כמו בשרת proxy ל-API. המדיניות בנושא יתרונות מרכזיים של זרימה מאפשרות להפעיל את התהליך המשותף משרתי API ומתהליכים משותפים אחרים. היא פועלת כמו שליחת פונקציה בשפת תכנות מסורתית.

  • לדוגמה, נניח שיצרתם תהליך משותף עם תכונות אבטחה כמו אימות של מפתח API, אימות אסימון OAuth והגנה על ביטויים רגולריים. התהליך המשותף הזה מייצג את המוסכמה שלכם לגבי דרך לבדוק בקשות נכנסות. באמצעות המדיניות FlowCallout, אפשר להפעיל את התהליך המשותף מכמה שרתי proxy ל-API.
  • כדי להפעיל תהליך משותף אחד משני, אפשר להטמיע מדיניות בנושא יתרונות מרכזיים של זרימה מתוך תהליך עבודה משותף .

דוגמאות

אימות מפתח ה-API בתהליך המשותף

בדוגמה הזו, תהליך משותף משמש לביצוע משימות נפוצות שקשורות לאבטחה. כאן תהליך משותף מאמת מפתח API. שרתי proxy ל-API ותהליכים משותפים אחרים יכולים להשתמש בתוסף היתרונות המרכזיים של ה-flow. לביצוע קריאות לתהליך המשותף הזה.

הגדרת התהליך המשותף הבא כוללת מדיניות Verify-API-Key שמופעלת כשהתהליך המשותף נקרא ממדיניות FlowCallout בו-זמנית בשרת proxy ל-API.

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

המדיניות VerifyAPIKey בתהליך המשותף הקודם מאחזרת את ערך המפתח, מאמת אותו.

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

המדיניות הבאה של FlowCallout, שבה נעשה שימוש בשרת proxy ל-API, מפעילה את התהליך המשותף הקודם אל לאמת את מפתח ה-API. חבילת התהליך המשותף verify-apikey-shared (לא מוצגת כאן) מגדירה את התהליך המשותף באופן שבו חבילת APIProxy מגדירה שרת proxy.

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

העברת פרמטרים לתהליך משותף

דוגמה זו ממחישה כיצד להעביר פרמטרים ממדיניות יתרונות מרכזיים של זרימה תהליך משותף. כאן, המדיניות בנושא יתרונות מרכזיים של זרימה מתייחסת לתהליך משותף שנועד לספק פונקציות של טיפול במחרוזות. התהליך המשותף כולל JavaScript שמשרשר את הקלט, באותיות קטנות, או את שניהם. המדיניות FlowCallout היא הגדרת פרמטרים שמציינים את הקלט, הפלט והפלט של המחרוזת, ומה לעשות עם הקלט.

  1. מדיניות היתרונות המרכזיים של הזרימה String-Handler קוראת את התהליך המשותף, העברת פרמטרים שמציינים את המשתנה לאחסון הפלט של התהליך המשותף, מהו התהליך המשותף ואיזה קלט להשתמש בו (כאן, ליטרל מחרוזת, אבל הוא יכול להיות גם ). רכיבי Parameter מציינים את השמות והערכים של המשתנים כדי ליצור סביבת זמן ריצה. בתהליך המשותף יש אפשרות לאחזר את המשתנים האלה לצורך שימוש בקוד נפרד.

    <?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. התהליך המשותף הבא של default כולל מדיניות JavaScript SharedStringFunctions, שמופעלת כשמתבצעת קריאה לתהליך המשותף ממדיניות של FlowCallout.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <SharedFlow name="default">
      <Step>
        <Name>SharedStringFunctions</Name>
      </Step>
    </SharedFlow>
  3. בתהליך המשותף, נעשה שימוש במדיניות SharedStringFunctions הבאה של JavaScript מציין את קובץ ה-JavaScript של SharedStringFunctions.js עם הקוד להפעלה.

    <?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. קוד ה-JavaScript הבא, SharedStringFunctions.js, מבצע מתוך מדיניות JavaScript SharedStringFunctions. הסקריפט הזה מאחזר ערכים מ- משתנים שנוצרו מרכיבי 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. הביצוע חוזר ממדיניות JavaScript, לתהליך המשותף ואז אל מדיניות FlowCallout בו-זמנית בשרת ה-proxy המקורי של ה-API.

הפניה לרכיב

בהמשך מפורטים הרכיבים והמאפיינים שאפשר להגדיר במדיניות הזו:

<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; מאפיינים

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

בטבלה הבאה מתוארים מאפיינים שמשותפים לכל רכיבי ההורה של המדיניות:

מאפיין תיאור ברירת מחדל נוכחות
name

השם הפנימי של המדיניות. הערך של המאפיין name יכול לכלול אותיות, מספרים, רווחים, מקפים, קווים תחתונים ונקודות. הערך הזה לא יכול ארוך מ-255 תווים.

אפשר להשתמש ברכיב <DisplayName> כדי להוסיף תווית למדיניות עורך ה-Proxy של ממשק המשתמש לניהול בעל שם אחר בשפה טבעית.

לא רלוונטי חובה
continueOnError

צריך להגדיר את הערך false כדי להחזיר שגיאה כשמדיניות נכשלת. המצב הזה צפוי של רוב כללי המדיניות.

יש להגדיר ל-true כדי שביצוע התהליך יימשך גם לאחר המדיניות נכשל.

false אופציונלי
enabled

צריך להגדיר את הערך true כדי לאכוף את המדיניות.

צריך להגדיר את הערך false כדי להשבית את המדיניות. המדיניות לא תהיה אכיפה גם אם היא ממשיכה להיות מחוברת לזרימה.

true אופציונלי
async

המאפיין הזה הוצא משימוש.

false הוצא משימוש

&lt;DisplayName&gt; רכיב

צריך להשתמש בנוסף למאפיין name כדי להוסיף תווית למדיניות עורך proxy של ממשק משתמש לניהול עם שם אחר בשפה טבעית.

<DisplayName>Policy Display Name</DisplayName>
ברירת מחדל

לא רלוונטי

אם משמיטים את הרכיב הזה, הערך של המאפיין name של המדיניות הוא בשימוש.

נוכחות אופציונלי
סוג מחרוזת

&lt;SharedFlowBundle&gt; רכיב

מציינת את השם של התהליך המשותף להתקשרות. הערך של הרכיב הזה צריך להיות זהה לערך של הרכיב של מאפיין השם של רכיב היעד SharedFlowBundle.

<SharedFlowBundle/>

בדוגמה הפשוטה ביותר, מציינים את השם של התהליך המשותף שרוצים לקרוא בתור ערך בשבילו לרכיב מסוים. כלומר, הערך של הרכיב הזה צריך להיות זהה לערך name של התהליך המשותף כערך המאפיין.

<SharedFlowBundle>Shared-Flow-Name</SharedFlowBundle>
 
ברירת מחדל לא רלוונטי
נוכחות

חובה.

סוג לא רלוונטי

מאפיינים

ללא.

&lt;Parameter&gt; רכיב

מציין פרמטר וערך (או מקור ערך) שיועברו כמשתנה לתהליך המשותף שנקרא על ידי זה המדיניות בנושא

באמצעות פרמטר, אפשר לציין ערך (או משתנה שמכיל ערך) שצריך להיות מועברים לתהליך המשותף שנקרא על ידי המדיניות. הדבר דומה מבחינה רעיונית לציון בקריאה לפונקציה. בדומה לפרמטר של פונקציה, הערך של פרמטר FlowCallout ישתנו בהתאם להקשר של הפעלת התהליך המשותף.

הפרמטרים של FlowCallout גלויים רק במהלך ביצוע התהליך המשותף.

תחביר

אפשר להשתמש ברכיב הזה עם כל אחד מטופסי התחביר הבאים. שימו לב שכאשר בערך מילולי, הפורמט של הערך שתציינו יהיה תלוי בקוד שצורכת אותו.

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

דוגמה

המדיניות הזו, String-Handler, בנושא יתרונות מרכזיים של יתרונות מרכזיים, מעבירים פרמטרים שמציינים איפה כדי לאחסן את הפלט של התהליך המשותף ובאיזה קלט להשתמש. הרכיבים Parameter לציין את השמות והערכים של המשתנים כדי ליצור זמן ריצה. בתהליך המשותף ניתן לאחזר את המשתנים האלה לשימוש בקוד נפרד.

<?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>
ברירת מחדל לא רלוונטי
נוכחות

חובה.

סוג לא רלוונטי

מאפיינים

מאפיין תיאור ברירת מחדל נוכחות סוג
שם השם של משתנה זמן הריצה שיש ליצור עם הפרמטר הזה. ללא. חובה. מחרוזת
אזכור

המשתנה מכיל את הערך לשימוש בזמן הריצה. יש להשמיט את המאפיין הזה אם שמציין את הערך המילולי שבו יש להשתמש.

ללא. זה שינוי אופציונלי. מחרוזת
ערך הערך שבו צריך להשתמש במשתנה זמן הריצה שנוצר באמצעות הפרמטר הזה. יש להשמיט את המאפיין הזה אם אתם מציינים את השם של המשתנה שאמור להיות מקור הערך. ללא. זה שינוי אופציונלי. מחרוזת

&lt;Parameters&gt; רכיב

מציינת את קבוצת הרכיבים של &lt;Parameter&gt; שיועברו כמשתנים לתהליך המשותף שנקרא על ידי הפונקציה המדיניות בנושא

תחביר

<Parameters>
  <Parameter name="parameter-name" value='parameter-value' />
</Parameters>
ברירת מחדל לא רלוונטי
נוכחות

זה שינוי אופציונלי.

סוג לא רלוונטי

מאפיינים

ללא.

סכימות

משתני זרימה

משתני זרימה מאפשרים התנהגות דינמית של כללי מדיניות וזרימה בזמן ריצה, על סמך HTTP כותרות, תוכן הודעה או הקשר זרימה. למידע נוסף על משתני זרימה, ראו הפניה למשתנים.

משתנה תיאור

apigee.edge.sharedflow.name

היקף: במהלך ביצוע התהליך המשותף
סוג: String
הרשאה: קריאה

ערך מאפיין השם של התהליך המשותף.

apigee.edge.flowhook.name

היקף: במהלך ביצוע התהליך המשותף שמצורף לתהליך. תוכן מושך.
סוג: מחרוזת
הרשאה: קריאה

השם של קרס הזרימה.

התייחסות לשגיאות

בקטע הזה מתוארים קודי התקלות והודעות השגיאה שמוחזרים, ומשתני השגיאה שמוגדרים על ידי Edge כשהמדיניות הזו גורמת לשגיאה. חשוב לדעת אם מפתחים כללים לתיקון תקלות. מידע נוסף זמין במאמר מה צריך לדעת על שגיאות מדיניות ועל טיפול בפגמים.

שגיאות בזמן ריצה

השגיאות האלה יכולות להתרחש כשהמדיניות מופעלת.

קוד שגיאה סטטוס HTTP סיבה תיקון
flow.SharedFlowNotFound 500 התהליך המשותף לא קיים או שהתהליך המשותף קיים אבל לא נפרס.

שגיאות בפריסה

לא רלוונטי

נושאים קשורים