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

כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של Apigee X.
מידע

אפשר להשתמש במדיניות 'הסבר על הזרימה' כדי להפעיל זרימה משותפת משרת Proxy של API או בתהליך משותף אחר.

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

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

טעימות

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

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

ההגדרה הבאה של תהליך משותף כוללת מדיניות Verify-API-Key שמופעלת כשהתהליך המשותף מופעל ממדיניות של הסבר על זרימה בשרת 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>

במדיניות הבאה של הסבר על תהליך הזרימה, המשמשת בשרת 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 שמשורשר את הקלט שלו, מצמצם את הקלט שלו באותיות קטנות, או את שניהם. המדיניות הזו מגדירה פרמטרים שמציינים את הקלט והפלט של המחרוזת, ומה לעשות עם הקלט.

  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 שמופעלת כשהתהליך המשותף מופעל ממדיניות של הסבר על זרימה.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <SharedFlow name="default">
      <Step>
        <Name>SharedStringFunctions</Name>
      </Step>
    </SharedFlow>
  3. בתהליך המשותף, מדיניות ה-JavaScript הבאה 'SharedStringFunctions' מציינת את קובץ ה-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, מופעל מהמדיניות SharedStringFunctions של JavaScript. הסקריפט מאחזר ערכים ממשתנים שנוצרו מרכיבי 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, אל התהליך המשותף ולאחר מכן אל המדיניות 'הסבר על הזרימה' בשרת ה-proxy המקורי.

הפניה לרכיב

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

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

מאפייני <FlowCallout>

<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 הוצא משימוש

רכיב <DisplayName>

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

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

לא רלוונטי

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

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

רכיב <SharedFlowBundle>

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

<SharedFlowBundle/>

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

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

חובה.

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

מאפיינים

ללא.

רכיב <Parameter>

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

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

הפרמטרים של הסבר על הזרימה מופיעים רק במהלך הביצוע של הזרימה המשותפת.

תחביר

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

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

חובה.

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

מאפיינים

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

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

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

רכיב <Parameters>

מציינת את קבוצת רכיבי <Parameter> שיש להעביר כמשתנים לתהליך המשותף שנקרא על ידי המדיניות הזו.

תחביר

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

אפשרות.

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

מאפיינים

ללא.

סכימות

משתני זרימה

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

משתנה התיאור

apigee.edge.sharedflow.name

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

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

apigee.edge.flowhook.name

היקף: במהלך הביצוע של תהליך העבודה המשותף שמצורף ל-hook של הזרימה.
Type: מחרוזת
הרשאה: קריאה

השם של הוך לזרימה.

הפניה לשגיאות

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

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

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

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

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

לא רלוונטי

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