instance

package
v1.0.3 Latest Latest
Warning

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

Go to latest
Published: Jul 23, 2019 License: BSD-3-Clause Imports: 23 Imported by: 1

Documentation

Index

Constants

View Source
const (
	OpStart   = iota // 0
	OpResume         // 1
	OpRestart        // 2
)

Variables

This section is empty.

Functions

func ApplyExecOptions

func ApplyExecOptions(instance *IndependentInstance, execOptions *ExecOptions)

ApplyExecOptions applies any execution options to the flow instance

func DefaultConfig

func DefaultConfig() *support.ServiceConfig

func GetFlowIOMetadata

func GetFlowIOMetadata(flowURI string) (*metadata.IOMetadata, error)

func NewErrorObj

func NewErrorObj(taskId string, msg string) map[string]interface{}

func StartSubFlow

func StartSubFlow(ctx activity.Context, flowURI string, inputs map[string]interface{}) error

Types

type ActivityEvalError

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

func NewActivityEvalError

func NewActivityEvalError(taskName string, errorType string, errorText string) *ActivityEvalError

func (*ActivityEvalError) Error

func (e *ActivityEvalError) Error() string

func (*ActivityEvalError) TaskName

func (e *ActivityEvalError) TaskName() string

func (*ActivityEvalError) Type

func (e *ActivityEvalError) Type() string

type AttributeChange

type AttributeChange struct {
	SubFlowID int
	ChgType   ChgType
	Attribute *data.Attribute
}

AttributeChange represents a change to an Attribute

type ChgType

type ChgType int

ChgType denotes the type of change for an object in an instance

const (
	// CtAdd denotes an addition
	CtAdd ChgType = 1
	// CtUpd denotes an update
	CtUpd ChgType = 2
	// CtDel denotes an deletion
	CtDel ChgType = 3
)

type ExecOptions

type ExecOptions struct {
	Patch       *support.Patch
	Interceptor *support.Interceptor
}

ExecOptions are optional Patch & Interceptor to be used during instance execution

type IDGenerator

type IDGenerator interface {
	//NewFlowInstanceID generate a new instance ID
	NewFlowInstanceID() string
}

IDGenerator generates IDs for flow instances

type IDResponse

type IDResponse struct {
	ID string `json:"id"`
}

IDResponse is a response object consists of an ID

type IndependentInstance

type IndependentInstance struct {
	*Instance

	ChangeTracker *InstanceChangeTracker
	// contains filtered or unexported fields
}

func NewIndependentInstance

func NewIndependentInstance(instanceID string, flowURI string, flow *definition.Definition, logger log.Logger) (*IndependentInstance, error)

New creates a new Flow Instance from the specified Flow

func (*IndependentInstance) ApplyInterceptor

func (inst *IndependentInstance) ApplyInterceptor(interceptor *flowsupport.Interceptor)

func (*IndependentInstance) ApplyPatch

func (inst *IndependentInstance) ApplyPatch(patch *flowsupport.Patch)

func (*IndependentInstance) DoStep

func (inst *IndependentInstance) DoStep() bool

func (*IndependentInstance) GetChanges

func (inst *IndependentInstance) GetChanges() *InstanceChangeTracker

GetChanges returns the Change Tracker object

func (*IndependentInstance) HandleGlobalError

func (inst *IndependentInstance) HandleGlobalError(containerInst *Instance, err error)

HandleGlobalError handles instance errors

func (*IndependentInstance) MarshalJSON

func (inst *IndependentInstance) MarshalJSON() ([]byte, error)

MarshalJSON overrides the default MarshalJSON for FlowInstance

func (*IndependentInstance) ResetChanges

func (inst *IndependentInstance) ResetChanges()

ResetChanges resets an changes that were being tracked

func (*IndependentInstance) Restart

func (inst *IndependentInstance) Restart(id string, manager *flowsupport.FlowManager) error

// Restart indicates that this FlowInstance was restarted

func (*IndependentInstance) Start

func (inst *IndependentInstance) Start(startAttrs map[string]interface{}) bool

