כשמריצים תהליך עבודה, מופעלת ההגדרה הנוכחית של תהליך העבודה שמשויכת ל-workflow.
אפשר להעביר ארגומנטים של זמן ריצה בבקשה להפעלת תהליך עבודה, ולגשת לארגומנטים האלה באמצעות משתנה של תהליך העבודה. מידע נוסף זמין במאמר בנושא העברת ארגומנטים של זמן ריצה בבקשת הפעלה.
אחרי שזרימת עבודה מסתיימת, ההיסטוריה והתוצאות שלה נשמרות למשך זמן מוגבל. מידע נוסף זמין במאמר מכסות ומגבלות.
לפני שמתחילים
יכול להיות שהגבלות אבטחה שהוגדרו בארגון שלכם ימנעו מכם להשלים את השלבים הבאים. מידע לפתרון בעיות זמין במאמר פיתוח אפליקציות בסביבה מוגבלת. Google Cloud
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- אם תהליך העבודה ניגש למשאבים אחרים, צריך לוודא שהוא משויך לחשבון שירות עם ההרשאות הנכונות. כדי לדעת איזה חשבון שירות משויך לתהליך עבודה קיים, אפשר לעיין במאמר אימות חשבון השירות שמשויך לתהליך עבודה. Google Cloud
שימו לב: כדי ליצור משאב ולצרף חשבון שירות, נדרשות הרשאות ליצירת המשאב וההרשאה להתחזות לחשבון השירות שתצרפו למשאב. מידע נוסף זמין במאמר הרשאות לחשבון שירות.
- פורסים את זרימת העבודה באמצעות Google Cloud מסוף או Google Cloud CLI.
הפעלת תהליך עבודה
אפשר להריץ את תהליך העבודה בדרכים הבאות:
- במסוף Google Cloud
- באמצעות Google Cloud CLI בטרמינל או ב-Cloud Shell
- על ידי שליחת בקשה ישירה ל-Workflows API
אפשר גם להפעיל את זרימת העבודה באמצעות ספריות הלקוח ב-Cloud. מידע נוסף זמין במאמר הפעלת תהליך עבודה באמצעות ספריות הלקוח של Cloud.
המסוף
כדי להפעיל תהליך עבודה, במסוף Google Cloud , נכנסים לדף Workflows:
בדף Workflows, בוחרים תהליך עבודה כדי לעבור לדף הפרטים שלו.
בדף פרטי תהליך העבודה, לוחצים על play_arrow הפעלה.
בדף Execute workflow (הפעלת תהליך העבודה), בחלונית Input (קלט), אפשר להזין ארגומנטים אופציונליים של זמן ריצה כדי להעביר אותם לתהליך העבודה לפני ההפעלה. הארגומנטים צריכים להיות בפורמט JSON. לדוגמה,
{"animal":"cat"}. אם תהליך העבודה לא משתמש בארגומנטים של זמן ריצה, משאירים את השדה הזה ריק.אפשר גם לציין את רמת רישום השיחות שרוצים להחיל על ההפעלה של תהליך העבודה. ברשימה Call log level בוחרים באחת מהאפשרויות הבאות:
- לא צוין: לא צוינה רמת רישום. (זוהי ברירת המחדל) רמת היומן של ההפעלה מקבלת עדיפות על פני כל רמת יומן של תהליך העבודה, אלא אם לא צוינה רמת היומן של ההפעלה (ברירת המחדל). במקרה כזה, חלה רמת היומן של תהליך העבודה.
- שגיאות בלבד: רישום ביומן של כל החריגים שתועדו, או כששיחה נעצרת בגלל חריגה.
- כל השיחות: רישום ביומן של כל השיחות עם פונקציות של תהליכי משנה או של ספרייה, והתוצאות שלהן.
- ללא יומנים: לא מתבצעת רישום של שיחות ביומן.
אפשר לציין את רמת היסטוריית הביצוע שרוצים להחיל על הביצוע של תהליך העבודה. ברשימה Execution history בוחרים באחת מהאפשרויות הבאות:
- קבלת ההגדרה בירושה מתהליך העבודה: החלת ההגדרה של היסטוריית ההרצה של תהליך העבודה. (זוהי ברירת המחדל)
- בסיסי: הפעלה של היסטוריית ביצוע בסיסית.
- מפורט: הפעלת היסטוריית ביצוע מפורטת, כולל ערכי משתנים בהיקף וצפי למספר האיטרציות.
לוחצים על Execute.
בדף פרטי ההפעלה אפשר לראות את תוצאות ההפעלה, כולל פלט, מזהה ומצב ההפעלה, והשלב הנוכחי או הסופי של הפעלת תהליך העבודה. מידע נוסף זמין במאמר בנושא גישה לתוצאות של הרצת תהליכי עבודה.
gcloud
פותחים טרמינל.
מוצאים את השם של תהליך העבודה שרוצים להפעיל. אם אתם לא יודעים את השם של תהליך העבודה, אתם יכולים להזין את הפקודה הבאה כדי לראות רשימה של כל תהליכי העבודה שלכם:
gcloud workflows list
אפשר להריץ את תהליך העבודה באמצעות הפקודה
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.
-
אם הפעלתם את
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.
אפשר לסנן לפי השדות הבאים:
createTimedisableOverflowBufferingdurationendTimeexecutionIdlabelstartTimestatestepNameworkflowRevisionId
לדוגמה, כדי לסנן לפי תווית (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 }
מידע נוסף מופיע במאמר בנושא הפעלת תהליך עבודה.
המאמרים הבאים
- גישה לתוצאות של ביצוע תהליך העבודה
- שליטה בסדר הביצוע בתהליך עבודה
- שליחת יומני ביצוע אל Cloud Logging
- עדכון של תהליך עבודה קיים