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]

Reply via email to