logo
0
0
WeChat Login
Henry Huang<hhh@rutcode.com>
refactor: optimize directory structure

fsm

Finite-state machine in go

Introduction

Installation

go get -u trellis.tech/trellis/common.v3/state-machine/fsm

Usage

fsm repo

// Repo is the interface for managing namespace's transitions in cache type Repo interface { // AddTransition add a transition into cache AddTransition(*Transition) error // RemoveTransition remove a transaction by information RemoveTransition(*Transition) error // ChangeCurrentStatus change namespace's current status by namespace and event ChangeCurrentStatus(namespace string, event string) (string, error) // GetTargetTransition get target transition by current information GetTargetTransition(namespace, curStatus, event string) (*Transition, error) // Remove remove all namespaces from cache Remove() // AddNamespace add a namespace into cache AddNamespace(namespace string) error // RemoveNamespace remove namespace's Transitions RemoveNamespace(namespace string) } // TransitionRepo is the interface for managing transitions in cache type TransitionRepo interface { // Add a transaction into cache AddTransaction(trans *Transition) error // RemoveNamespace remove namespace's Transitions RemoveTransition(status, event string) error // RemoveByTransaction remove a transaction by information ChangeStatus(event string) (string, error) // GetTargetTransition get target transition by current information GetTargetTransition(status, event string) (*Transition, error) // SetCurrentStatus set current status SetCurrentStatus(status string) error // GetCurrentStatus get current status GetCurrentStatus() string }

new and input a namespace's transaction

Sample Config