Skip to content

Instantly share code, notes, and snippets.

@xSAVIKx
Last active January 9, 2023 11:28
Show Gist options
  • Save xSAVIKx/23e72a5df4d4f07e5ccbe8db029323f7 to your computer and use it in GitHub Desktop.
Save xSAVIKx/23e72a5df4d4f07e5ccbe8db029323f7 to your computer and use it in GitHub Desktop.
Sample GCP Workflow with long-running architecture
main:
steps:
- createCallback:
call: events.create_callback_endpoint
args:
http_callback_method: "POST"
result: callbackDetails
- createHttpCallPayload:
assign:
- httpCallPayload: {}
- httpCallPayload.workflows_callback: ${callbackDetails}
- createHttpCallTask:
assign:
- httpCallTask: {}
- httpCallTask.method: "GET"
- httpCallTask.body: ${httpCallPayload}
- httpCallTask.content_type: "application/json"
- httpCallTask.url: "https://us-central1-workflowsample.cloudfunctions.net/datetime"
- httpCallTask.timeout: 2700
- httpCallTaskJson: ${json.encode(httpCallTask)}
- httpCallTaskEncodedJson: ${base64.encode(httpCallTaskJson)}
- getProjectID:
assign:
- projectId: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
- scheduleGetCurrentTimeCall:
call: googleapis.cloudtasks.v2.projects.locations.queues.tasks.create
args:
parent: ${"projects/" + projectId + "/locations/us-central1/queues/scheduled-tasks"}
body:
task:
appEngineHttpRequest:
httpMethod: "POST"
relativeUri: "/"
headers:
Content-Type: "application/json"
body: ${httpCallTaskEncodedJson}
responseView: "BASIC"
result: scheduledTask
- awaitCallback:
call: events.await_callback
args:
callback: ${callbackDetails}
timeout: 3000
result: callbackResult
- unwrapCallbackResult:
assign:
- currentDateTime: ${callbackResult.http_request}
- returnOutput:
return: ${currentDateTime.body.dayOfTheWeek}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment