Armazene detalhes de chamadas de retorno numa base de dados do Firestore
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Armazena detalhes de chamadas de retorno numa base de dados do Firestore, interrompe a execução e, em seguida, aguarda a ocorrência de eventos específicos.
Explore mais
Para ver documentação detalhada que inclui este exemplo de código, consulte o seguinte:
Exemplo de código
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Informações incorretas ou exemplo de código","incorrectInformationOrSampleCode","thumb-down"],["Não contém as informações/amostras de que eu preciso","missingTheInformationSamplesINeed","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Outro","otherDown","thumb-down"]],[],[],[],null,["Stores callback details in a Firestore database, halts execution, and then waits for specific events to occur.\n\nExplore further\n\n\nFor detailed documentation that includes this code sample, see the following:\n\n- [Wait for events using callbacks and Eventarc triggers](/workflows/docs/tutorials/create-wait-for-events-callbacks)\n\nCode sample \n\nYAML \n\n main:\n steps:\n - init:\n assign:\n - pubsub_topic: topic-callback\n - storage_bucket: ${sys.get_env(\"GOOGLE_CLOUD_PROJECT_ID\") + \"-bucket-callback\"}\n - await_pubsub_message:\n call: await_callback_event\n args:\n event_source: ${pubsub_topic}\n result: pubsub_event\n - await_storage_bucket:\n call: await_callback_event\n args:\n event_source: ${storage_bucket}\n result: storage_event\n - return_events:\n return:\n pubsub_event: ${pubsub_event}\n storage_event: ${storage_event}\n\n await_callback_event:\n params: [event_source]\n steps:\n - init:\n assign:\n - database_root: ${\"projects/\" + sys.get_env(\"GOOGLE_CLOUD_PROJECT_ID\") + \"/databases/(default)/documents/callbacks/\"}\n - doc_name: ${database_root + event_source}\n - execution_id: ${sys.get_env(\"GOOGLE_CLOUD_WORKFLOW_EXECUTION_ID\")}\n - firestore_key: ${\"exec_\" + text.split(execution_id, \"-\")[0]}\n - create_callback:\n call: events.create_callback_endpoint\n args:\n http_callback_method: POST\n result: callback_details\n - save_callback_url:\n call: googleapis.firestore.v1.projects.databases.documents.patch\n args:\n name: ${doc_name}\n updateMask:\n fieldPaths: [\"${firestore_key}\"]\n body:\n fields:\n ${firestore_key}:\n stringValue: ${callback_details.url}\n - log_and_await_callback:\n try:\n steps:\n - log_await_start:\n call: sys.log\n args:\n severity: INFO\n data: ${\"Started waiting 1hr for an event from source \" + event_source}\n - await_callback:\n call: events.await_callback\n args:\n callback: ${callback_details}\n timeout: 3600\n result: callback_request\n - log_await_stop:\n call: sys.log\n args:\n severity: INFO\n data: ${\"Stopped waiting for an event from source \" + event_source}\n except:\n as: e\n steps:\n - log_error:\n call: sys.log\n args:\n severity: \"ERROR\"\n text: ${\"Received error \" + e.message}\n - delete_callback_url:\n call: googleapis.firestore.v1.projects.databases.documents.patch\n args:\n name: ${doc_name}\n updateMask:\n fieldPaths: [\"${firestore_key}\"]\n - check_null_event:\n switch:\n - condition: ${callback_request == null}\n return: null\n - log_await_result:\n call: sys.log\n args:\n severity: INFO\n data: ${callback_request.http_request.body.event}\n - return_event:\n return: ${callback_request.http_request.body.event}\n\nWhat's next\n\n\nTo search and filter code samples for other Google Cloud products, see the\n[Google Cloud sample browser](/docs/samples?product=workflows)."]]