הפעלת תהליך עבודה

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

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

לפני שמתחילים

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

  1. נכנסים לחשבון Google Cloud . אנחנו ממליצים למשתמשים חדשים ב- Google Cloud ליצור חשבון כדי שיוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. אם תהליך העבודה ניגש למשאבים אחרים Google Cloud , צריך לוודא שהוא משויך לחשבון שירות עם ההרשאות הנכונות. כדי לדעת איזה חשבון שירות משויך לתהליך עבודה קיים, אפשר לעיין במאמר אימות חשבון השירות שמשויך לתהליך עבודה.

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

  7. פורסים את זרימת העבודה באמצעות Google Cloud מסוף או Google Cloud CLI.

ביצוע של תהליך עבודה

אפשר להריץ תהליך עבודה בדרכים הבאות:

  • במסוף Google Cloud
  • באמצעות Google Cloud CLI בטרמינל או ב-Cloud Shell
  • שליחת בקשה ישירה ל-Workflows API

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

המסוף

  1. כדי להפעיל תהליך עבודה, במסוף Google Cloud , נכנסים לדף Workflows:

    כניסה לדף Workflows

  2. בדף Workflows, בוחרים תהליך עבודה כדי לעבור לדף הפרטים שלו.

  3. בדף פרטי תהליך העבודה, לוחצים על הפעלה.

  4. בדף Execute workflow (הפעלת תהליך העבודה), בחלונית Input (קלט), אפשר להזין ארגומנטים אופציונליים של זמן ריצה כדי להעביר אותם לתהליך העבודה לפני ההפעלה. הארגומנטים צריכים להיות בפורמט JSON. לדוגמה, {"animal":"cat"}. אם בתהליך העבודה שלכם לא נעשה שימוש בארגומנטים של זמן ריצה, משאירים את השדה הזה ריק.

  5. אפשר גם לציין את רמת רישום השיחות שרוצים להחיל על הביצוע של תהליך העבודה. ברשימה Call log level (רמת יומן השיחות), בוחרים באחת מהאפשרויות הבאות:

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

  6. אפשר גם לציין את רמת היסטוריית הביצוע שרוצים להחיל על ביצוע זרימת העבודה. ברשימה Execution history בוחרים באחת מהאפשרויות הבאות:

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

  7. לוחצים על Execute.

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

gcloud

  1. פותחים טרמינל.

  2. מוצאים את השם של תהליך העבודה שרוצים להפעיל. אם אתם לא יודעים את שם תהליך העבודה, אתם יכולים להזין את הפקודה הבאה כדי לראות רשימה של כל תהליכי העבודה שלכם:

    gcloud workflows list
  3. אפשר להריץ את תהליך העבודה באמצעות הפקודה gcloud workflows run או הפקודה gcloud workflows execute:

    • מריצים את תהליך העבודה וממתינים לסיום ההרצה:

      gcloud workflows run WORKFLOW_NAME \
          --call-log-level=CALL_LOGGING_LEVEL \
          --execution-history-level="EXECUTION_HISTORY_LEVEL" \
          --data=DATA
    • הפעלת תהליך העבודה בלי לחכות לסיום ניסיון ההפעלה:

      gcloud workflows execute WORKFLOW_NAME \
          --call-log-level=CALL_LOGGING_LEVEL \
          --execution-history-level="EXECUTION_HISTORY_LEVEL" \
          --data=DATA

      מחליפים את מה שכתוב בשדות הבאים:

      • ‫WORKFLOW_NAME: השם של תהליך העבודה.
      • ‫CALL_LOGGING_LEVEL (אופציונלי): רמת רישום השיחות להחלה במהלך ההרצה. יכול להיות אחד מהערכים הבאים:

        • ‫none: לא צוינה רמת רישום ביומן. (זוהי ברירת המחדל) רמת היומן של ההפעלה מקבלת עדיפות על פני כל רמת יומן של תהליך העבודה, אלא אם רמת היומן של ההפעלה לא צוינה (ברירת המחדל). במקרה כזה, רמת היומן של תהליך העבודה חלה.
        • ‫log-errors-only: רישום ביומן של כל החריגות שזוהו, או כששיחה נעצרת בגלל חריגה.
        • ‫log-all-calls: רישום ביומן של כל הקריאות לפונקציות של תהליכי משנה או ספריות והתוצאות שלהן.
        • ‫log-none: אין רישום של שיחות.
      • ‫EXECUTION_HISTORY_LEVEL (אופציונלי): רמת היסטוריית הביצוע להחלה במהלך הביצוע. יכול להיות אחד מהערכים הבאים:

        • ‫none: לא צוינה רמה של היסטוריית הביצוע. זוהי אפשרות ברירת המחדל. אם לא מציינים רמה של היסטוריית ביצועים לביצוע, הרמה נקבעת לפי הרמה שחלה על תהליך העבודה. אם הרמות שונות, ההגדרה שחלה ברמת הביצוע מבטלת את ההגדרה שחלה ברמת תהליך העבודה עבור הביצוע הזה.
        • ‫execution-history-basic: הפעלת היסטוריית ביצוע בסיסית.
        • ‫execution-history-detailed: הפעלת היסטוריית ביצוע מפורטת כולל ערכי משתנים כלשהם בהיקף ומספר האיטרציות הצפוי.
      • ‫DATA (אופציונלי): ארגומנטים של זמן ריצה לזרימת העבודה בפורמט JSON.

  4. אם הפעלתם את הפקודה gcloud workflows execute, יוחזר המזהה הייחודי של ניסיון ההפעלה של זרימת העבודה, והפלט יהיה דומה לזה:

     To view the workflow status, you can use following command:
     gcloud workflows executions describe b113b589-8eff-4968-b830-8d35696f0b33 --workflow workflow-2 --location us-central1

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

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

