CI / CI (pull_request) Successful in 3m17s
Enable X-Service: workflow routing to Temporal via ServiceAdapter.
Users can now specify namespace/domain in request payload for multi-tenant
workflow access.
Changes:
- Implement WorkflowAdapter in serviceadapter/workflow_adapter.go
* Defines 10 workflow resources: start, describe, list, history,
terminate, cancel, signal, query, reset, update
* Each resource validates namespace parameter in payload
* Forwards requests to Temporal gRPC handler
- Add GetWorkflowSpec() to define ServiceAdapter spec with:
* Upstream: grpc://temporal:7233
* Auth requirements per operation (execute, read, signal, query)
* Request/response schemas for validation
- Wire WorkflowAdapter into main.go:
* Register workflow adapter in serviceadapter registry
* Initialize with temporal handler for gRPC forwarding
- Remove old empty WorkflowAdapter stub from adapters.go
Usage:
curl -X POST https://api.riotpiao.com/ \
-H 'X-Service: workflow' \
-H 'X-Resource: start' \
-H 'Authorization: Bearer TOKEN' \
-d '{
"namespace": "default",
"workflow_id": "my-workflow",
"workflow_type": "MyWorkflow",
"task_queue": "default"
}'
Namespace is required in all workflow operations and must be specified
by the client in the request payload. This enables multi-tenant support
where different teams access their own Temporal namespaces.
35 lines
788 B
Go
35 lines
788 B
Go
package serviceadapter
|
|
|
|
// SQSAdapter handles X-Service: sqs requests.
|
|
type SQSAdapter struct{}
|
|
|
|
// S3Adapter handles X-Service: s3 requests.
|
|
type S3Adapter struct{}
|
|
|
|
// IAMAdapter handles X-Service: iam requests.
|
|
type IAMAdapter struct{}
|
|
|
|
// MemoryAdapter handles X-Service: memory requests (core + extended).
|
|
type MemoryAdapter struct{
|
|
// Extended resources: notes, context, nodes (git-aware)
|
|
// Requires M3.5.6+, M3.7.7+, M3.7.8+, M3.5.9
|
|
}
|
|
|
|
// AdapterFactory creates adapters by type.
|
|
func AdapterFactory(serviceName string) interface{} {
|
|
switch serviceName {
|
|
case "workflow":
|
|
return &WorkflowAdapter{}
|
|
case "sqs":
|
|
return &SQSAdapter{}
|
|
case "s3":
|
|
return &S3Adapter{}
|
|
case "iam":
|
|
return &IAMAdapter{}
|
|
case "memory":
|
|
return &MemoryAdapter{}
|
|
default:
|
|
return nil
|
|
}
|
|
}
|