Help us shape the future of Go! Take the 2026 Go Developer Survey

model

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Jan 15, 2024 License: BSD-3-Clause Imports: 5 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// StatusNotStarted indicates that the FlowInstance has not started
	FlowStatusNotStarted FlowStatus = 0

	// StatusActive indicates that the FlowInstance is active
	FlowStatusActive FlowStatus = 100

	// StatusCompleted indicates that the FlowInstance has been completed
	FlowStatusCompleted FlowStatus = 500

	// StatusCancelled indicates that the FlowInstance has been cancelled
	FlowStatusCancelled FlowStatus = 600

	// StatusFailed indicates that the FlowInstance has failed
	FlowStatusFailed FlowStatus = 700

	// TaskStatusNotStarted indicates that the Task has not been started
	TaskStatusNotStarted TaskStatus = 0

	// TaskStatusEntered indicates that the Task has been entered
	TaskStatusEntered TaskStatus = 10

	// TaskStatusReady indicates that the Task is ready
	TaskStatusReady TaskStatus = 20

	// TaskStatusWaiting indicates that the Task is waiting
	TaskStatusWaiting TaskStatus = 30

	// TaskStatusDone indicates that the Task is done
	TaskStatusDone TaskStatus = 40

	// TaskStatusSkipped indicates that the Task was skipped
	TaskStatusSkipped TaskStatus = 50

	// TaskStatusFailed indicates that the Task failed
	TaskStatusFailed TaskStatus = 100

	// LinkStatusFalse indicates that the Link evaluated to false
	LinkStatusFalse LinkStatus = 1

	// LinkStatusTrue indicates that the Link evaluated to true
	LinkStatusTrue LinkStatus = 2

	// LinkStatusSkipped indicates that the Link has been skipped
	LinkStatusSkipped LinkStatus = 3
)

Variables

This section is empty.

Functions

func Register

func Register(flowModel *FlowModel)

Register registers the specified flow model

func RegisterDefault

func RegisterDefault(flowModel *FlowModel)

Register registers the specified flow model

Types

type EnterResult

type EnterResult int
const (
	ERNotReady EnterResult = iota
	EREval
	ERSkip
)

type EvalResult

type EvalResult int
const (
	EvalFail EvalResult = iota
	EvalDone
	EvalRepeat
	EvalWait
	EvalSkip
)

type FlowBehavior

type FlowBehavior interface {

	// Start the flow instance.  Returning true indicates that the
	// flow can start and enter the specified tasks.
	// Return false indicates that the flow could not be started
	// at this time.
	Start(context FlowContext) (started bool, taskEntries []*TaskEntry)

	// StartErrorHandler start the error handler for the flow.
	// Return the list of tasks to start
	StartErrorHandler(context FlowContext) (taskEntries []*TaskEntry)

	// Resume the flow instance.  Returning true indicates that the
	// flow can resume.  Return false indicates that the flow
	// could not be resumed at this time.
	Resume(context FlowContext) (resumed bool)

	// TasksDone is called when a terminal task is Done.
	TaskDone(context FlowContext) (flowDone bool)

	// Done is called when the flow is done.
	Done(context FlowContext)
}

FlowBehavior is the execution behavior of the Flow.

type FlowContext

type FlowContext interface {

	// FlowDefinition returns the Flow definition associated with this context
	FlowDefinition() *definition.Definition

	// TaskInstances get the task instances
	TaskInstances() []TaskInstance

	// Status gets the state of the Flow instance
	Status() FlowStatus

	// Logger the logger for the flow instance
	Logger() log.Logger
}

FlowContext is the execution context of the Flow when executing a Flow Behavior function

type FlowModel

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

FlowModel defines the execution Model for a Flow. It contains the execution behaviors for Flows and Tasks.

func Default

func Default() *FlowModel

func Get

func Get(id string) (*FlowModel, error)

Get gets specified FlowModel

func New

func New(name string) *FlowModel

New creates a new FlowModel from the specified Behaviors

func Registered

func Registered() []*FlowModel

Registered gets all the registered flow models

func (*FlowModel) GetDefaultTaskBehavior

func (fm *FlowModel) GetDefaultTaskBehavior() TaskBehavior

RegisterDefaultTaskBehavior registers the default TaskBehavior for the Model

func (*FlowModel) GetFlowBehavior

func (fm *FlowModel) GetFlowBehavior() FlowBehavior

GetFlowBehavior returns FlowBehavior of the FlowModel

