Skip to main content
Version: LOC v0.10 (legacy)

Context, Railway Error and Task

Data Context is an object injected into logic functions at runtime, which containes some key components:

  • Task and execution-related information
  • Trigger payload

Availability

  • ✓ Generic logic
  • ✓ Aggregator logic

Context

Type:

  • GenericContext (generic logic)
  • AggregatorContext (aggregator logic)

When a logic gets executed, a data context object ctx will be available in both run and handleError functions:

MemberTypeDescription
taskTaskReturn task object. See Task
async payload()Promise<Payload>Return trigger metadata and payload. See Payload
export async function run(ctx) {
// ctx is the data context
}

export async function handleError(ctx, error) {
// the same context as well as error
}

Railway Error

Type: RailwayError

RailwayError is a object extended from the JavaScript Error class, which will be passed to handleError() upon an error occurred:

export async function handleError(ctx, error) {
// ...
const errorMessage = error.message; // error message
const errorLogicId = error.logicPermanentIdentity; // the PID of the logic that have error occurred
}
MemberTypeDescription
namestringError name
messagestringError message
stackstringError stack trace
logicPermanentIdentitystringLogic PID where the error originated
logicRevisionnumberRevision of the logic where the error originated

See Tips on Error Handling for details on logic error handling.

note

If an error was thrown from LOC runtime (for example, from one of the agents), the stack trace would come from LOC core instead of the logic code.

Task

Type: Task

export async function run(ctx) {
const task = ctx.task;
}

A task is an execution of a data process invoked by a trigger. The task object is lazy-loaded and includes the following metadata:

MemberTypeDescription
taskKeyTaskKey, which is { taskId: string, executionId: string }Task ID and execution ID
startTimestampDateTask start datetime
dataProcessVersionedIdentityContextData process permanent ID
currentLogic?VersionedIdentityContextCurrent logic permanent ID
executedLogicsArray<VersionedIdentityContext>An array of identity of executed logic

Versioned Identity Context

Represents the identity of a logic or a data process:

MemberTypeDescription
namestringName
permanentIdentitystringPermanent identity string (PID)
revisionnumberRevision number

Example

const taskId = ctx.task.taskKey.taskId;
const executionId = ctx.task.taskKey.executionId;

const dpPid = ctx.task.dataProcess.permanentIdentity;
const logicPid = ctx.task.currentLogic.permanentIdentity;