Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

State machine configuration in seata-go Saga #637

Closed
ptyin opened this issue Jan 3, 2024 · 1 comment
Closed

State machine configuration in seata-go Saga #637

ptyin opened this issue Jan 3, 2024 · 1 comment

Comments

@ptyin
Copy link
Member

ptyin commented Jan 3, 2024

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.

@ptyin ptyin changed the title State machine configuration in seata-go State machine configuration in seata-go Saga Jan 3, 2024
@ptyin
Copy link
Member Author

ptyin commented Jan 4, 2024

assign me

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant