Skip to content

Instantly share code, notes, and snippets.

View percybolmer's full-sized avatar

ProgrammingPercy percybolmer

View GitHub Profile
@percybolmer
percybolmer / Cadence-Greetings-API-V1.go
Created March 4, 2022 06:08
Cadence API for greetings and execute workflow
// GreetUser is used to Welcome a new User into the tavern
func (cc *CadenceClient) GreetUser(w http.ResponseWriter, r *http.Request) {
// Grab user info from body
var visitor customer.Customer
err := json.NewDecoder(r.Body).Decode(&visitor)
if err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
@percybolmer
percybolmer / cadence-create-client.go
Last active March 4, 2022 06:00
Cadence create the client to manage workflows
const (
cadenceClientName = "cadence-client"
cadenceService = "cadence-frontend"
)
const (
// The names of the Workflows we will be using
OrderWorkflow = "programmingpercy/cadence-tavern/workflows/orders.WorkflowOrder"
GreetingsWorkflow = "programmingpercy/cadence-tavern/workflows/greetings.workflowGreetings"
)
@percybolmer
percybolmer / Cadence simple HTTP server.go
Last active March 4, 2022 06:13
Cadence simple http server we will fill
package main
import (
"encoding/json"
"log"
"net/http"
"programmingpercy/cadence-tavern/customer"
"programmingpercy/cadence-tavern/workflows/orders"
)
@percybolmer
percybolmer / cadence-orders.go
Created March 3, 2022 06:26
Cadence order workflow
package orders
import (
"context"
"errors"
"programmingpercy/cadence-tavern/customer"
"time"
"go.uber.org/cadence/activity"
"go.uber.org/cadence/workflow"
@percybolmer
percybolmer / cadence-spawn-childworkflow.go
Created March 3, 2022 06:23
Cadence execute childworkflow
// Preconfigure ChildWorkflow Options
orderWaiterCfg := workflow.ChildWorkflowOptions{
ExecutionStartToCloseTimeout: time.Minute * 2, // Each Order can tops take 2 min
}
// Grab the Selector from the workflow Context,
selector := workflow.NewSelector(ctx)
// For ever running loop
for {
// Get the Signal used to identify an Event, we named our Order event into order
@percybolmer
percybolmer / cadence-restart-workflow.go
Last active March 3, 2022 06:14
Cadence how to restart workflow
package orders
import (
"time"
"go.uber.org/cadence/workflow"
"go.uber.org/zap"
)
// Order is a simple type to represent orders made
@percybolmer
percybolmer / cadence-CLI-send signal.go
Last active March 1, 2022 18:53
Cadence Signal sent via CLI
cadence --domain tavern workflow signal -w 71b24355–4d9a-4460–818a-50c9058a837e -n order -i '{ "item": "Beer", "by": "Percy" }'
percy@awesome:~/development/cadence-demo$ cadence --domain tavern workflow run --tl greetings --wt programmingpercy/cadence-tavern/workflows/orders.workflowOrder --et 60
Running execution:
Workflow Id : a49df98b-34ed-46b6-ac74-8a2d6e39db0e
Run Id : bd989409-8688-4eed-b08f-d871d035c77b
Type : programmingpercy/cadence-tavern/workflows/orders.workflowOrder
Domain : tavern
Task List : greetings
Args :
Progress:
1, 2022-03-01T19:34:15+01:00, WorkflowExecutionStarted
@percybolmer
percybolmer / cadence-order-workflow-v1.go
Last active March 1, 2022 18:50
Cadence order workflow beginning
package orders
import (
"time"
"go.uber.org/cadence/workflow"
"go.uber.org/zap"
)
// Order is a simple type to represent orders made
@percybolmer
percybolmer / cadence-first-workflow-results.go
Created February 28, 2022 19:41
Cadence first execution results
Result:
Run Time: 1 seconds
Status: COMPLETED
Output: {"name":"Percy","lastVisit":"2022-02-28T20:38:49.5461618+01:00","timesVisited":1}