Google Cloud Workflows ⇄ Pulse
Cloud Workflows owns the orchestration and speaks HTTP natively (call: http.post / http.get) — unlike Step Functions, Pulse needs no glue function. Two call steps, that's the bridge. Repo example: examples/gcp-workflows-pulse-bridge/.
sendToPulse (http.post → /x/order-scoring/in) → sys.sleep 2s → readVerdict (http.get) → scanEvents (for) → decide (switch) → escalate | auto-approve
Run it locally — the real workflow.yaml
pulse server start --dev
mkdir app && cp pulse.yaml app/ && (cd app && pulse deploy .)
pip install requests pyyaml
PULSE_URL=http://localhost:9090 PULSE_TOKEN=$(jq -r '.profiles[.currentProfile].token' ~/.pulse/credentials.json) \
python run_local.py
run_local.py is a tiny GCW interpreter executing the same workflow.yaml you would deploy with gcloud — assign, the call steps, the for loop, switch, return, and the ${...} expressions. Validated output:
amount= 2500 -> decision=escalate
amount= 300 -> decision=auto-approve
Deploying to real GCP
gcloud workflows deploy pulse-order-scoring --source=workflow.yaml
It reads PULSE_URL/PULSE_TOKEN from the execution environment. The 🧪 status means: the definition is proven against live Pulse; the GCP-hosted run needs your project.