func (*IndependentInstance) StepID

func (inst *IndependentInstance) StepID() int

StepID returns the current step ID of the Flow Instance

func (*IndependentInstance) UnmarshalJSON

func (inst *IndependentInstance) UnmarshalJSON(d []byte) error

UnmarshalJSON overrides the default UnmarshalJSON for FlowInstance

type Instance

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

func (*Instance) FindOrCreateLinkData

func (inst *Instance) FindOrCreateLinkData(link *definition.Link) (linkInst *LinkInst, created bool)

FindOrCreateLinkData finds an existing LinkInst or creates ones if not found for the specified link the task environment

func (*Instance) FindOrCreateTaskData

func (inst *Instance) FindOrCreateTaskData(task *definition.Task) (taskInst *TaskInst, created bool)

FindOrCreateTaskData finds an existing TaskInst or creates ones if not found for the specified task the task environment

func (*Instance) FlowDefinition

func (inst *Instance) FlowDefinition() *definition.Definition

FlowDefinition returns the Flow definition associated with this context

func (*Instance) FlowURI

func (inst *Instance) FlowURI() string

func (*Instance) GetError

func (inst *Instance) GetError() error

func (*Instance) GetReturnData

func (inst *Instance) GetReturnData() (map[string]interface{}, error)

func (*Instance) GetValue

func (inst *Instance) GetValue(name string) (value interface{}, exists bool)

func (*Instance) ID

func (inst *Instance) ID() string

func (*Instance) IOMetadata

func (inst *Instance) IOMetadata() *metadata.IOMetadata

IOMetadata get the input/output metadata of the activity host

func (*Instance) Logger

func (inst *Instance) Logger() log.Logger

func (*Instance) MarshalJSON

func (inst *Instance) MarshalJSON() ([]byte, error)

MarshalJSON overrides the default MarshalJSON for FlowInstance

func (*Instance) Name

func (inst *Instance) Name() string

func (*Instance) Reply

func (inst *Instance) Reply(replyData map[string]interface{}, err error)

func (*Instance) Return

func (inst *Instance) Return(returnData map[string]interface{}, err error)

func (*Instance) Scope

func (inst *Instance) Scope() data.Scope

func (*Instance) SetResultHandler

func (inst *Instance) SetResultHandler(handler action.ResultHandler)

InitActionContext initialize the action context, should be initialized before execution

func (*Instance) SetStatus

func (inst *Instance) SetStatus(status model.FlowStatus)

func (*Instance) SetValue

func (inst *Instance) SetValue(name string, value interface{}) error

func (*Instance) Status

func (inst *Instance) Status() model.FlowStatus

Status returns the current status of the Flow Instance

func (*Instance) TaskInstances

func (inst *Instance) TaskInstances() []model.TaskInstance

TaskInstances get the task instances

func (*Instance) UnmarshalJSON

func (inst *Instance) UnmarshalJSON(d []byte) error

UnmarshalJSON overrides the default UnmarshalJSON for FlowInstance

func (*Instance) UpdateAttrs

func (inst *Instance) UpdateAttrs(attrs map[string]interface{})

UpdateAttrs updates the attributes of the Flow Instance

type InstanceChange

type InstanceChange struct {
	SubFlowID   int
	Status      model.FlowStatus
	AttrChanges []*AttributeChange

	SubFlowChg *SubFlowChange

	State int
	// contains filtered or unexported fields
}

InstanceChange represents a change to the instance

func (*InstanceChange) MarshalJSON

func (ic *InstanceChange) MarshalJSON() ([]byte, error)

MarshalJSON overrides the default MarshalJSON for InstanceChangeTracker

type InstanceChangeTracker

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

InstanceChangeTracker is used to track all changes to an instance

func NewInstanceChangeTracker

func NewInstanceChangeTracker() *InstanceChangeTracker

NewInstanceChangeTracker creates an InstanceChangeTracker

func (*InstanceChangeTracker) AttrChange

func (ict *InstanceChangeTracker) AttrChange(subFlowId int, chgType ChgType, attribute *data.Attribute)

