Skip to content

Jint WorkflowsDurable JavaScript workflows for .NET

Write long-running orchestration in JavaScript. Suspend, serialize, and resume — potentially days later, in a different process.

Jint Workflows

Quick Example

csharp
var workflow = new WorkflowEngine();
workflow.RegisterSuspendFunction("sleep", args => DurationParser.Parse(args[0]));
workflow.RegisterStepFunction("fetchOrder", args => orderService.GetOrder((string)args[0]!));
workflow.RegisterSuspendFunction("getApproval");

var script = """
    async function processOrder(orderId) {
        const order = await fetchOrder(orderId);   // journaled step
        await sleep('3d');                         // suspends for 3 days
        const approved = await getApproval('manager', orderId);
        return approved ? 'shipped' : 'cancelled';
    }
""";

var result = workflow.RunWorkflow(script, "processOrder", "ORD-001");
// result.Status == Suspended, result.Suspension.ResumeAt == 3 days from now

var json = result.State!.Serialize();            // persist anywhere

// ... 3 days later, in a different process
var resumed = workflow.ResumeWorkflow(script, json);

Released under the Apache-2.0 License.