argument: '{"searchTerm":"Friday"}'
endTime: '2022-06-22T12:17:53.086073678Z'
name: projects/1051295516635/locations/us-central1/workflows/myFirstWorkflow/executions/c4dffd1f-13db-46a0-8a4a-ee39c144cb96
result: '["Friday","Friday the 13th (franchise)","Friday Night Lights (TV series)","Friday
    the 13th (1980 film)","Friday the 13th","Friday the 13th (2009 film)","Friday the
    13th Part III","Friday the 13th Part 2","Friday (Rebecca Black song)","Friday Night
    Lights (film)"]'
startTime: '2022-06-22T12:17:52.799387653Z'
state: SUCCEEDED
status:
    currentSteps:
    - routine: main
        step: returnOutput
workflowRevisionId: 000001-ac2

‫API בארכיטקטורת REST

כדי ליצור הפעלה חדשה באמצעות הגרסה האחרונה של תהליך עבודה מסוים, משתמשים בשיטה projects.locations.workflows.executions.create.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • ‫PROJECT_NUMBER: מספר הפרויקט שלכם Google Cloud שמופיע בדף IAM & Admin Settings.
  • ‫LOCATION: האזור שבו תהליך העבודה נפרס. לדוגמה, us-central1.
  • ‫WORKFLOW_NAME: השם שהמשתמש הגדיר לזרימת העבודה. לדוגמה, myFirstWorkflow.
  • ‫PARAMETER: אופציונלי. אם אפשר להעביר לאמצעי הבקרה של זרימת העבודה שאתם מריצים ארגומנטים של זמן ריצה כחלק מבקשת ההרצה, אתם יכולים להוסיף לגוף הבקשה מחרוזת בפורמט JSON שהערך שלה הוא צמד או יותר של פרמטרים וערכים עם תווי בריחה – לדוגמה, "{\"searchTerm\":\"asia\"}".
  • ‫VALUE: אופציונלי. הערך של זוג פרמטר-ערך שהתסריט יכול לקבל כארגומנט בזמן הריצה.
  • ‫CALL_LOGGING_LEVEL: אופציונלי. רמת רישום השיחות שרוצים להחיל במהלך הביצוע. ברירת המחדל היא שלא מצוינת רמת רישום ביומן, ובמקום זאת חלה רמת הרישום ביומן של תהליך העבודה. מידע נוסף מופיע במאמר בנושא שליחת יומנים אל Logging. אחד מהערכים הבאים:
    • ‫CALL_LOG_LEVEL_UNSPECIFIED: לא צוינה רמת רישום ביומן, ובמקום זאת חלה רמת הרישום ביומן של תהליך העבודה. (זוהי ברירת המחדל) אחרת, רמת היומן של ההפעלה חלה ומקבלת עדיפות על פני רמת היומן של תהליך העבודה.
    • ‫LOG_ERRORS_ONLY: רישום ביומן של כל החריגות שזוהו, או כששיחה נעצרת בגלל חריגה.
    • ‫LOG_ALL_CALLS: רישום ביומן של כל הקריאות לפונקציות של ספריות או לתהליכי משנה, והתוצאות שלהן.
    • ‫LOG_NONE: אין רישום של שיחות.
  • ‫BACKLOG_EXECUTION: אופציונלי. אם המדיניות מוגדרת לערך true, התהליך לא יתווסף לתור כשהמכסה של מספר הפעולות המקבילות תמוצה. מידע נוסף מופיע במאמר בנושא ניהול של הצטברות בקשות לביצוע.
  • EXECUTION_HISTORY_LEVEL: אופציונלי. רמת היסטוריית הביצוע שתחול במהלך הביצוע. מידע נוסף זמין במאמר בנושא הצגת היסטוריית השלבים של ההפעלה. אחת מהאפשרויות הבאות:
    • ‫EXECUTION_HISTORY_LEVEL_UNSPECIFIED: לא צוינה רמה של היסטוריית ביצוע. (זוהי ברירת המחדל) אם לא מציינים רמה של היסטוריית ביצועים לביצוע, הרמה נקבעת לפי הרמה שחלה על תהליך העבודה. אם הרמות שונות, ההגדרה שחלה ברמת הביצוע מבטלת את ההגדרה שחלה ברמת תהליך העבודה עבור הביצוע הזה.
    • ‫EXECUTION_HISTORY_BASIC: הפעלת היסטוריית ביצוע בסיסית.
    • EXECUTION_HISTORY_ADVANCED: הפעלת היסטוריית ביצוע מפורטת כולל ערכי משתנים בהיקף והמספר הצפוי של איטרציות.

