mirror of https://github.com/allinssl/allinssl
34 lines
840 B
Go
34 lines
840 B
Go
package workflow
|
|
|
|
import "ALLinSSL/backend/public"
|
|
|
|
func NewExecutionContext(RunID string) *ExecutionContext {
|
|
Logger, _ := public.NewLogger(public.GetSettingIgnoreError("workflow_log_path") + RunID + ".log")
|
|
return &ExecutionContext{
|
|
Data: make(map[string]any),
|
|
Status: make(map[string]ExecutionStatus),
|
|
RunID: RunID,
|
|
Logger: Logger,
|
|
}
|
|
}
|
|
|
|
func (ctx *ExecutionContext) SetOutput(nodeID string, output any, status ExecutionStatus) {
|
|
ctx.mu.Lock()
|
|
defer ctx.mu.Unlock()
|
|
ctx.Data[nodeID] = output
|
|
ctx.Status[nodeID] = status
|
|
}
|
|
|
|
func (ctx *ExecutionContext) GetOutput(nodeID string) (any, bool) {
|
|
ctx.mu.RLock()
|
|
defer ctx.mu.RUnlock()
|
|
out, ok := ctx.Data[nodeID]
|
|
return out, ok
|
|
}
|
|
|
|
func (ctx *ExecutionContext) GetStatus(nodeID string) ExecutionStatus {
|
|
ctx.mu.RLock()
|
|
defer ctx.mu.RUnlock()
|
|
return ctx.Status[nodeID]
|
|
}
|