AttrChange is called to track a status change of an Attribute

func (*InstanceChangeTracker) MarshalJSON

func (ict *InstanceChangeTracker) MarshalJSON() ([]byte, error)

MarshalJSON overrides the default MarshalJSON for InstanceChangeTracker

func (*InstanceChangeTracker) ResetChanges

func (ict *InstanceChangeTracker) ResetChanges()

ResetChanges is used to reset any tracking data stored on instance objects

func (*InstanceChangeTracker) SetState

func (ict *InstanceChangeTracker) SetState(subFlowId int, state int)

SetStatus is called to track a state change on an instance

func (*InstanceChangeTracker) SetStatus

func (ict *InstanceChangeTracker) SetStatus(subFlowId int, status model.FlowStatus)

SetStatus is called to track a status change on an instance

func (*InstanceChangeTracker) SubFlowChange

func (ict *InstanceChangeTracker) SubFlowChange(parentFlowId int, chgType ChgType, subFlowId int, taskID string)

AttrChange is called to track a status change of an Attribute

type LegacyCtx

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

DEPRECATED

func (*LegacyCtx) ActivityHost

func (l *LegacyCtx) ActivityHost() activity.Host

func (*LegacyCtx) GetInput

func (l *LegacyCtx) GetInput(name string) interface{}

func (*LegacyCtx) GetInputObject

func (l *LegacyCtx) GetInputObject(input data.StructValue) error

func (*LegacyCtx) GetInputSchema

func (l *LegacyCtx) GetInputSchema(name string) schema.Schema

func (*LegacyCtx) GetOutput

func (l *LegacyCtx) GetOutput(name string) interface{}

func (*LegacyCtx) GetOutputSchema

func (l *LegacyCtx) GetOutputSchema(name string) schema.Schema

func (*LegacyCtx) GetSetting

func (l *LegacyCtx) GetSetting(name string) (interface{}, bool)

func (*LegacyCtx) GetSharedTempData

func (l *LegacyCtx) GetSharedTempData() map[string]interface{}

func (*LegacyCtx) Logger

func (l *LegacyCtx) Logger() log.Logger

func (*LegacyCtx) Name

func (l *LegacyCtx) Name() string

func (*LegacyCtx) SetOutput

func (l *LegacyCtx) SetOutput(name string, value interface{}) error

func (*LegacyCtx) SetOutputObject

func (l *LegacyCtx) SetOutputObject(output data.StructValue) error

type LinkInst

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

LinkInst represents data associated with an instance of a Link

func NewLinkInst

func NewLinkInst(inst *Instance, link *definition.Link) *LinkInst

NewLinkInst creates a LinkInst for the specified link in the specified task environment

func (ld *LinkInst) Link() *definition.Link

Link returns the Link associated with ld context

func (*LinkInst) MarshalJSON

func (ld *LinkInst) MarshalJSON() ([]byte, error)

MarshalJSON overrides the default MarshalJSON for LinkInst

func (*LinkInst) SetStatus

func (ld *LinkInst) SetStatus(status model.LinkStatus)

SetStatus sets the current state indicator for the LinkInst

func (*LinkInst) Status

func (ld *LinkInst) Status() model.LinkStatus

Status returns the current state indicator for the LinkInst

func (*LinkInst) UnmarshalJSON

func (ld *LinkInst) UnmarshalJSON(d []byte) error

UnmarshalJSON overrides the default UnmarshalJSON for LinkInst

type LinkInstChange

type LinkInstChange struct {
	ChgType  ChgType
	ID       int
	LinkInst *LinkInst
}

LinkInstChange represents a change to a LinkInst

func (*LinkInstChange) MarshalJSON

func (li *LinkInstChange) MarshalJSON() ([]byte, error)

MarshalJSON overrides the default MarshalJSON for TaskInst

type RecordSnapshotReq

type RecordSnapshotReq struct {
	ID     int    `json:"id"`
	FlowID string `json:"flowID"`
	State  int    `json:"state"`
	Status int    `json:"status"`

	SnapshotData *IndependentInstance `json:"snapshotData"`
}

