מוצג המסמך של 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 היא הגדרת פרמטרים שמציינים את הקלט, הפלט והפלט של המחרוזת, ומה לעשות עם הקלט.
מדיניות היתרונות המרכזיים של הזרימה
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>
התהליך המשותף הבא של
default
כולל מדיניות JavaScriptSharedStringFunctions
, שמופעלת כשמתבצעת קריאה לתהליך המשותף ממדיניות של FlowCallout.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <SharedFlow name="default"> <Step> <Name>SharedStringFunctions</Name> </Step> </SharedFlow>
בתהליך המשותף, נעשה שימוש במדיניות
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>
קוד ה-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);
- הביצוע חוזר ממדיניות 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>
<FlowCallout> מאפיינים
<FlowCallout async="false" continueOnError="false" enabled="true" name="Flow-Callout-1">
בטבלה הבאה מתוארים מאפיינים שמשותפים לכל רכיבי ההורה של המדיניות:
מאפיין | תיאור | ברירת מחדל | נוכחות |
---|---|---|---|
name |
השם הפנימי של המדיניות. הערך של המאפיין אפשר להשתמש ברכיב |
לא רלוונטי | חובה |
continueOnError |
צריך להגדיר את הערך יש להגדיר ל- |
false | אופציונלי |
enabled |
צריך להגדיר את הערך צריך להגדיר את הערך |
true | אופציונלי |
async |
המאפיין הזה הוצא משימוש. |
false | הוצא משימוש |
<DisplayName> רכיב
צריך להשתמש בנוסף למאפיין name
כדי להוסיף תווית למדיניות
עורך proxy של ממשק משתמש לניהול עם שם אחר בשפה טבעית.
<DisplayName>Policy Display Name</DisplayName>
ברירת מחדל |
לא רלוונטי אם משמיטים את הרכיב הזה, הערך של המאפיין |
---|---|
נוכחות | אופציונלי |
סוג | מחרוזת |
<SharedFlowBundle> רכיב
מציינת את השם של התהליך המשותף להתקשרות. הערך של הרכיב הזה צריך להיות זהה לערך של הרכיב של מאפיין השם של רכיב היעד SharedFlowBundle.
<SharedFlowBundle/>
בדוגמה הפשוטה ביותר, מציינים את השם של התהליך המשותף שרוצים לקרוא בתור ערך בשבילו
לרכיב מסוים. כלומר, הערך של הרכיב הזה צריך להיות זהה לערך name
של התהליך המשותף
כערך המאפיין.
<SharedFlowBundle>Shared-Flow-Name</SharedFlowBundle>
ברירת מחדל | לא רלוונטי |
נוכחות |
חובה. |
סוג | לא רלוונטי |
מאפיינים
ללא.
<Parameter> רכיב
מציין פרמטר וערך (או מקור ערך) שיועברו כמשתנה לתהליך המשותף שנקרא על ידי זה המדיניות בנושא
באמצעות פרמטר, אפשר לציין ערך (או משתנה שמכיל ערך) שצריך להיות מועברים לתהליך המשותף שנקרא על ידי המדיניות. הדבר דומה מבחינה רעיונית לציון בקריאה לפונקציה. בדומה לפרמטר של פונקציה, הערך של פרמטר 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>
ברירת מחדל | לא רלוונטי |
נוכחות |
חובה. |
סוג | לא רלוונטי |
מאפיינים
מאפיין | תיאור | ברירת מחדל | נוכחות | סוג |
---|---|---|---|---|
שם | השם של משתנה זמן הריצה שיש ליצור עם הפרמטר הזה. | ללא. | חובה. | מחרוזת |
אזכור |
המשתנה מכיל את הערך לשימוש בזמן הריצה. יש להשמיט את המאפיין הזה אם שמציין את הערך המילולי שבו יש להשתמש. |
ללא. | זה שינוי אופציונלי. | מחרוזת |
ערך | הערך שבו צריך להשתמש במשתנה זמן הריצה שנוצר באמצעות הפרמטר הזה. יש להשמיט את המאפיין הזה אם אתם מציינים את השם של המשתנה שאמור להיות מקור הערך. | ללא. | זה שינוי אופציונלי. | מחרוזת |
<Parameters> רכיב
מציינת את קבוצת הרכיבים של <Parameter> שיועברו כמשתנים לתהליך המשותף שנקרא על ידי הפונקציה המדיניות בנושא
תחביר
<Parameters> <Parameter name="parameter-name" value='parameter-value' /> </Parameters>
ברירת מחדל | לא רלוונטי |
נוכחות |
זה שינוי אופציונלי. |
סוג | לא רלוונטי |
מאפיינים
ללא.
סכימות
משתני זרימה
משתני זרימה מאפשרים התנהגות דינמית של כללי מדיניות וזרימה בזמן ריצה, על סמך HTTP כותרות, תוכן הודעה או הקשר זרימה. למידע נוסף על משתני זרימה, ראו הפניה למשתנים.
משתנה | תיאור |
---|---|
|
היקף: במהלך ביצוע התהליך המשותף ערך מאפיין השם של התהליך המשותף. |
|
היקף: במהלך ביצוע התהליך המשותף שמצורף לתהליך.
תוכן מושך. השם של קרס הזרימה. |
התייחסות לשגיאות
בקטע הזה מתוארים קודי התקלות והודעות השגיאה שמוחזרים, ומשתני השגיאה שמוגדרים על ידי Edge כשהמדיניות הזו גורמת לשגיאה. חשוב לדעת אם מפתחים כללים לתיקון תקלות. מידע נוסף זמין במאמר מה צריך לדעת על שגיאות מדיניות ועל טיפול בפגמים.
שגיאות בזמן ריצה
השגיאות האלה יכולות להתרחש כשהמדיניות מופעלת.
קוד שגיאה | סטטוס HTTP | סיבה | תיקון |
---|---|---|---|
flow.SharedFlowNotFound |
500 | התהליך המשותף לא קיים או שהתהליך המשותף קיים אבל לא נפרס. | build |
שגיאות בפריסה
לא רלוונטי
נושאים קשורים
- יצירת תהליכי עבודה משותפים: לשימוש חוזר תהליכי עבודה משותפים
- ביצוע תהליכים משותפים במספר שרתי proxy: צירוף תהליך משותף באמצעות הוק (hook) זרימה