nestrs-workflows 1.7.1

Durable workflows for nestrs — NestJS @nestjs/workflows parity.
Documentation

nestrs-workflows

Durable multi-step workflows for nestrs — NestJS @nestjs/workflows analogue.

Persist step results, resume after process restart, and park for human approval. Combine with nestrs-locks for single-runner steppers and nestrs-outbox for side effects.

Install

[dependencies]
nestrs-workflows = "1.7.1"

Or via the umbrella (also enables outbox + locks):

nestrs = { version = "1.7.1", features = ["workflows"] }

Register

use nestrs_workflows::{WorkflowsModule, WorkflowsOptions};

#[module(imports = [WorkflowsModule::register(WorkflowsOptions::default())])]
struct AppModule;

Lifecycle

start → complete_step → … → wait_for_approval → approve → complete_step → …
use nestrs_workflows::WorkflowsService;
use serde_json::json;
use std::sync::Arc;

async fn order_flow(svc: Arc<WorkflowsService>) {
    let inst = svc.start("order.fulfill", json!({ "id": 1 })).await;
    svc.complete_step(&inst.id, "charge", json!({ "ok": true }))
        .await
        .unwrap();

    svc.wait_for_approval(&inst.id).await.unwrap();
    // later, from an admin handler:
    svc.approve(&inst.id).await.unwrap();

    svc.complete_step(&inst.id, "ship", json!({ "carrier": "DHL" }))
        .await
        .unwrap();
}

A new WorkflowsService sharing the same WorkflowStore resumes from persisted state after a logical restart.

Status

WorkflowStatus Meaning
Running Active steps
WaitingApproval Parked until approve
Completed Finished
Failed Terminal failure

Surface

  • WorkflowsModule / WorkflowsOptions / WorkflowsService
  • WorkflowInstance, WorkflowStatus
  • InMemoryWorkflowStore / WorkflowStore trait

Docs

License

MIT OR Apache-2.0.