// Init initializes any optional, unspecified values such as the error state, stop channel, serializer, PollerShutdownManager. // it gets called by Start(), so you should only call this if you are manually managing polling for tasks, and calling Tick yourself. func (f *FSM) Init() { if f.initialState == nil { panic("No Initial State Defined For FSM") } if f.completeState == nil { f.AddCompleteState(f.DefaultCompleteState()) } if f.canceledState == nil { f.AddCanceledState(f.DefaultCanceledState()) } if f.failedState == nil { f.AddFailedState(f.DefaultFailedState()) } if f.stop == nil { f.stop = make(chan bool, 1) } if f.stopAck == nil { f.stopAck = make(chan bool, 1) } if f.Serializer == nil { f.log("action=start at=no-serializer defaulting-to=JSONSerializer") f.Serializer = &JSONStateSerializer{} } if f.SystemSerializer == nil { f.log("action=start at=no-system-serializer defaulting-to=JSONSerializer") f.SystemSerializer = &JSONStateSerializer{} } if f.ShutdownManager == nil { f.ShutdownManager = poller.NewShutdownManager() } if f.DecisionTaskDispatcher == nil { f.DecisionTaskDispatcher = &CallingGoroutineDispatcher{} } if f.DecisionErrorHandler == nil { f.DecisionErrorHandler = f.DefaultDecisionErrorHandler } if f.TaskErrorHandler == nil { f.TaskErrorHandler = f.DefaultTaskErrorHandler } if f.FSMErrorReporter == nil { f.FSMErrorReporter = f } if f.stasher == nil && f.DataType != nil { f.stasher = NewStasher(f.zeroStateData()) } }
func (a *ActivityWorker) Init() { if a.Serializer == nil { a.Serializer = fsm.JSONStateSerializer{} } if a.systemSerializer == nil { a.systemSerializer = fsm.JSONStateSerializer{} } if a.ActivityInterceptor == nil { a.ActivityInterceptor = &FuncInterceptor{} } if a.ActivityTaskDispatcher == nil { a.ActivityTaskDispatcher = &CallingGoroutineDispatcher{} } if a.ShutdownManager == nil { a.ShutdownManager = poller.NewShutdownManager() } }