תוכן בקשת JSON:

{
  "argument": "{\"PARAMETER\":\"VALUE\"}",
  "callLogLevel": "CALL_LOGGING_LEVEL",
  "disableConcurrencyQuotaOverflowBuffering": "BACKLOG_EXECUTION",
  "executionHistoryLevel": "EXECUTION_HISTORY_LEVEL"
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אם הפעולה מצליחה, גוף התגובה מכיל מופע חדש של Execution:

{
  "name": "projects/PROJECT_NUMBER/locations/LOCATION/workflows/WORKFLOW_NAME/executions/EXECUTION_ID",
  "startTime": "2023-11-07T14:35:27.215337069Z",
  "state": "ACTIVE",
  "argument": "{\"PARAMETER\":\"VALUE\"}",
  "workflowRevisionId": "000001-2df",
  "callLogLevel": "CALL_LOGGING_LEVEL",
  "executionHistoryLevel": "EXECUTION_HISTORY_LEVEL",
  "status": {}
}

בדיקת הסטטוס של ההרצות

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

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

    gcloud workflows executions list WORKFLOW_NAME

    מחליפים את WORKFLOW_NAME בשם של תהליך העבודה.

    הפקודה מחזירה ערך NAME שדומה לערך הבא:

    projects/PROJECT_NUMBER/locations/REGION/workflows/WORKFLOW_NAME/executions/EXECUTION_ID

    מעתיקים את מזהה ההפעלה כדי להשתמש בו בפקודה הבאה.

  • כדי לבדוק את הסטטוס של ניסיון הרצה ולהמתין לסיום הניסיון, מזינים את הפקודה הבאה:

    gcloud workflows executions wait EXECUTION_ID

    מחליפים את EXECUTION_ID במזהה של ניסיון ההפעלה.

    הפקודה ממתינה לסיום ניסיון ההרצה ואז מחזירה את התוצאות.

  • כדי להמתין עד שההרצה האחרונה תושלם ואז להחזיר את התוצאה של ההרצה שהושלמה, מזינים את הפקודה הבאה:

    gcloud workflows executions wait-last

    אם ניסיתם להריץ את הפקודה קודם באותה סשן gcloud, הפקודה תמתין לסיום הניסיון הקודם ואז תחזיר את התוצאות של ההרצה שהסתיימה. אם לא קיים ניסיון קודם, הפונקציה gcloud מחזירה את השגיאה הבאה:

    ERROR: (gcloud.workflows.executions.wait-last) [NOT FOUND] There are no cached executions available.
    
  • כדי לקבל את הסטטוס של ההפעלה האחרונה, מזינים את הפקודה הבאה:

    gcloud workflows executions describe-last

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

    ERROR: (gcloud.beta.workflows.executions.describe-last) [NOT FOUND] There are no cached executions available.
    

סינון ההרצות

אפשר להחיל מסננים על רשימת ההרצות של זרימת העבודה שמוחזרת על ידי השיטה workflows.executions.list.

אפשר לסנן לפי השדות הבאים:

  • createTime
  • disableOverflowBuffering
  • duration
  • endTime
  • executionId
  • label
  • startTime
  • state
  • stepName
  • workflowRevisionId

לדוגמה, כדי לסנן לפי תווית (labels."fruit":"apple"), אפשר לשלוח בקשת API דומה לזו:

GET https://workflowexecutions.googleapis.com/v1/projects/MY_PROJECT/locations/MY_LOCATION/workflows/MY_WORKFLOW/executions?view=full&filter=labels.%22fruit%22%3A%22apple%22"

כאשר:

  • ‫view=full מציין תצוגה שמגדירה אילו שדות צריכים להיות מלאים בהפעלות המוחזרות. במקרה הזה, כל הנתונים
  • ‫labels.%22fruit%22%3A%22apple%22 הוא תחביר המסנן בקידוד כתובת URL

מידע נוסף זמין במאמר בנושא סינון AIP-160.

ניהול של הצטברות בקשות להרצה

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

יש מספר מקסימלי של הרצות פעילות של תהליכי עבודה שיכולות לפעול בו-זמנית. אחרי שמגיעים למכסה הזו, ואם השבתתם את הגיבוי של ההרצות או אם הגעתם למכסה של ההרצות שגובו, כל הרצה חדשה תיכשל ויוחזר קוד סטטוס HTTP 429 Too many requests. אם ההגדרה 'הוספה לתור של הרצות' מופעלת, ההרצות החדשות מצליחות ונוצרות במצב QUEUED. ברגע שהמכסה של הרצת תהליכים במקביל הופכת לזמינה, ההרצות מתבצעות באופן אוטומטי ועוברות למצב ACTIVE.

כברירת מחדל, התכונה 'הצטברות של בקשות לביצוע' מופעלת לכל הבקשות (כולל אלה שמופעלות על ידי Cloud Tasks), למעט המקרים הבאים:

  • כשיוצרים הפעלה באמצעות מחבר executions.run או executions.create בתהליך עבודה, השהיית ההפעלה מושבתת כברירת מחדל. כדי להגדיר את זה, צריך להגדיר במפורש את השדה disableConcurrencyQuotaOverflowBuffering של ההרצה לערך false.
  • במקרים שבהם ההפעלה מופעלת על ידי Pub/Sub, התכונה 'הצטברות של בקשות להפעלה' מושבתת ואי אפשר להגדיר אותה.

שימו לב לנקודות הבאות:

  • ההפעלות בתור מתחילות בסדר FIFO (מה שנכנס ראשון יוצא ראשון), על בסיס המאמץ הטוב ביותר.
  • שדה createTime חותמת הזמן מציין מתי נוצרת הרצה. חותמת הזמן startTime מציינת מתי ביצוע נשלף אוטומטית מתור העבודה ומתי הוא מתחיל לפעול. במקרים שבהם הביצועים לא מושהים, שני ערכי חותמת הזמן זהים.
  • אפשר לראות את המגבלה של ביצועים שהצטברו באמצעות מדד המכסה workflowexecutions.googleapis.com/executionbacklogentries. מידע נוסף מופיע במאמר איך רואים ומנהלים את המכסות.

השבתת הצטברות של בקשות להרצה

אפשר להשבית את הגיבוי של ביצוע הפקודות באמצעות הגדרת דגל כשמשתמשים ב-Google Cloud CLI. לדוגמה:

gcloud workflows execute WORKFLOW_NAME
    --disable-concurrency-quota-overflow-buffering

אפשר גם להשבית את הגיבוי של ההרצה על ידי הגדרת השדה disableConcurrencyQuotaOverflowBuffering לערך true בגוף ה-JSON של הבקשה כששולחים בקשת הרצה ל-API בארכיטקטורת REST של Workflows. לדוגמה:

{
  "argument": {"arg1":"value1"},
  "callLogLevel": "LOG_NONE",
  "disableConcurrencyQuotaOverflowBuffering": true
}

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

המאמרים הבאים