מדיניות AssertCondition

מדיניות רגילה

הדף הזה רלוונטי ל-Apigee ול-Apigee Hybrid.

לעיון במסמכי התיעוד של Apigee Edge

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

אחרי הערכת התנאי, המדיניות AssertCondition שומרת את תוצאת ההערכה במשתנה של התהליך assertcondition.policy-name.truthValue. אפשר להשתמש במשתנה הזרימה שמתקבל בקריאות הבאות או בלוגיקה המתוזמרת. אם התנאי מתקיים, הערך של המשתנה מוגדר כ-true, אחרת הוא מוגדר כ-false. אם הגדרתם כמה כללי מדיניות מסוג AssertCondition, המשתנה policy-name בשם המשתנה עוזר לכם לזהות את המשתנה באופן ייחודי.

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

<AssertCondition>

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

התוצאה של משפט מותנה היא ערך בוליאני שיכול להיות true או false.
ערך ברירת המחדל לא רלוונטי
חובה? חובה
סוג סוג מורכב
רכיב אב לא רלוונטי
רכיבי צאצא <Condition>
<DisplayName>

בטבלה הבאה מפורטים רכיבי המשנה של <AssertCondition>:

רכיב צאצא חובה? תיאור
<Condition> כן מציינים את התנאי להערכה.
<DisplayName> אופציונלי שם מותאם אישית למדיניות.

רכיב <AssertCondition> משתמש בתחביר הבא:

תחביר

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssertCondition">
    <!-- Display name for this policy -->
    <DisplayName>DISPLAY_NAME</DisplayName>
    <!-- Assertion's condition where operators are defined -->
    <Condition>CONDITIONAL_STATEMENT</Condition>
</AssertCondition>

דוגמה

בדוגמה הבאה נבדק אם המשתנה google.dialogflow.my-prefix.claimAmount גדול מ-0 וקטן מ-1,000.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssertCondition continueOnError="false" enabled="true"
        name="MyAssertCondition">
    <DisplayName>Assert My Condition</DisplayName>
    <Condition>(google.dialogflow.my-prefix.claimAmount > 0)
                and
               (google.dialogflow.my-prefix.claimAmount LesserThan 1000)</Condition>
</AssertCondition>

בדוגמה הזו:

  • אם הערך של המשתנה google.dialogflow.my-prefix.claimAmount הוא 500, התנאי מחזיר true ולכן המשתנה assertcondition.MyAssertCondition.truthValue מוגדר כ-true.
  • אבל אם הערך של המשתנה google.dialogflow.my-prefix.claimAmount הוא 1200, המשתנה assertcondition.MyAssertCondition.truthValue מוגדר כ-false.

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

מאפיין ברירת מחדל חובה? תיאור
name לא רלוונטי חובה

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

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

continueOnError FALSE אופציונלי מגדירים את הערך false כדי להחזיר שגיאה אם המדיניות נכשלת. זו התנהגות צפויה ברוב המקרים. הגדרה ל-true מאפשרת להמשיך את הביצוע של התהליך גם אחרי שמדיניות נכשלת. מאמרים קשורים:
enabled TRUE אופציונלי מגדירים את הערך true כדי לאכוף את המדיניות, או את הערך false כדי להשבית את המדיניות. המדיניות לא נאכפת גם אם היא עדיין משויכת לזרימה.
async   FALSE הוצא משימוש המאפיין הזה הוצא משימוש.

הפניה לרכיב צאצא

בקטע הזה מתוארים רכיבי הבן של <AssertCondition>.

<Condition>

מציינים את התנאי להערכה. מידע נוסף על כתיבת הצהרה מותנית ב-Apigee זמין במאמר הפניה לתנאים.

ערך ברירת המחדל לא רלוונטי
חובה? חובה
סוג String
רכיב אב <AssertCondition>
רכיבי צאצא ללא

<DisplayName>

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

הרכיב <DisplayName> משותף לכל סוגי המדיניות.

ערך ברירת המחדל לא רלוונטי
חובה? זה שינוי אופציונלי. אם לא מציינים את <DisplayName>, המערכת משתמשת בערך של מאפיין name של המדיניות.
סוג String
רכיב אב <PolicyElement>
רכיבי צאצא ללא

רכיב <DisplayName> משתמש בתחביר הבא:

תחביר

<PolicyElement>
  <DisplayName>POLICY_DISPLAY_NAME</DisplayName>
  ...
</PolicyElement>

דוגמה

<PolicyElement>
  <DisplayName>My Validation Policy</DisplayName>
</PolicyElement>

לרכיב <DisplayName> אין מאפיינים או רכיבי צאצא.

קודי שגיאה

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

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

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

קוד תקלה סטטוס HTTP מטרה
steps.assertcondition.ConditionEvaluationFailed 500 הערכת המשפט המותנה נכשלה. יכולות להיות הרבה סיבות לשגיאה הזו, כולל ערכים שגויים במשתנים בזמן הריצה.

שגיאות בהטמעה

השגיאות האלה יכולות להתרחש כשפורסים שרת proxy שמכיל את המדיניות הזו.

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

משתני תקלות

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

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

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

משתנים כאשר: דוגמה
fault.name="FAULT_NAME" FAULT_NAME הוא שם התקלה, כפי שמופיע בטבלה Runtime errors. שם התקלה הוא החלק האחרון של קוד התקלה. fault.name Matches "ConditionEvaluationFailed"
AssertCondition.POLICY_NAME.failed POLICY_NAME הוא השם שהמשתמש הגדיר למדיניות שגרמה לשגיאה. AssertCondition.My-AssertCondition.failed = true
מידע נוסף על שגיאות שקשורות למדיניות זמין במאמר מה צריך לדעת על שגיאות שקשורות למדיניות.