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

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

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

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

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

יכול להיות שהגבלות אבטחה שהוגדרו בארגון שלכם ימנעו מכם להשלים את השלבים הבאים. מידע לפתרון בעיות זמין במאמר פיתוח אפליקציות בסביבה מוגבלת. 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: מספר הפרויקט שלכם שמופיע בדף IAM & Admin Settings. Google Cloud
  • LOCATION: האזור שבו תהליך העבודה נפרס. לדוגמה, us-central1.
  • WORKFLOW_NAME: השם שהמשתמש הגדיר לזרימת העבודה. לדוגמה, myFirstWorkflow.
  • PARAMETER: אופציונלי. אם אפשר להעביר לאמצעי הבקרה של זרימת העבודה שאתם מריצים ארגומנטים של זמן ריצה שמועברים כחלק מבקשת ההרצה, אתם יכולים להוסיף לגוף הבקשה מחרוזת בפורמט JSON שהערך שלה הוא צמד או יותר של פרמטר-ערך עם תווי escape – לדוגמה, "{\"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.

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

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

יש מספר מקסימלי של הרצות פעילות של תהליכי עבודה שיכולות לפעול בו-זמנית. אם חורגים מהמכסה הזו, והתור להרצה מושבת או שהמכסה להרצה בתור מושגת, כל הרצה חדשה נכשלת ומתקבל קוד הסטטוס 429 Too many requests של HTTP. אם ההגדרה 'הוספה לתור של הרצות' מופעלת, ההרצות החדשות מצליחות ונוצרות במצב 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 של הבקשה כששולחים בקשת ביצוע אל Workflows API בארכיטקטורת REST. לדוגמה:

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

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

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