Documentation
¶
Index ¶
- Constants
- Variables
- func DeleteFlow(tag string) (bool, error)
- func HealthCheck() bool
- func HttpGet(w http.ResponseWriter, r *http.Request)
- func HttpSetParams(w http.ResponseWriter, r *http.Request)
- func HttpState(w http.ResponseWriter, r *http.Request)
- func Load(store instances.Store) error
- func Reset(instanceId, updatedBy string) error
- func Rollback(instanceId, updatedBy string) (et.Json, error)
- func Run(instanceId, tag string, step int, tags et.Json, ctx et.Json, createdBy string) (et.Json, error)
- func SetGetInstance(fn GetInstanceFn)
- func SetSetInstance(fn SetInstanceFn)
- func Stop(instanceId, updatedBy string) error
- type CheckList
- type Flow
- func (s *Flow) Consistency(consistency TpConsistency) *Flow
- func (s *Flow) Debug() *Flow
- func (s *Flow) DefineCheckList(tag string, description string) *Flow
- func (s *Flow) IfElse(expression string, yesGoTo int, noGoTo int) *Flow
- func (s *Flow) OnDone(fn func(*Instance)) *Flow
- func (s *Flow) RemoveCheckList(tag string) *Flow
- func (s *Flow) Resilence(totalAttempts int, timeAttempts time.Duration, team string, level string) *Flow
- func (s *Flow) Rollback(fn FnContext) *Flow
- func (s *Flow) Step(name, description string, fn FnContext, stop bool) *Flow
- func (s *Flow) ToJson() et.Json
- type FlowStatus
- type FnContext
- type GetInstanceFn
- type Instance
- func (s *Instance) Done() error
- func (s *Instance) GetParam(key string) interface{}
- func (s *Instance) GetTag(key string) interface{}
- func (s *Instance) GetTraceByStep(step int) []et.Json
- func (s *Instance) GetTraces(idx int) (et.Json, error)
- func (s *Instance) Goto(step int) error
- func (s *Instance) PutParam(value et.Json) (et.Json, error)
- func (s *Instance) PutTag(tags et.Json) error
- func (s *Instance) Save() error
- func (s *Instance) Serialize() ([]byte, error)
- func (s *Instance) SetCheckList(tag string, ok bool, data et.Json) error
- func (s *Instance) SetCtx(ctx et.Json) error
- func (s *Instance) SetParam(key string, value interface{}) (et.Json, error)
- func (s *Instance) SetStatus(status FlowStatus) error
- func (s *Instance) SetTag(key string, value interface{}) error
- func (s *Instance) Stop() error
- func (s *Instance) ToJson() et.Json
- func (s *Instance) ToString() string
- type Result
- type SetInstanceFn
- type Step
- type TpConsistency
- type WorkFlows
Constants ¶
const ( EVENT_WORKFLOW_SET = "workflow:set" EVENT_WORKFLOW_DELETE = "workflow:delete" EVENT_WORKFLOW_STATUS = "workflow:status" EVENT_WORKFLOW_AWAITING = "workflow:awaiting" EVENT_WORKFLOW_RESULTS = "workflow:results" )
const ( MSG_FLOW_CREATED = "Flujo definido Tag:%s version:%s name:%s" MSG_FLOW_NOT_FOUND = "Flujo no encontrado" MSG_FLOW_NOT_INSTANCE = "Flujo no instanciado" MSG_START_WORKFLOW = "Iniciando el workflow" MSG_INSTANCE_ID_REQUIRED = "Instance id es requerido" MSG_INSTANCE_NOT_FOUND = "Instancia no encontrada" MSG_INSTANCE_EXISTS = "Instancia existe" MSG_INSTANCE_FAILED = "Instancia fallido:%s Tag:%s status:%s, step:%d error:%s" MSG_INSTANCE_STATUS = "Instancia:%s Tag:%s status:%s, step:%d" MSG_INSTANCE_DEBUG = "Instancia:%s debug:%s" MSG_INSTANCE_GOTO = "Instancia %s Tag:%s ir al step:%d %s" MSG_INSTANCE_LOAD = "Instancia load:%s tag:%s currentStep:%d" MSG_INSTANCE_ALREADY_DONE = "Instancia ya finalizada Id:%s" MSG_INSTANCE_ALREADY_RUNNING = "Instancia ya en ejecucion Id:%s" MSG_INSTANCE_PENDING = "Instancia pendiente Id:%s" MSG_INSTANCE_CANCEL = "Instancia cancelada Id:%s" MSG_INSTANCE_LOSS = "Instancia perdida Id:%s" MSG_WORKFLOWS_NOT_LOAD = "workFlows not loaded" MSG_ID_REQUIRED = "id es requerido" MSG_INSTANCE_EXPRESSION_TRUE = "Resultado de la expresion es true" MSG_INSTANCE_EXPRESSION_FALSE = "Resultado de la expresion es false" MSG_INSTANCE_ROLLBACK = "Esta intentando hacer rollback de un step que no existe" MSG_INSTANCE_ROLLBACK_STEP = "haciendo rollback del step:%d" MSG_INSTANCE_STEP_CREATED = "Definido step:%d name:%s Tag:%s" MSG_INSTANCE_ROLLBACK_CREATED = "Definido rollback step:%d name:%s Tag:%s" MSG_INSTANCE_ROLLBACK_FAILED = "Rollback Instance:%s Tag:%s status:%s, step:%d error:%s" MSG_INSTANCE_CONSISTENCY = "Consistencia definida Tag:%s consistency:%s" MSG_INSTANCE_RESILIENCE = "Definida resilencia Tag:%s totalAttempts:%d timeAttempts:%s" MSG_INSTANCE_IFELSE = "Definido ifElse step:%d name:%s expresion:%s ? %d : %d Tag:%s" MSG_INSTANCE_GOTO_USER_DECISION = "Por desicion del usuario" MSG_WORKFLOW_DELETE = "Workflow eliminado Tag:%s" MSG_WORKFLOW_DONE_INSTANCE = "Instancia terminada:%s" MSG_WORKFLOW_LIMIT_REQUESTS = "Límite de peticiones alcanzado, el proceso se pondra en espera para ejecusión, instanceId:%s" MSG_INSTANCE_RUN = "Run instance:%s, flow:%s" MSG_INSTANCE_EVALUATE = "error al evaluar expresion:%s, error:%s" )
Variables ¶
var (
ErrorInstanceNotFound = fmt.Errorf(MSG_INSTANCE_NOT_FOUND)
)
var FlowStatusList map[FlowStatus]bool = map[FlowStatus]bool{ FlowStatusPending: true, FlowStatusRunning: true, FlowStatusDone: true, FlowStatusFailed: true, FlowStatusLoss: true, FlowStatusCancel: true, }
Functions ¶
func DeleteFlow ¶
* * DeleteFlow * @param tag string * @return (bool, error) *
func HttpGet ¶ added in v1.1.208
func HttpGet(w http.ResponseWriter, r *http.Request)
* * HttpGet * @params w http.ResponseWriter, r *http.Request *
func HttpSetParams ¶ added in v1.1.208
func HttpSetParams(w http.ResponseWriter, r *http.Request)
* * HttpGetInstance * @params w http.ResponseWriter, r *http.Request *
func HttpState ¶ added in v1.1.208
func HttpState(w http.ResponseWriter, r *http.Request)
* * HttpGetInstance * @params w http.ResponseWriter, r *http.Request *
func Run ¶
func Run(instanceId, tag string, step int, tags et.Json, ctx et.Json, createdBy string) (et.Json, error)
* * Run * @param instanceId, tag string, step int, tags et.Json, ctx et.Json, createdBy string * @return et.Json, error *
func SetGetInstance ¶ added in v1.1.209
func SetGetInstance(fn GetInstanceFn)
func SetSetInstance ¶ added in v1.1.209
func SetSetInstance(fn SetInstanceFn)
Types ¶
type Flow ¶
type Flow struct {
Tag string `json:"tag"`
Version string `json:"version"`
Name string `json:"name"`
Description string `json:"description"`
TotalAttempts int `json:"total_attempts"`
TimeAttempts time.Duration `json:"time_attempts"`
Steps []*Step `json:"steps"`
TpConsistency TpConsistency `json:"tp_consistency"`
CheckList []*CheckList `json:"check_list"`
Team string `json:"team"`
Level string `json:"level"`
CreatedBy string `json:"created_by"`
// contains filtered or unexported fields
}
func New ¶
* * New * @param tag, version, name, description string, fn FnContext, createdBy string * @return *Flow *
func (*Flow) Consistency ¶
func (s *Flow) Consistency(consistency TpConsistency) *Flow
* * Consistency * @param consistency TpConsistency * @return *Flow *
func (*Flow) DefineCheckList ¶ added in v1.1.197
* * DefineCheckList * @param tag string, description string, ok bool, data et.Json * @return *Flow *
func (*Flow) IfElse ¶
* * IfElse * @param expression string, yesGoTo int, noGoTo int * @return *Flow, error *
func (*Flow) RemoveCheckList ¶ added in v1.1.197
* * RemoveCheckList * @param tag string * @return *Flow *
func (*Flow) Resilence ¶
func (s *Flow) Resilence(totalAttempts int, timeAttempts time.Duration, team string, level string) *Flow
* * Resilence * @param totalAttempts int, timeAttempts time.Duration * @return *Flow *
type FlowStatus ¶
type FlowStatus string
const ( FlowStatusPending FlowStatus = "pending" FlowStatusRunning FlowStatus = "running" FlowStatusDone FlowStatus = "done" FlowStatusFailed FlowStatus = "failed" FlowStatusLoss FlowStatus = "loss" FlowStatusCancel FlowStatus = "cancel" )
func Status ¶ added in v1.1.172
func Status(instanceId, status, updatedBy string) (FlowStatus, error)
* * SetStatus * @param instanceId, status, updatedBy string * @return FlowStatus, error *
type Instance ¶ added in v1.1.128
type Instance struct {
*Flow
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
Tag string `json:"tag"`
Id string `json:"id"`
CreatedBy string `json:"created_by"`
UpdatedBy string `json:"updated_by"`
Current int `json:"current"`
Ctx et.Json `json:"ctx"`
Ctxs map[int]et.Json `json:"ctxs"`
Results map[int]*Result `json:"results"`
Rollbacks map[int]*Result `json:"rollbacks"`
Params et.Json `json:"params"`
Traces []et.Json `json:"traces"`
Status FlowStatus `json:"status"`
DoneAt time.Time `json:"done_at"`
Tags et.Json `json:"tags"`
WorkerHost string `json:"worker_host"`
// contains filtered or unexported fields
}
func GetInstance ¶ added in v1.1.138
* * GetInstance * @param instanceId string * @return (*Instance, error) *
func (*Instance) GetParam ¶ added in v1.1.197
* * GetParam * @param key string * @return interface{} *
func (*Instance) GetTraceByStep ¶ added in v1.1.197
* * GetTraceByStep * @params step int * @return []et.Json *
func (*Instance) GetTraces ¶ added in v1.1.197
* * GetTraces * @param idx int * @return (et.Json, error) *
func (*Instance) PutParam ¶ added in v1.1.197
* * PutParam * @param value et.Json * @return et.Json, error *
func (*Instance) SetCheckList ¶ added in v1.1.197
* * SetCheckList * @param tag string, ok bool, data et.Json * @return error *
func (*Instance) SetStatus ¶ added in v1.1.156
func (s *Instance) SetStatus(status FlowStatus) error
* * SetStatus * @param status FlowStatus * @return error *
func (*Instance) SetTag ¶ added in v1.1.197
* * SetTag * @param key string, value interface{} * @return error *
type Result ¶
type Result struct {
Step int `json:"step"`
Ctx et.Json `json:"ctx"`
Attempt int `json:"attempt"`
Result et.Json `json:"result"`
Error string `json:"error"`
}
type SetInstanceFn ¶ added in v1.1.209
type Step ¶
type TpConsistency ¶
type TpConsistency string
const ( TpConsistencyStrong TpConsistency = "strong" TpConsistencyEventual TpConsistency = "eventual" )
type WorkFlows ¶
type WorkFlows struct {
Flows map[string]*Flow `json:"flows"`
Instances map[string]*Instance `json:"instances"`
Results map[string]et.Json `json:"results"`
// contains filtered or unexported fields
}