|
- package core
-
- import (
- "github.com/seata/seata-go/pkg/saga/statemachine/constant"
- "github.com/seata/seata-go/pkg/saga/statemachine/process_ctrl/process"
- "github.com/seata/seata-go/pkg/saga/statemachine/statelang"
- )
-
- // ProcessContextBuilder process_ctrl builder
- type ProcessContextBuilder struct {
- processContext ProcessContext
- }
-
- func NewProcessContextBuilder() *ProcessContextBuilder {
- processContextImpl := NewProcessContextImpl()
- return &ProcessContextBuilder{processContextImpl}
- }
-
- func (p *ProcessContextBuilder) WithProcessType(processType process.ProcessType) *ProcessContextBuilder {
- p.processContext.SetVariable(constant.VarNameProcessType, processType)
- return p
- }
-
- func (p *ProcessContextBuilder) WithOperationName(operationName string) *ProcessContextBuilder {
- p.processContext.SetVariable(constant.VarNameOperationName, operationName)
- return p
- }
-
- func (p *ProcessContextBuilder) WithAsyncCallback(callBack CallBack) *ProcessContextBuilder {
- if callBack != nil {
- p.processContext.SetVariable(constant.VarNameAsyncCallback, callBack)
- }
-
- return p
- }
-
- func (p *ProcessContextBuilder) WithInstruction(instruction Instruction) *ProcessContextBuilder {
- if instruction != nil {
- p.processContext.SetInstruction(instruction)
- }
-
- return p
- }
-
- func (p *ProcessContextBuilder) WithStateMachineInstance(stateMachineInstance statelang.StateMachineInstance) *ProcessContextBuilder {
- if stateMachineInstance != nil {
- p.processContext.SetVariable(constant.VarNameStateMachineInst, stateMachineInstance)
- p.processContext.SetVariable(constant.VarNameStateMachine, stateMachineInstance.StateMachine())
- }
-
- return p
- }
-
- func (p *ProcessContextBuilder) WithStateMachineEngine(stateMachineEngine StateMachineEngine) *ProcessContextBuilder {
- if stateMachineEngine != nil {
- p.processContext.SetVariable(constant.VarNameStateMachineEngine, stateMachineEngine)
- }
-
- return p
- }
-
- func (p *ProcessContextBuilder) WithStateMachineConfig(stateMachineConfig StateMachineConfig) *ProcessContextBuilder {
- if stateMachineConfig != nil {
- p.processContext.SetVariable(constant.VarNameStateMachineConfig, stateMachineConfig)
- }
-
- return p
- }
-
- func (p *ProcessContextBuilder) WithStateMachineContextVariables(contextMap map[string]interface{}) *ProcessContextBuilder {
- if contextMap != nil {
- p.processContext.SetVariable(constant.VarNameStateMachineContext, contextMap)
- }
-
- return p
- }
-
- func (p *ProcessContextBuilder) WithIsAsyncExecution(async bool) *ProcessContextBuilder {
- p.processContext.SetVariable(constant.VarNameIsAsyncExecution, async)
-
- return p
- }
-
- func (p *ProcessContextBuilder) Build() ProcessContext {
- return p.processContext
- }
|