mirror of
https://github.com/hanzoai/tasks.git
synced 2026-10-04 02:04:03 +00:00
## What changed? Add BusinessID search attribute option. CHASM archetype developers that require Visibility will need to call `WithBusinessIDAlias` as a required RegistrableComponent option. Adds validation if BusinessIDAlias option is not set, but contains Visibility as a child component, registration to the CHASM Registry will fail. ## Why? CHASM archetypes define separate aliases for BusinessID, eg. `ActivityID`, `ScheduleID`, etc. End users of these archetypes will query Visibility using a filter such as `ActivityID = my-activity-id`, and should be able to map to the underlying shared `system` visibility storage column. ## How did you test it? - [X] built - [X] run locally and tested manually - [X] covered by existing tests - [ ] added new unit test(s) - [ ] added new functional test(s)
90 lines
2.5 KiB
Go
90 lines
2.5 KiB
Go
package scheduler
|
|
|
|
import (
|
|
"go.temporal.io/server/chasm"
|
|
"go.temporal.io/server/chasm/lib/scheduler/gen/schedulerpb/v1"
|
|
"google.golang.org/grpc"
|
|
)
|
|
|
|
type (
|
|
Library struct {
|
|
chasm.UnimplementedLibrary
|
|
|
|
handler *handler
|
|
|
|
SchedulerIdleTaskExecutor *SchedulerIdleTaskExecutor
|
|
GeneratorTaskExecutor *GeneratorTaskExecutor
|
|
InvokerExecuteTaskExecutor *InvokerExecuteTaskExecutor
|
|
InvokerProcessBufferTaskExecutor *InvokerProcessBufferTaskExecutor
|
|
BackfillerTaskExecutor *BackfillerTaskExecutor
|
|
}
|
|
)
|
|
|
|
func NewLibrary(
|
|
handler *handler,
|
|
SchedulerIdleTaskExecutor *SchedulerIdleTaskExecutor,
|
|
GeneratorTaskExecutor *GeneratorTaskExecutor,
|
|
InvokerExecuteTaskExecutor *InvokerExecuteTaskExecutor,
|
|
InvokerProcessBufferTaskExecutor *InvokerProcessBufferTaskExecutor,
|
|
BackfillerTaskExecutor *BackfillerTaskExecutor,
|
|
) *Library {
|
|
return &Library{
|
|
handler: handler,
|
|
SchedulerIdleTaskExecutor: SchedulerIdleTaskExecutor,
|
|
GeneratorTaskExecutor: GeneratorTaskExecutor,
|
|
InvokerExecuteTaskExecutor: InvokerExecuteTaskExecutor,
|
|
InvokerProcessBufferTaskExecutor: InvokerProcessBufferTaskExecutor,
|
|
BackfillerTaskExecutor: BackfillerTaskExecutor,
|
|
}
|
|
}
|
|
|
|
func (l *Library) Name() string {
|
|
return chasm.SchedulerLibraryName
|
|
}
|
|
|
|
func (l *Library) Components() []*chasm.RegistrableComponent {
|
|
return []*chasm.RegistrableComponent{
|
|
chasm.NewRegistrableComponent[*Scheduler](
|
|
chasm.SchedulerComponentName,
|
|
chasm.WithBusinessIDAlias("ScheduleId"),
|
|
),
|
|
chasm.NewRegistrableComponent[*Generator]("generator"),
|
|
chasm.NewRegistrableComponent[*Invoker]("invoker"),
|
|
chasm.NewRegistrableComponent[*Backfiller]("backfiller"),
|
|
}
|
|
}
|
|
|
|
func (l *Library) Tasks() []*chasm.RegistrableTask {
|
|
return []*chasm.RegistrableTask{
|
|
chasm.NewRegistrablePureTask(
|
|
"idle",
|
|
l.SchedulerIdleTaskExecutor,
|
|
l.SchedulerIdleTaskExecutor,
|
|
),
|
|
chasm.NewRegistrablePureTask(
|
|
"generate",
|
|
l.GeneratorTaskExecutor,
|
|
l.GeneratorTaskExecutor,
|
|
),
|
|
chasm.NewRegistrableSideEffectTask(
|
|
"execute",
|
|
l.InvokerExecuteTaskExecutor,
|
|
l.InvokerExecuteTaskExecutor,
|
|
),
|
|
chasm.NewRegistrablePureTask(
|
|
"processBuffer",
|
|
l.InvokerProcessBufferTaskExecutor,
|
|
l.InvokerProcessBufferTaskExecutor,
|
|
),
|
|
chasm.NewRegistrablePureTask(
|
|
"backfill",
|
|
l.BackfillerTaskExecutor,
|
|
l.BackfillerTaskExecutor,
|
|
),
|
|
}
|
|
}
|
|
|
|
func (l *Library) RegisterServices(server *grpc.Server) {
|
|
server.RegisterService(&schedulerpb.SchedulerService_ServiceDesc, l.handler)
|
|
}
|