metadata

package
v0.0.0-...-23becbe Latest Latest
Warning

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

Go to latest
Published: Aug 10, 2021 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ProjectEntityCreated      domain.Event = "project_entity_created"
	ProjectSaved              domain.Event = "project_saved"
	StateEntitiesCreated      domain.Event = "state_entities_created"
	StatesSaved               domain.Event = "states_saved"
	ActionEntitiesCreated     domain.Event = "action_entities_created"
	ActionsSaved              domain.Event = "actions_saved"
	TransitionEntitiesCreated domain.Event = "transition_entities_created"
	TransitionsSaved          domain.Event = "transitions_saved"
	WorkersSaved              domain.Event = "workers_saved"
	WorkFlowLoaded            domain.Event = "workflow_onload"
)

a list of domain events triggered inside the workflow's aggregate

Variables

This section is empty.

Functions

This section is empty.

Types

type ActionPayload

type ActionPayload struct {
	Name string `json:"name"`
	Type string `json:"type"`
}

ActionPayload used as bridge from the outside world to request an action's entity domain model

type Query

type Query struct {
	*core.Component
	// contains filtered or unexported fields
}

func NewQuery

func NewQuery(project, activity string, states []*state.State, actions []*action.Entity, transitions []*transition.Entity, workers []*worker.Entity) *Query

func (*Query) Actions

func (q *Query) Actions() []*action.Entity

func (*Query) GetActionType

func (q *Query) GetActionType(a action.Action) (action.Type, error)

func (*Query) GetActionWorkers

func (q *Query) GetActionWorkers(actionName action.Action) ([]*worker.Entity, error)

func (*Query) GetNextStateAndAction

func (q *Query) GetNextStateAndAction(current state.State, event string) (action.Action, state.State, error)

func (*Query) IsActionValid

func (q *Query) IsActionValid(a *action.Action) bool

func (*Query) IsStateValid

func (q *Query) IsStateValid(s *state.State) bool

func (*Query) Project

func (q *Query) Project() project.Entity

func (*Query) States

func (q *Query) States() []*state.State

func (*Query) Transitions

func (q *Query) Transitions() []*transition.Entity

type QueryBuilder

type QueryBuilder interface {
	Project() project.Entity
	States() []*state.State
	Actions() []*action.Entity
	Transitions() []*transition.Entity
	IsStateValid(s *state.State) bool
	IsActionValid(a *action.Action) bool
	GetActionType(a action.Action) (action.Type, error)
	GetNextStateAndAction(current state.State, event string) (action.Action, state.State, error)
	GetActionWorkers(actionName action.Action) ([]*worker.Entity, error)
}

type Repository

type Repository interface {
	CreateProject(ctx context.Context, payload project.Persistent) (project.Persistent, error)
	CreateBulkStates(ctx context.Context, payload []state.Persistent) error
	CreateBulkActions(ctx context.Context, payload []action.Persistent) error
	CreateBulkTransitions(ctx context.Context, payload []transition.Persistent) error
	CreateBulkWorkers(ctx context.Context, payload []worker.Persistent) error

	GetProject(ctx context.Context, projectName, activityName string) (*project.Persistent, error)
	GetStates(ctx context.Context, projectUID string) ([]*state.Persistent, error)
	GetActions(ctx context.Context, projectUID string) ([]*action.Persistent, error)
	GetTransitions(ctx context.Context, projectUID string) ([]*transition.Persistent, error)
	GetWorkers(ctx context.Context, projectUID string) ([]*worker.Persistent, error)
}

type TransitionPayload

type TransitionPayload struct {
	Current string `json:"current"`
	Event   string `json:"event"`
	Action  string `json:"action"`
	Next    string `json:"next"`
}

TransitionPayload used as a bridge from the outside world to request a transition's entity domain model

type WorkFlow

type WorkFlow struct {
	*core.Component

	domain.Aggregate
	// contains filtered or unexported fields
}

WorkFlow is an aggregate root which contains states, actions and transitions. This aggregate used as main entry point to manage our domain models

func NewWorkFlow

func NewWorkFlow(repo Repository) *WorkFlow

NewWorkFlow used as WorkFlow's aggregate constructor

func (*WorkFlow) BuildActions

func (wf *WorkFlow) BuildActions(ctx context.Context, projectCreated project.Persistent, payload []ActionPayload) error

BuildActions used to create multiple actions

func (*WorkFlow) BuildProject

func (wf *WorkFlow) BuildProject(ctx context.Context, projectName, activityName string) (project.Persistent, error)

BuildProject used to create a project

func (*WorkFlow) BuildStates

func (wf *WorkFlow) BuildStates(ctx context.Context, projectCreated project.Persistent, states []state.State) error

BuildStates used to create multiple states

func (*WorkFlow) BuildTransitions

func (wf *WorkFlow) BuildTransitions(ctx context.Context, projectCreated project.Persistent, payload []TransitionPayload) error

BuildTransitions used to create multiple transitions

func (*WorkFlow) BuildWorkers

func (wf *WorkFlow) BuildWorkers(ctx context.Context, projectName, activity string, workers []WorkerPayload) error

func (*WorkFlow) Load

func (wf *WorkFlow) Load(ctx context.Context, projectName, activityName string) (QueryBuilder, error)

Load used to load internal entities from the repository, usually persistence storage

type WorkFlowAggregateBuilder

type WorkFlowAggregateBuilder interface {
	BuildProject(ctx context.Context, projectName, activityName string) (project.Persistent, error)
	BuildStates(ctx context.Context, projectCreated project.Persistent, states []state.State) error
	BuildActions(ctx context.Context, projectCreated project.Persistent, payload []ActionPayload) error
	BuildTransitions(ctx context.Context, projectCreated project.Persistent, payload []TransitionPayload) error
	BuildWorkers(ctx context.Context, projectName, activity string, workers []WorkerPayload) error
	Load(ctx context.Context, projectName, activityName string) (QueryBuilder, error)
}

type WorkerPayload

type WorkerPayload struct {
	Name            string `json:"name"`
	Endpoint        string `json:"endpoint"`
	RetryCount      int    `json:"retryCount"`
	ResponseTimeout int    `json:"responseTimeout"`
	Priority        int    `json:"priority"`
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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