This is an automated email from the ASF dual-hosted git repository.
yixia pushed a commit to branch feature/saga
in repository https://gitbox.apache.org/repos/asf/incubator-seata-go.git
The following commit(s) were added to refs/heads/feature/saga by this push:
new 34c5e527 refactor: refactor saga scaffold to break import cycles (#647)
34c5e527 is described below
commit 34c5e527c05315d9dc7a0ca8caa781eeb651772b
Author: Xiangkun Yin <[email protected]>
AuthorDate: Thu Jan 18 10:20:07 2024 +0800
refactor: refactor saga scaffold to break import cycles (#647)
---
.../statemachine/{engine => constant}/contant.go | 2 +-
.../engine/process_ctrl/bussiness_processor.go | 6 +-
.../process_ctrl/{instruction => }/instruction.go | 5 +-
.../engine/process_ctrl/process_context.go | 92 ++--------------------
.../engine/process_ctrl/statemachine_processor.go | 5 +-
.../engine/process_ctrl_statemachine_engine.go | 18 ++---
.../engine/statemachine_engine_test.go | 7 ++
pkg/saga/statemachine/engine/utils.go | 86 ++++++++++++++++++++
8 files changed, 115 insertions(+), 106 deletions(-)
diff --git a/pkg/saga/statemachine/engine/contant.go
b/pkg/saga/statemachine/constant/contant.go
similarity index 98%
rename from pkg/saga/statemachine/engine/contant.go
rename to pkg/saga/statemachine/constant/contant.go
index 9527fc29..39cb2924 100644
--- a/pkg/saga/statemachine/engine/contant.go
+++ b/pkg/saga/statemachine/constant/contant.go
@@ -1,4 +1,4 @@
-package engine
+package constant
const (
VarNameProcessType string = "_ProcessType_"
diff --git a/pkg/saga/statemachine/engine/process_ctrl/bussiness_processor.go
b/pkg/saga/statemachine/engine/process_ctrl/bussiness_processor.go
index 198092a1..c12a7c79 100644
--- a/pkg/saga/statemachine/engine/process_ctrl/bussiness_processor.go
+++ b/pkg/saga/statemachine/engine/process_ctrl/bussiness_processor.go
@@ -3,7 +3,7 @@ package process_ctrl
import (
"context"
"github.com/pkg/errors"
- "github.com/seata/seata-go/pkg/saga/statemachine/engine"
+ "github.com/seata/seata-go/pkg/saga/statemachine/constant"
"sync"
)
@@ -76,9 +76,9 @@ func (d *DefaultBusinessProcessor)
getRouterHandler(processType ProcessType) (Ro
}
func (d *DefaultBusinessProcessor) matchProcessType(processContext
ProcessContext) ProcessType {
- ok := processContext.HasVariable(engine.VarNameProcessType)
+ ok := processContext.HasVariable(constant.VarNameProcessType)
if ok {
- return
processContext.GetVariable(engine.VarNameProcessType).(ProcessType)
+ return
processContext.GetVariable(constant.VarNameProcessType).(ProcessType)
}
return StateLang
}
diff --git
a/pkg/saga/statemachine/engine/process_ctrl/instruction/instruction.go
b/pkg/saga/statemachine/engine/process_ctrl/instruction.go
similarity index 70%
rename from pkg/saga/statemachine/engine/process_ctrl/instruction/instruction.go
rename to pkg/saga/statemachine/engine/process_ctrl/instruction.go
index 1537dc67..2f7c0a54 100644
--- a/pkg/saga/statemachine/engine/process_ctrl/instruction/instruction.go
+++ b/pkg/saga/statemachine/engine/process_ctrl/instruction.go
@@ -1,7 +1,6 @@
-package instruction
+package process_ctrl
import (
- "github.com/seata/seata-go/pkg/saga/statemachine/engine/process_ctrl"
"github.com/seata/seata-go/pkg/saga/statemachine/statelang"
)
@@ -15,7 +14,7 @@ type StateInstruction struct {
End bool
}
-func (s StateInstruction) GetState(context process_ctrl.ProcessContext)
(statelang.State, error) {
+func (s StateInstruction) GetState(context ProcessContext) (statelang.State,
error) {
//TODO implement me
panic("implement me")
}
diff --git a/pkg/saga/statemachine/engine/process_ctrl/process_context.go
b/pkg/saga/statemachine/engine/process_ctrl/process_context.go
index 6531b1af..c13faa3f 100644
--- a/pkg/saga/statemachine/engine/process_ctrl/process_context.go
+++ b/pkg/saga/statemachine/engine/process_ctrl/process_context.go
@@ -1,9 +1,6 @@
package process_ctrl
import (
- "github.com/seata/seata-go/pkg/saga/statemachine/engine"
-
"github.com/seata/seata-go/pkg/saga/statemachine/engine/process_ctrl/instruction"
- "github.com/seata/seata-go/pkg/saga/statemachine/statelang"
"sync"
)
@@ -20,9 +17,9 @@ type ProcessContext interface {
HasVariable(name string) bool
- GetInstruction() instruction.Instruction
+ GetInstruction() Instruction
- SetInstruction(instruction instruction.Instruction)
+ SetInstruction(instruction Instruction)
}
type HierarchicalProcessContext interface {
@@ -47,7 +44,7 @@ type ProcessContextImpl struct {
parent ProcessContext
mu sync.RWMutex
mp map[string]interface{}
- instruction instruction.Instruction
+ instruction Instruction
}
func (p *ProcessContextImpl) GetVariable(name string) interface{} {
@@ -140,11 +137,11 @@ func (p *ProcessContextImpl) HasVariable(name string)
bool {
return false
}
-func (p *ProcessContextImpl) GetInstruction() instruction.Instruction {
+func (p *ProcessContextImpl) GetInstruction() Instruction {
return p.instruction
}
-func (p *ProcessContextImpl) SetInstruction(instruction
instruction.Instruction) {
+func (p *ProcessContextImpl) SetInstruction(instruction Instruction) {
p.instruction = instruction
}
@@ -203,82 +200,3 @@ func (p *ProcessContextImpl) ClearLocally() {
p.mp = map[string]interface{}{}
}
-
-// ProcessContextBuilder process_ctrl builder
-type ProcessContextBuilder struct {
- processContext ProcessContext
-}
-
-func NewProcessContextBuilder() *ProcessContextBuilder {
- processContextImpl := &ProcessContextImpl{}
- return &ProcessContextBuilder{processContextImpl}
-}
-
-func (p *ProcessContextBuilder) WithProcessType(processType ProcessType)
*ProcessContextBuilder {
- p.processContext.SetVariable(engine.VarNameProcessType, processType)
- return p
-}
-
-func (p *ProcessContextBuilder) WithOperationName(operationName string)
*ProcessContextBuilder {
- p.processContext.SetVariable(engine.VarNameOperationName, operationName)
- return p
-}
-
-func (p *ProcessContextBuilder) WithAsyncCallback(callBack engine.CallBack)
*ProcessContextBuilder {
- if callBack != nil {
- p.processContext.SetVariable(engine.VarNameAsyncCallback,
callBack)
- }
-
- return p
-}
-
-func (p *ProcessContextBuilder) WithInstruction(instruction
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(engine.VarNameStateMachineInst,
stateMachineInstance)
- p.processContext.SetVariable(engine.VarNameStateMachine,
stateMachineInstance.StateMachine())
- }
-
- return p
-}
-
-func (p *ProcessContextBuilder) WithStateMachineEngine(stateMachineEngine
engine.StateMachineEngine) *ProcessContextBuilder {
- if stateMachineEngine != nil {
- p.processContext.SetVariable(engine.VarNameStateMachineEngine,
stateMachineEngine)
- }
-
- return p
-}
-
-func (p *ProcessContextBuilder) WithStateMachineConfig(stateMachineConfig
engine.StateMachineConfig) *ProcessContextBuilder {
- if stateMachineConfig != nil {
- p.processContext.SetVariable(engine.VarNameStateMachineConfig,
stateMachineConfig)
- }
-
- return p
-}
-
-func (p *ProcessContextBuilder) WithStateMachineContextVariables(contextMap
map[string]interface{}) *ProcessContextBuilder {
- if contextMap != nil {
- p.processContext.SetVariable(engine.VarNameStateMachineContext,
contextMap)
- }
-
- return p
-}
-
-func (p *ProcessContextBuilder) WithIsAsyncExecution(async bool)
*ProcessContextBuilder {
- p.processContext.SetVariable(engine.VarNameIsAsyncExecution, async)
-
- return p
-}
-
-func (p *ProcessContextBuilder) Build() ProcessContext {
- return p.processContext
-}
diff --git
a/pkg/saga/statemachine/engine/process_ctrl/statemachine_processor.go
b/pkg/saga/statemachine/engine/process_ctrl/statemachine_processor.go
index ce3479c3..66338fd8 100644
--- a/pkg/saga/statemachine/engine/process_ctrl/statemachine_processor.go
+++ b/pkg/saga/statemachine/engine/process_ctrl/statemachine_processor.go
@@ -3,7 +3,6 @@ package process_ctrl
import (
"context"
"github.com/pkg/errors"
-
"github.com/seata/seata-go/pkg/saga/statemachine/engine/process_ctrl/instruction"
"sync"
)
@@ -40,7 +39,7 @@ func NewStateMachineProcessHandler()
*StateMachineProcessHandler {
}
func (s *StateMachineProcessHandler) Process(ctx context.Context,
processContext ProcessContext) error {
- stateInstruction, _ :=
processContext.GetInstruction().(instruction.StateInstruction)
+ stateInstruction, _ :=
processContext.GetInstruction().(StateInstruction)
state, err := stateInstruction.GetState(processContext)
if err != nil {
@@ -107,7 +106,7 @@ type StateMachineRouterHandler struct {
}
func (s *StateMachineRouterHandler) Route(ctx context.Context, processContext
ProcessContext) error {
- stateInstruction, _ :=
processContext.GetInstruction().(instruction.StateInstruction)
+ stateInstruction, _ :=
processContext.GetInstruction().(StateInstruction)
state, err := stateInstruction.GetState(processContext)
if err != nil {
diff --git a/pkg/saga/statemachine/engine/process_ctrl_statemachine_engine.go
b/pkg/saga/statemachine/engine/process_ctrl_statemachine_engine.go
index 4c115df1..afec63cb 100644
--- a/pkg/saga/statemachine/engine/process_ctrl_statemachine_engine.go
+++ b/pkg/saga/statemachine/engine/process_ctrl_statemachine_engine.go
@@ -3,9 +3,9 @@ package engine
import (
"context"
"github.com/pkg/errors"
+ "github.com/seata/seata-go/pkg/saga/statemachine/constant"
"github.com/seata/seata-go/pkg/saga/statemachine/engine/events"
"github.com/seata/seata-go/pkg/saga/statemachine/engine/process_ctrl"
-
"github.com/seata/seata-go/pkg/saga/statemachine/engine/process_ctrl/instruction"
"github.com/seata/seata-go/pkg/saga/statemachine/statelang"
"time"
)
@@ -29,11 +29,11 @@ func (p ProcessCtrlStateMachineEngine) startInternal(ctx
context.Context, stateM
}
// Build the process_ctrl context.
- processContextBuilder := process_ctrl.NewProcessContextBuilder().
+ processContextBuilder := NewProcessContextBuilder().
WithProcessType(process_ctrl.StateLang).
- WithOperationName(OperationNameStart).
+ WithOperationName(constant.OperationNameStart).
WithAsyncCallback(callback).
-
WithInstruction(instruction.NewStateInstruction(stateMachineName, tenantId)).
+
WithInstruction(process_ctrl.NewStateInstruction(stateMachineName, tenantId)).
WithStateMachineInstance(stateMachineInstance).
WithStateMachineConfig(p.StateMachineConfig).
WithStateMachineEngine(p).
@@ -53,7 +53,7 @@ func (p ProcessCtrlStateMachineEngine) startInternal(ctx
context.Context, stateM
}
if stateMachineInstance.ID() == "" {
-
stateMachineInstance.SetID(p.StateMachineConfig.SeqGenerator().GenerateId(SeqEntityStateMachineInst,
""))
+
stateMachineInstance.SetID(p.StateMachineConfig.SeqGenerator().GenerateId(constant.SeqEntityStateMachineInst,
""))
}
var eventPublisher events.EventPublisher
@@ -97,16 +97,16 @@ func (p ProcessCtrlStateMachineEngine)
createMachineInstance(stateMachineName st
stateMachineInstance.SetStartParams(startParams)
if startParams != nil {
if businessKey != "" {
- startParams[VarNameBusinesskey] = businessKey
+ startParams[constant.VarNameBusinesskey] = businessKey
}
- if startParams[VarNameParentId] != nil {
- parentId, ok := startParams[VarNameParentId].(string)
+ if startParams[constant.VarNameParentId] != nil {
+ parentId, ok :=
startParams[constant.VarNameParentId].(string)
if !ok {
}
stateMachineInstance.SetParentID(parentId)
- delete(startParams, VarNameParentId)
+ delete(startParams, constant.VarNameParentId)
}
}
diff --git a/pkg/saga/statemachine/engine/statemachine_engine_test.go
b/pkg/saga/statemachine/engine/statemachine_engine_test.go
new file mode 100644
index 00000000..c9ac2518
--- /dev/null
+++ b/pkg/saga/statemachine/engine/statemachine_engine_test.go
@@ -0,0 +1,7 @@
+package engine
+
+import "testing"
+
+func TestEngine(t *testing.T) {
+
+}
diff --git a/pkg/saga/statemachine/engine/utils.go
b/pkg/saga/statemachine/engine/utils.go
new file mode 100644
index 00000000..654e319d
--- /dev/null
+++ b/pkg/saga/statemachine/engine/utils.go
@@ -0,0 +1,86 @@
+package engine
+
+import (
+ "github.com/seata/seata-go/pkg/saga/statemachine/constant"
+ "github.com/seata/seata-go/pkg/saga/statemachine/engine/process_ctrl"
+ "github.com/seata/seata-go/pkg/saga/statemachine/statelang"
+)
+
+// ProcessContextBuilder process_ctrl builder
+type ProcessContextBuilder struct {
+ processContext process_ctrl.ProcessContext
+}
+
+func NewProcessContextBuilder() *ProcessContextBuilder {
+ processContextImpl := &process_ctrl.ProcessContextImpl{}
+ return &ProcessContextBuilder{processContextImpl}
+}
+
+func (p *ProcessContextBuilder) WithProcessType(processType
process_ctrl.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
process_ctrl.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() process_ctrl.ProcessContext {
+ return p.processContext
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]