You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@seata.apache.org by pt...@apache.org on 2024/03/02 13:20:22 UTC

(incubator-seata-go) branch feature/saga updated: feature: add default implementation for StateMachineConfig (#669)

This is an automated email from the ASF dual-hosted git repository.

ptyin 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 540dab4e feature: add default implementation for StateMachineConfig (#669)
540dab4e is described below

commit 540dab4ea4847f1e7ff30b833324d2f9701fff05
Author: Xiangkun Yin <32...@users.noreply.github.com>
AuthorDate: Sat Mar 2 21:20:19 2024 +0800

    feature: add default implementation for StateMachineConfig (#669)
---
 .../engine/default_statemachine_config.go          | 123 +++++++++++++++++++++
 1 file changed, 123 insertions(+)

diff --git a/pkg/saga/statemachine/engine/default_statemachine_config.go b/pkg/saga/statemachine/engine/default_statemachine_config.go
new file mode 100644
index 00000000..2d7b1d8e
--- /dev/null
+++ b/pkg/saga/statemachine/engine/default_statemachine_config.go
@@ -0,0 +1,123 @@
+package engine
+
+import (
+	"github.com/seata/seata-go/pkg/saga/statemachine/engine/events"
+	"github.com/seata/seata-go/pkg/saga/statemachine/engine/expr"
+	"github.com/seata/seata-go/pkg/saga/statemachine/engine/invoker"
+	"github.com/seata/seata-go/pkg/saga/statemachine/engine/sequence"
+	"github.com/seata/seata-go/pkg/saga/statemachine/engine/status_decision"
+	"github.com/seata/seata-go/pkg/saga/statemachine/engine/store"
+)
+
+const (
+	DefaultTransOperTimeout     = 60000 * 30
+	DefaultServiceInvokeTimeout = 60000 * 5
+)
+
+type DefaultStateMachineConfig struct {
+	// Configuration
+	transOperationTimeout int
+	serviceInvokeTimeout  int
+	charset               string
+	defaultTenantId       string
+
+	// Components
+
+	// Store related components
+	stateLogRepository     store.StateLogRepository
+	stateLogStore          store.StateLogStore
+	stateLangStore         store.StateLangStore
+	stateMachineRepository store.StateMachineRepository
+
+	// Expression related components
+	expressionFactoryManager expr.ExpressionFactoryManager
+	expressionResolver       expr.ExpressionResolver
+
+	// Invoker related components
+	serviceInvokerManager invoker.ServiceInvokerManager
+	scriptInvokerManager  invoker.ScriptInvokerManager
+
+	// Other components
+	statusDecisionStrategy status_decision.StatusDecisionStrategy
+	seqGenerator           sequence.SeqGenerator
+}
+
+func (c *DefaultStateMachineConfig) StateLogRepository() store.StateLogRepository {
+	return c.stateLogRepository
+}
+
+func (c *DefaultStateMachineConfig) StateMachineRepository() store.StateMachineRepository {
+	return c.stateMachineRepository
+}
+
+func (c *DefaultStateMachineConfig) StateLogStore() store.StateLogStore {
+	return c.stateLogStore
+}
+
+func (c *DefaultStateMachineConfig) StateLangStore() store.StateLangStore {
+	return c.stateLangStore
+}
+
+func (c *DefaultStateMachineConfig) ExpressionFactoryManager() expr.ExpressionFactoryManager {
+	return c.expressionFactoryManager
+}
+
+func (c *DefaultStateMachineConfig) ExpressionResolver() expr.ExpressionResolver {
+	return c.expressionResolver
+}
+
+func (c *DefaultStateMachineConfig) SeqGenerator() sequence.SeqGenerator {
+	return c.seqGenerator
+}
+
+func (c *DefaultStateMachineConfig) StatusDecisionStrategy() status_decision.StatusDecisionStrategy {
+	return c.statusDecisionStrategy
+}
+
+func (c *DefaultStateMachineConfig) EventPublisher() events.EventPublisher {
+	//TODO implement me
+	panic("implement me")
+}
+
+func (c *DefaultStateMachineConfig) AsyncEventPublisher() events.EventPublisher {
+	//TODO implement me
+	panic("implement me")
+}
+
+func (c *DefaultStateMachineConfig) ServiceInvokerManager() invoker.ServiceInvokerManager {
+	return c.serviceInvokerManager
+}
+
+func (c *DefaultStateMachineConfig) ScriptInvokerManager() invoker.ScriptInvokerManager {
+	return c.scriptInvokerManager
+}
+
+func (c *DefaultStateMachineConfig) CharSet() string {
+	return c.charset
+}
+
+func (c *DefaultStateMachineConfig) SetCharSet(charset string) {
+	c.charset = charset
+}
+
+func (c *DefaultStateMachineConfig) DefaultTenantId() string {
+	return c.defaultTenantId
+}
+
+func (c *DefaultStateMachineConfig) TransOperationTimeout() int {
+	return c.transOperationTimeout
+}
+
+func (c *DefaultStateMachineConfig) ServiceInvokeTimeout() int {
+	return c.serviceInvokeTimeout
+}
+
+func NewDefaultStateMachineConfig() *DefaultStateMachineConfig {
+	c := &DefaultStateMachineConfig{
+		transOperationTimeout: DefaultTransOperTimeout,
+		serviceInvokeTimeout:  DefaultServiceInvokeTimeout,
+		charset:               "UTF-8",
+		defaultTenantId:       "000001",
+	}
+	return c
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@seata.apache.org
For additional commands, e-mail: notifications-help@seata.apache.org