func (*FlowModel) GetTaskBehavior

func (fm *FlowModel) GetTaskBehavior(id string) TaskBehavior

GetTaskBehavior returns TaskBehavior with the specified ID in he FlowModel

func (*FlowModel) IsValidTaskType

func (fm *FlowModel) IsValidTaskType(taskType string) bool

func (*FlowModel) Name

func (fm *FlowModel) Name() string

Name returns the name of the FlowModel

func (*FlowModel) RegisterDefaultTaskBehavior

func (fm *FlowModel) RegisterDefaultTaskBehavior(id string, taskBehavior TaskBehavior)

func (*FlowModel) RegisterFlowBehavior

func (fm *FlowModel) RegisterFlowBehavior(flowBehavior FlowBehavior)

RegisterFlowBehavior registers the specified FlowBehavior with the Model

func (*FlowModel) RegisterTaskBehavior

func (fm *FlowModel) RegisterTaskBehavior(id string, taskBehavior TaskBehavior)

RegisterTaskBehavior registers the specified TaskBehavior with the Model

type FlowStatus

type FlowStatus int

type LinkInstance

type LinkInstance interface {

	// Link returns the Link associated with this Link Instance
	Link() *definition.Link

	// Status gets the state of the Link instance
	Status() LinkStatus

	// SetStatus sets the state of the Link instance
	SetStatus(status LinkStatus)
}

LinkInstance is the instance of a link

type LinkStatus

type LinkStatus int

type TaskBehavior

type TaskBehavior interface {

	// Enter determines if a Task is ready to be evaluated, or needs to be
	// skipped
	Enter(context TaskContext) (enterResult EnterResult)

	// Eval is called when a Task is being evaluated.  Returning true indicates
	// that the task is done.  If err is set, it indicates that the
	// behavior intends for the flow ErrorHandler to handle the error
	Eval(context TaskContext) (evalResult EvalResult, err error)

	// PostEval is called when a task that is waiting needs to be notified.
	// If err is set, it indicates that the behavior intends for the
	// flow ErrorHandler to handle the error
	PostEval(context TaskContext) (evalResult EvalResult, err error)

	// Done is called when Eval or PostEval return a result of DONE, indicating
	// that the task is done.  This step is used to finalize the task and
	// determine the next set of tasks to be entered.
	Done(context TaskContext) (notifyFlow bool, taskEntries []*TaskEntry, err error)

	// Skip is called when Enter returns a result of SKIP, indicating
	// that the task should be skipped.  This step is used to skip the task and
	// determine the next set of tasks to be entered.
	Skip(context TaskContext) (notifyFlow bool, taskEntries []*TaskEntry, propagateSkip bool)

	// Error is called when there is an issue executing Eval, it returns a boolean indicating
	// if it handled the error, otherwise the error is handled by the global error handler
	Error(context TaskContext, err error) (handled bool, taskEntries []*TaskEntry)
}

TaskBehavior is the execution behavior of a Task.

type TaskContext

type TaskContext interface {

	// Status gets the state of the Task instance
	Status() TaskStatus

	// SetStatus sets the state of the Task instance
	SetStatus(status TaskStatus)

	// Task returns the Task associated with this context
	Task() *definition.Task

	// GetFromLinkInstances returns the instances of predecessor Links of the current task.
	GetFromLinkInstances() []LinkInstance

	// GetToLinkInstances returns the instances of successor Links of the current task.
	GetToLinkInstances() []LinkInstance

	// EvalLink evaluates the specified link
	EvalLink(link *definition.Link) (bool, error)

	// EvalActivity evaluates the Activity associated with the Task
	EvalActivity() (done bool, err error)

	// PostActivity does post evaluation of the Activity associated with the Task
	PostEvalActivity() (done bool, err error)

	GetSetting(name string) (value interface{}, exists bool)

	SetWorkingData(key string, value interface{})

	GetWorkingData(key string) (interface{}, bool)

	FlowLogger() log.Logger
}

TaskContext is the execution context of the Task when executing a Task Behavior function

type TaskEntry

type TaskEntry struct {
	Task      *definition.Task
	EnterCode int
}

TaskEntry is a struct used to specify what Task to enter and its corresponding enter code

type TaskInstance

type TaskInstance interface {

	// Task returns the Task associated with this Task Instance
	Task() *definition.Task

	// Status gets the state of the Task instance
	Status() TaskStatus
}

type TaskStatus

type TaskStatus int

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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