RecordSnapshotReq serializable representation of the RecordSnapshot request

type RecordStepReq

type RecordStepReq struct {
	ID     int    `json:"id"`
	FlowID string `json:"flowID"`

	//todo should move to the "stepData"
	State  int `json:"state"`
	Status int `json:"status"`
	//todo we should have initial "init" to associate flowURI with flowID, instead of at every step
	FlowURI string `json:"flowURI"`

	StepData *InstanceChangeTracker `json:"stepData"`
}

RecordStepReq serializable representation of the RecordStep request

type RemoteStateRecorder

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

RemoteStateRecorder is an implementation of StateRecorder service that can access flows via URI

func NewRemoteStateRecorder

func NewRemoteStateRecorder(config *support.ServiceConfig) *RemoteStateRecorder

NewRemoteStateRecorder creates a new RemoteStateRecorder

func (*RemoteStateRecorder) Enabled

func (sr *RemoteStateRecorder) Enabled() bool

func (*RemoteStateRecorder) Name

func (sr *RemoteStateRecorder) Name() string

func (*RemoteStateRecorder) RecordSnapshot

func (sr *RemoteStateRecorder) RecordSnapshot(instance *IndependentInstance)

RecordSnapshot implements instance.StateRecorder.RecordSnapshot

func (*RemoteStateRecorder) RecordStep

func (sr *RemoteStateRecorder) RecordStep(instance *IndependentInstance)

RecordStep implements instance.StateRecorder.RecordStep

func (*RemoteStateRecorder) Start

func (sr *RemoteStateRecorder) Start() error

Start implements util.Managed.Start()

func (*RemoteStateRecorder) Stop

func (sr *RemoteStateRecorder) Stop() error

Stop implements util.Managed.Stop()

type RunOptions

type RunOptions struct {
	Op           int
	ReturnID     bool
	FlowURI      string
	InitialState *IndependentInstance
	ExecOptions  *ExecOptions
}

RunOptions the options when running a FlowAction

type StateRecorder

type StateRecorder interface {
	// RecordSnapshot records a Snapshot of the FlowInstance
	RecordSnapshot(instance *IndependentInstance)

	// RecordStep records the changes for the current Step of the Flow Instance
	RecordStep(instance *IndependentInstance)
}

StateRecorder is the interface that describes a service that can record snapshots and steps of a Flow Instance

type SubFlowChange

type SubFlowChange struct {
	SubFlowID int
	TaskID    string
	ChgType   ChgType
}

InstanceChange represents a change to the instance

type TaskInst

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

func NewTaskInst

func NewTaskInst(inst *Instance, task *definition.Task) *TaskInst

func (*TaskInst) ActivityHost

func (ti *TaskInst) ActivityHost() activity.Host

func (*TaskInst) EvalActivity

func (ti *TaskInst) EvalActivity() (done bool, evalErr error)

EvalActivity implements activity.ActivityContext.EvalActivity method

func (ti *TaskInst) EvalLink(link *definition.Link) (result bool, err error)

EvalLink implements activity.ActivityContext.EvalLink method

func (*TaskInst) FlowLogger

func (ti *TaskInst) FlowLogger() log.Logger

func (*TaskInst) GetFromLinkInstances

func (ti *TaskInst) GetFromLinkInstances() []model.LinkInstance

GetFromLinkInstances implements model.TaskContext.GetFromLinkInstances

func (*TaskInst) GetInput

func (ti *TaskInst) GetInput(name string) interface{}

GetInput implements activity.Context.GetInput

func (*TaskInst) GetInputObject

func (ti *TaskInst) GetInputObject(input data.StructValue) error

GetInputObject implements activity.Context.GetInputObject

func (*TaskInst) GetInputSchema

func (ti *TaskInst) GetInputSchema(name string) schema.Schema

func (*TaskInst) GetOutputSchema

func (ti *TaskInst) GetOutputSchema(name string) schema.Schema

func (*TaskInst) GetSetting

func (ti *TaskInst) GetSetting(name string) (value interface{}, exists bool)

