ptyin opened a new issue, #637:
URL: https://github.com/apache/incubator-seata-go/issues/637
This is a subtask under the #618
## Description:
In Java, users configure the state machine using `spring.xml` or by building
a `StateMachineConfig` through code. In seata-go, we aim to provide users with
a non-code approach to define state machine configurations, mirroring the
implementation patterns observed in other Go projects.
The State Machine Configuration module has dependencies on various
sub-modules. The development of specific functionalities will be incrementally
added to the configuration as needed. For example, if the State Machine
Configuration depends on `ExpressionFactoryManager`, the related methods need
not be implemented initially. They can be added later when working on the
expression part.
## Implementation Details:
### 1. State Machine Configuration Interface:
- Introduce a `StateMachineConfig` interface that defines the contract
for configuring the state machine.
### 2. Default Implementation:
- Provide a default implementation, `DefaultStateMachineConfig`, that
serves as a baseline configuration with sensible defaults.
### 3. Non-Code Configuration:
- Develop a mechanism allowing users to define state machine
configurations without writing code. This could be through configuration files
or any other non-code approach.
### 4. Incremental Functionality:
- Recognize that the State Machine Configuration relies on various
functionalities, and these functionalities can be added progressively. For
instance, if the configuration later requires `ExpressionFactoryManager`, the
corresponding initialization code can be added when working on the expression
module.
## Next Steps:
1. **Interface Definition:**
- Define the `StateMachineConfig` interface outlining the methods
required for configuring the state machine.
2. **Default Implementation:**
- Implement `DefaultStateMachineConfig` as a default configuration with
sensible defaults.
3. **Non-Code Configuration:**
- Implement a mechanism for users to define state machine configurations
without writing code.
4. **Incremental Functionality:**
- Adopt an incremental approach to add functionalities to the
configuration module as needed.
By implementing these steps, we can provide users with a flexible and
user-friendly way to configure the state machine in seata-go, following
non-code configuration patterns observed in other Go projects.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]