stateMachine

package
v0.0.0-...-acc8e0f Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 16, 2020 License: MIT Imports: 12 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ResourceFile           = "file"
	ResourceFileMethodCopy = "copy"

	ResourceFolder             = "folder"
	ResourceFolderMethodCreate = "create"
	ResourceFolderMethodShare  = "share"

	ResourceMember                 = "member"
	ResourceMemberMethodAdd        = "add"
	ResourceMemberMethodAddToGroup = "addToGroup"

	ResourcePaper            = "paper"
	ResourcePaperMethodShare = "share"

	StateTypeInit  = "init"
	StateTypeNode  = "node"
	StateTypeFinal = "final"
)
View Source
const (
	TeamAdminId       = "dbmid:AAFfCiGwd877ecDoanNO5kwYlK14hPYEvCY"
	GroupId           = "g:5f9ff9897c43df400000000000000036"
	PaperDocId        = "PAKiYxyEPDdF8AkeGpFpz"
	SourceFolder      = "/Onboarding/"
	DestinationFolder = "/Members/"
)

Variables

This section is empty.

Functions

func Build

func Build(wReq WorkflowRequest)

func BuildPreDefinedDemo

func BuildPreDefinedDemo()

func GenerateReferenceKey

func GenerateReferenceKey(model interface{}, db *gorm.DB) string

GenerateReferenceKey generate reference key used for change log

func HandleNewMember

func HandleNewMember(newMember NewMemberRequest)

func Run

func Run()

Types

type Event

type Event struct {
	Name string
	// contains filtered or unexported fields
}

Event contains Event information, including transition hooks

func (*Event) To

func (event *Event) To(name string) *EventTransition

To define EventTransition of go to a state

type EventTransition

type EventTransition struct {
	// contains filtered or unexported fields
}

EventTransition hold event's to/froms states, also including befores, afters hooks

func (*EventTransition) After

func (transition *EventTransition) After(fc func(value interface{}, tx *gorm.DB) error) *EventTransition

After register after hooks

func (*EventTransition) Before

func (transition *EventTransition) Before(fc func(value interface{}, tx *gorm.DB) error) *EventTransition

Before register before hooks

func (*EventTransition) From

func (transition *EventTransition) From(states ...string) *EventTransition

From used to define from states

type NewMemberRequest

type NewMemberRequest struct {
	TeamMemberId string `json:"team_member_id"`
	Email        string `json:"email`
	Name         string `json:"name"`
}

type State

type State struct {
	Name string
	// contains filtered or unexported fields
}

State contains State information, including enter, exit hooks

func (*State) Enter

func (state *State) Enter(fc func(value interface{}, tx *gorm.DB) error) *State

Enter register an enter hook for State

func (*State) Exit

func (state *State) Exit(fc func(value interface{}, tx *gorm.DB) error) *State

Exit register an exit hook for State

type StateChangeLog

type StateChangeLog struct {
	gorm.Model
	ReferTable string
	ReferID    string
	From       string
	To         string
	Note       string `sql:"size:1024"`
	audited.AuditedModel
}

StateChangeLog a model that used to keep state change logs

func GetLastStateChange

func GetLastStateChange(model interface{}, db *gorm.DB) *StateChangeLog

GetLastStateChange gets last state change

func GetStateChangeLogs

func GetStateChangeLogs(model interface{}, db *gorm.DB) []StateChangeLog

GetStateChangeLogs get state change logs

func (*StateChangeLog) ConfigureQorResource

func (stageChangeLog *StateChangeLog) ConfigureQorResource(res resource.Resourcer)

ConfigureQorResource used to configure transition for qor admin

type StateMachine

type StateMachine struct {
	// contains filtered or unexported fields
}

StateMachine a struct that hold states, events definitions

func New

func New(value interface{}) *StateMachine

New initialize a new StateMachine that hold states, events definitions

func (*StateMachine) Event

func (sm *StateMachine) Event(name string) *Event

Event define an event

func (*StateMachine) Initial

func (sm *StateMachine) Initial(name string) *StateMachine

Initial define the initial state

func (*StateMachine) State

func (sm *StateMachine) State(name string) *State

State define a state

func (*StateMachine) Trigger

func (sm *StateMachine) Trigger(name string, value Stater, tx *gorm.DB, notes ...string) error

Trigger trigger an event

type Stater

type Stater interface {
	SetState(name string)
	GetState() string
}

Stater is a interface including methods `GetState`, `SetState`

type Transition

type Transition struct {
	State string
}

Transition is a struct, embed it in your struct to enable state machine for the struct

func (*Transition) ConfigureQorResource

func (transition *Transition) ConfigureQorResource(res resource.Resourcer)

ConfigureQorResource used to configure transition for qor admin

func (Transition) GetState

func (transition Transition) GetState() string

GetState get current state from

func (*Transition) SetState

func (transition *Transition) SetState(name string)

SetState set state to Stater, just set, won't save it into database

type Workflow

type Workflow struct {
	transition.Transition
	Member NewMemberRequest
}

type WorkflowEvent

type WorkflowEvent struct {
	Name string
	From int
	To   int
}

type WorkflowRequest

type WorkflowRequest struct {
	Steps []WorkflowStep `json:"steps"`
}

type WorkflowState

type WorkflowState struct {
	Type     string
	Name     string
	Resource string
	Method   string
	ID       int
	Data     string
}

type WorkflowStep

type WorkflowStep struct {
	Resource string `json:"resource"`
	Action   string `json:"action"`
	Name     string `json:"name"`
	Data     string `json:"data"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL
⌂ 换网址