mirror of
https://github.com/oarkflow/mq.git
synced 2025-10-21 19:19:22 +08:00
feat: add task completion
This commit is contained in:
@@ -7,42 +7,52 @@ import (
|
||||
v2 "github.com/oarkflow/mq/dag/v2"
|
||||
)
|
||||
|
||||
func main() {
|
||||
dag := v2.NewDAG(func(taskID string, result v2.Result) {
|
||||
fmt.Printf("Final result for Task %s: %s\n", taskID, string(result.Data))
|
||||
})
|
||||
dag.AddNode("NodeA", func(payload json.RawMessage) v2.Result {
|
||||
var data map[string]any
|
||||
if err := json.Unmarshal(payload, &data); err != nil {
|
||||
return v2.Result{Error: err, Status: v2.StatusFailed}
|
||||
}
|
||||
data["allowed_voting"] = data["age"] == "18"
|
||||
updatedPayload, _ := json.Marshal(data)
|
||||
return v2.Result{Data: updatedPayload, Status: v2.StatusCompleted}
|
||||
})
|
||||
dag.AddNode("NodeB", func(payload json.RawMessage) v2.Result {
|
||||
var data map[string]any
|
||||
if err := json.Unmarshal(payload, &data); err != nil {
|
||||
return v2.Result{Error: err, Status: v2.StatusFailed}
|
||||
}
|
||||
data["female_voter"] = data["gender"] == "female"
|
||||
updatedPayload, _ := json.Marshal(data)
|
||||
return v2.Result{Data: updatedPayload, Status: v2.StatusCompleted}
|
||||
})
|
||||
dag.AddNode("NodeC", func(payload json.RawMessage) v2.Result {
|
||||
var data map[string]any
|
||||
if err := json.Unmarshal(payload, &data); err != nil {
|
||||
return v2.Result{Error: err, Status: v2.StatusFailed}
|
||||
}
|
||||
data["voted"] = true
|
||||
updatedPayload, _ := json.Marshal(data)
|
||||
return v2.Result{Data: updatedPayload, Status: v2.StatusCompleted}
|
||||
})
|
||||
dag.AddNode("Result", func(payload json.RawMessage) v2.Result {
|
||||
var data map[string]any
|
||||
json.Unmarshal(payload, &data)
|
||||
func NodeA(payload json.RawMessage) v2.Result {
|
||||
var data map[string]any
|
||||
if err := json.Unmarshal(payload, &data); err != nil {
|
||||
return v2.Result{Error: err, Status: v2.StatusFailed}
|
||||
}
|
||||
data["allowed_voting"] = data["age"] == "18"
|
||||
updatedPayload, _ := json.Marshal(data)
|
||||
return v2.Result{Data: updatedPayload, Status: v2.StatusCompleted}
|
||||
}
|
||||
|
||||
return v2.Result{Data: payload, Status: v2.StatusCompleted}
|
||||
})
|
||||
func NodeB(payload json.RawMessage) v2.Result {
|
||||
var data map[string]any
|
||||
if err := json.Unmarshal(payload, &data); err != nil {
|
||||
return v2.Result{Error: err, Status: v2.StatusFailed}
|
||||
}
|
||||
data["female_voter"] = data["gender"] == "female"
|
||||
updatedPayload, _ := json.Marshal(data)
|
||||
return v2.Result{Data: updatedPayload, Status: v2.StatusCompleted}
|
||||
}
|
||||
|
||||
func NodeC(payload json.RawMessage) v2.Result {
|
||||
var data map[string]any
|
||||
if err := json.Unmarshal(payload, &data); err != nil {
|
||||
return v2.Result{Error: err, Status: v2.StatusFailed}
|
||||
}
|
||||
data["voted"] = true
|
||||
updatedPayload, _ := json.Marshal(data)
|
||||
return v2.Result{Data: updatedPayload, Status: v2.StatusCompleted}
|
||||
}
|
||||
|
||||
func Result(payload json.RawMessage) v2.Result {
|
||||
var data map[string]any
|
||||
json.Unmarshal(payload, &data)
|
||||
|
||||
return v2.Result{Data: payload, Status: v2.StatusCompleted}
|
||||
}
|
||||
|
||||
func notify(taskID string, result v2.Result) {
|
||||
fmt.Printf("Final result for Task %s: %s\n", taskID, string(result.Data))
|
||||
}
|
||||
|
||||
func main() {
|
||||
dag := v2.NewDAG(notify)
|
||||
dag.AddNode("NodeA", NodeA)
|
||||
dag.AddNode("NodeB", NodeB)
|
||||
dag.AddNode("NodeC", NodeC)
|
||||
dag.AddNode("Result", Result)
|
||||
dag.Start(":8080")
|
||||
}
|
||||
|
Reference in New Issue
Block a user