אפשר להעביר ארגומנטים של זמן ריצה בבקשה להפעלת תהליך עבודה, ולגשת לארגומנטים האלה באמצעות משתני תהליך העבודה.
הגדרת תהליך עבודה שמקבל ארגומנטים של זמן ריצה
כדי להגדיר תהליך עבודה לקבלת ארגומנטים של זמן ריצה שמועברים אליו כחלק מבקשת ביצוע, מבצעים את הפעולות הבאות:
פועלים לפי השלבים ליצירה של תהליך עבודה חדש, או בוחרים תהליך עבודה קיים כדי לעדכן אותו, אבל לא פורסים אותו עדיין.
מוסיפים שדה
paramsלהגדרה של תהליך העבודה הראשי. מוודאים ששם הארגומנט מופיע בתוך סוגריים מרובעים, ושהזרימת העבודה הראשית מופיעה בבלוקmain:YAML
main: params: [ARG_NAME] steps: ...
JSON
{ "main": { "params": ["ARG_NAME"], "steps": [ ... ] ... } }
בלוק
mainמקבל ארגומנט יחיד שהוא השם של כל סוג נתונים תקין של JSON, לדוגמה, מערך, אובייקט או מחרוזת.מומלץ להעביר אובייקט עם כמה ארגומנטים בעלי שם כדי להבין בקלות את המטרה שלהם ולהוסיף ארגומנטים. אפשר גם להשתמש בסימון הנקודות כדי לגשת לארגומנטים.
לזרימות עבודה משניות אחרות יכולים להיות כמה ארגומנטים.
לדוגמה, תהליך העבודה הבא מחזיר את ההודעה 'שלום' לאדם שהשם הפרטי והשם המשפחה שלו מועברים כארגומנטים בזמן הריצה:
YAML
main: params: [args] steps: - step1: assign: - outputVar: ${"Hello, " + args.firstName + " " + args.lastName + "!"} - step2: return: ${outputVar}
JSON
{ "main": { "params": [ "args" ], "steps": [ { "step1": { "assign": [ { "outputVar": "${\"Hello \" + args.firstName + \" \" + args.lastName}" } ] } }, { "step2": { "return": "${outputVar}" } } ] } }
מפעילים את תהליך העבודה כדי לסיים את היצירה או העדכון שלו.
העברת נתונים בבקשת הפעלה
אחרי שמגדירים את תהליך העבודה לקבלת ארגומנטים של זמן ריצה, אפשר להעביר מחרוזת בפורמט JSON, כמו {"firstName":"Workflows","lastName":"User"}, לתהליך העבודה בבקשת הפעלה.
המסוף
כדי להפעיל תהליך עבודה, במסוף Google Cloud , נכנסים לדף Workflows:
בדף Workflows, בוחרים תהליך עבודה כדי לעבור לדף הפרטים שלו.
בדף פרטי תהליך העבודה, לוחצים על play_arrow הפעלה.
בדף 'הפעלת תהליך העבודה' שמוצג, מזינים מחרוזת JSON שכוללת את שמות הפרמטרים וערכי הארגומנטים, כמו
{"firstName":"Workflows","lastName":"User"}, באזור 'קלט':
לוחצים על Execute.
בדף פרטי ההפעלה אפשר לראות את תוצאות ההפעלה, כולל הפלט
Hello, Workflows User!, המזהה והסטטוס של ההפעלה והשלב הנוכחי או הסופי של הפעלת תהליך העבודה. איך ניגשים לתוצאות של הרצת תהליך עבודה
gcloud
מוסיפים את הדגל --data לפקודה gcloud workflows execute שבה משתמשים כדי להפעיל את תהליך העבודה. הדגל הזה מקבל מחרוזת JSON של הנתונים שלכם. לדוגמה, כדי להעביר את firstName ואת lastName לתהליך העבודה בדוגמה הקודמת:
gcloud workflows run WORKFLOW_NAME \ --data='{"firstName":"FIRST","lastName":"LAST"}'
מחליפים את מה שכתוב בשדות הבאים:
-
WORKFLOW_NAME: השם של תהליך העבודה -
FIRST: המחרוזת שרוצים להעביר לתהליך העבודה עבורfirstName -
LAST: המחרוזת שרוצים להעביר לתהליך העבודה עבורlastName
הפלט אמור להיראות כך:
Waiting for execution [9379b067-306a-4db1-a58d-c9fc99aebfd4] to complete...done.
argument: '{"firstName":"Workflows","lastName":"User"}'
endTime: '2022-07-19T13:52:47.659199466Z'
name: projects/1051295516635/locations/us-central1/workflows/workflow-6/executions/9379b067-306a-4db1-a58d-c9fc99aebfd4
result: '"Hello, Workflows User!"'
startTime: '2022-07-19T13:52:47.623862835Z'
state: SUCCEEDED
status:
currentSteps:
- routine: main
step: step2
workflowRevisionId: 000002-138
ספריות לקוח
בהתאם לשפה של ספריית הלקוח, אפשר להעביר ארגומנט של זמן ריצה בבקשת ביצוע.
לדוגמה, באמצעות JavaScript:
// Execute workflow
try {
const createExecutionRes = await client.createExecution({
parent: client.workflowPath(projectId, location, workflow),
execution: {
argument: JSON.stringify({"firstName":"Workflows","lastName":"User"})
}
});
const executionName = createExecutionRes[0].name;
או באמצעות Java:
// Creates the execution object.
CreateExecutionRequest request =
CreateExecutionRequest.newBuilder()
.setParent(parent.toString())
.setExecution(Execution.newBuilder().setArgument("{\"firstName\":\"Workflows\",\"lastName\":\"User\"}").build())
.build();
מידע נוסף על הפעלת תהליך עבודה באמצעות ספריות הלקוח של Google API זמין במאמר הפעלת תהליך עבודה.
API בארכיטקטורת REST
מוסיפים את הדגל
dataלפקודה שבה משתמשים כדי להפעיל את תהליך העבודה. הערך שלdataהוא מחרוזת בפורמט JSON עם ארגומנט שהערך שלו הוא צמד אחד או יותר של ערכי פרמטרים עם תווי escape. לדוגמה, כדי להעביר אתfirstNameו-lastNameלתהליך העבודה הקודם:curl --request POST \ --header "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ --header 'Content-Type: application/json' \ --data '{"argument":"{\"firstName\":\"FIRST\",\"lastName\":\"LAST\"}"}' \ "https://workflowexecutions.googleapis.com/v1/projects/PROJECT_NUMBER/locations/us-central1/workflows/WORKFLOW_NAME/executions"
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_NUMBER: מספר הפרויקט ב- Google Cloud -
WORKFLOW_NAME: השם של תהליך העבודה -
FIRST: המחרוזת שרוצים להעביר לתהליך העבודה שלכם בשבילfirstName -
LAST: המחרוזת שרוצים להעביר לתהליך העבודה שלכם בשבילlastName
הפלט אמור להיראות כך:
{ "name": "projects/PROJECT_NUMBER/locations/us-central1/workflows/WORKFLOW_NAME/executions/EXECUTION_ID", "startTime": "2020-11-09T23:51:31.765761331Z", "state": "ACTIVE", "argument": "{\"firstName\":\"Workflows\",\"lastName\":\"User\"}", "workflowRevisionId": "000001-08c" } ```-
כדי לקבל את תוצאות ההרצה, מריצים את הפקודה הבאה:
curl --request GET \ --header "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ --header 'Content-Type: application/json' \ "https://workflowexecutions.googleapis.com/v1/projects/PROJECT_NUMBER/locations/us-central1/workflows/WORKFLOW_NAME/executions/EXECUTION_ID"מחליפים את
EXECUTION_IDבמזהה שהתקבל מהפלט של הפקודה הראשונה.הפלט הזה מכיל שורות שדומות לשורות הבאות:
"argument": "{\"firstName\":\"Workflows\",\"lastName\":\"User\"}", "result": "\"Hello, Workflows User!\"",
מידע נוסף על הפעלת תהליך עבודה באמצעות API בארכיטקטורת REST זמין במאמר הפעלת תהליך עבודה.
גישה לארגומנטים של זמן ריצה
בדוגמה הזו יש גישה לארגומנטים של זמן הריצה שמועברים לתהליך העבודה כחלק מבקשת ההפעלה. כל הארגומנטים מאוחסנים באותה מפה, שמוצהרת כפרמטר של תהליך העבודה הראשי.
כשמריצים את תהליך העבודה הזה, מעבירים ארגומנטים של זמן ריצה בפורמט הבא:
{"firstName":"Sherlock", "lastName":"Holmes"}
YAML
JSON
אפשר להשתמש בפונקציה default עם פונקציית הספרייה הרגילה, map.get, כדי לגשת לארגומנטים אופציונליים של זמן ריצה, ולהחזיר ערך ברירת מחדל אם המפתח לא נמצא. בדוגמה הבאה, אם לא מצוין region, נעשה שימוש ב-northamerica-northeast1:
YAML
main: params: [input] steps: - init: assign: - region: ${default(map.get(input, "region"), "northamerica-northeast1")}
JSON
{ "main": { "params": [ "input" ], "steps": [ { "init": { "assign": [ { "region": "${default(map.get(input, \"region\"), \"northamerica-northeast1\")}" } ] } } ] } }