func (*TaskInst) GetSharedTempData

func (ti *TaskInst) GetSharedTempData() map[string]interface{}

func (*TaskInst) GetToLinkInstances

func (ti *TaskInst) GetToLinkInstances() []model.LinkInstance

GetToLinkInstances implements model.TaskContext.GetToLinkInstances,

func (*TaskInst) GetWorkingData

func (ti *TaskInst) GetWorkingData(key string) (interface{}, bool)

func (*TaskInst) HasActivity

func (ti *TaskInst) HasActivity() bool

HasActivity implements activity.ActivityContext.HasActivity method

func (*TaskInst) Logger

func (ti *TaskInst) Logger() log.Logger

func (*TaskInst) MarshalJSON

func (ti *TaskInst) MarshalJSON() ([]byte, error)

MarshalJSON overrides the default MarshalJSON for TaskInst

func (*TaskInst) Name

func (ti *TaskInst) Name() string

Name implements activity.Context.Name method

func (*TaskInst) PostEvalActivity

func (ti *TaskInst) PostEvalActivity() (done bool, evalErr error)

EvalActivity implements activity.ActivityContext.EvalActivity method

func (*TaskInst) SetOutput

func (ti *TaskInst) SetOutput(name string, value interface{}) error

SetOutput implements activity.Context.SetOutput

func (*TaskInst) SetOutputObject

func (ti *TaskInst) SetOutputObject(output data.StructValue) error

SetOutputObject implements activity.Context.SetOutputObject

func (*TaskInst) SetStatus

func (ti *TaskInst) SetStatus(status model.TaskStatus)

SetStatus implements flow.TaskContext.SetStatus

func (*TaskInst) SetWorkingData

func (ti *TaskInst) SetWorkingData(key string, value interface{})

func (*TaskInst) Status

func (ti *TaskInst) Status() model.TaskStatus

Status implements flow.TaskContext.GetState

func (*TaskInst) Task

func (ti *TaskInst) Task() *definition.Task

Task implements model.TaskContext.Task, by returning the Task associated with this TaskInst object

func (*TaskInst) UnmarshalJSON

func (ti *TaskInst) UnmarshalJSON(d []byte) error

UnmarshalJSON overrides the default UnmarshalJSON for TaskInst

type TaskInstChange

type TaskInstChange struct {
	ChgType  ChgType
	ID       string
	TaskInst *TaskInst
}

TaskInstChange represents a change to a TaskInst

func (*TaskInstChange) MarshalJSON

func (ti *TaskInstChange) MarshalJSON() ([]byte, error)

MarshalJSON overrides the default MarshalJSON for TaskInst

type WorkItem

type WorkItem struct {
	ID int `json:"id"`

	TaskID    string `json:"taskID"`
	SubFlowID int    `json:"subFlowId"`
	// contains filtered or unexported fields
}

WorkItem describes an item of work (event for a Task) that should be executed on Step

func NewWorkItem

func NewWorkItem(id int, taskInst *TaskInst) *WorkItem

NewWorkItem constructs a new WorkItem for the specified TaskInst

type WorkItemQueueChange

type WorkItemQueueChange struct {
	ChgType  ChgType
	ID       int
	WorkItem *WorkItem
}

WorkItemQueueChange represents a change in the WorkItem Queue

type WorkingDataScope

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

func NewWorkingDataScope

func NewWorkingDataScope(parentScope data.Scope) *WorkingDataScope

NewWorkingDataScope

func (*WorkingDataScope) GetValue

func (s *WorkingDataScope) GetValue(name string) (value interface{}, exists bool)

func (*WorkingDataScope) GetWorkingValue

func (s *WorkingDataScope) GetWorkingValue(name string) (value interface{}, exists bool)

func (*WorkingDataScope) SetValue

func (s *WorkingDataScope) SetValue(name string, value interface{}) error

func (*WorkingDataScope) SetWorkingValue

func (s *WorkingDataScope) SetWorkingValue(name string, value interface{})

Jump to

Keyboard shortcuts

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