Skip to content
@littlehorse-enterprises

LittleHorse Enterprises LLC

The Open-Source Platform for Business-as-Code

LH

littlehorse.io littlehorse.io/learn littlehorse.io/docs

LittleHorse is the pioneer of the Business-as-Code approach to codifying and orchestrating processes across multiple systems. Built with love by developers, for developers!

Our Business-as-Code approach lets you write code in a language of your choice (Java, Python, Go, C#, Typescript) to specify processes which are durably orchestrated across your systems. We enable Business-as-Code primarily through the LittleHorse Server which is our distributed workflow engine for Business-as-Code. Business-as-Code provides a higher level of abstraction for software engineers to work closer to the business process and (therefore) closer to business value.

What is Business-as-Code?

Business-as-Code is the practice of codifying and orchestrating processes across multiple SaaS systems, microservices, agents, and people. Business-as-Code explicitly specifies process logic at the business level from the top-down rather than letting processes emerge bottom-up via brittle point-to-point connections between systems. Developers use Business-as-Code to codify diverse processes ranging from back-office, manual workflows to SaaS integration workflows to real-time, event-driven microservice workflows.

LH

☝️ This picture shows a running instance (WfRun) for the process (WfSpec) defined by this code 👇

public void quickstartWf(WorkflowThread wf) {
    WfRunVariable fullName = wf.declareStr("full-name").searchable().required();
    WfRunVariable email = wf.declareStr("email").searchable().required();

    // Social Security Numbers are sensitive, so we mask the variable with `.masked()`.
    WfRunVariable ssn = wf.declareInt("ssn").masked().required();

    WfRunVariable identityVerified = wf.declareBool("identity-verified").searchable();

    wf.execute(VERIFY_IDENTITY_TASK, fullName, email, ssn).withRetries(3);

    NodeOutput identityVerificationResult = wf.waitForEvent(IDENTITY_VERIFIED_EVENT)
            .timeout(60 * 5) // 5 minute timeout
            .withCorrelationId(email)
            .registeredAs(Boolean.class);

    wf.handleError(identityVerificationResult, LHErrorType.TIMEOUT, handler -> {
        handler.execute(NOTIFY_CUSTOMER_NOT_VERIFIED_TASK, fullName, email);
        handler.fail("customer-not-verified", "Unable to verify customer identity in time.");
    });

    identityVerified.assign(identityVerificationResult);

    wf.doIf(identityVerified.isEqualTo(true), ifBody -> {
        ifBody.execute(NOTIFY_CUSTOMER_VERIFIED_TASK, fullName, email);
    })
    .doElse(elseBody -> {
        elseBody.execute(NOTIFY_CUSTOMER_NOT_VERIFIED_TASK, fullName, email);
    });
}

As you can see, the code above closely mirrors our example KYC business process. LittleHorse handles retries, timeouts, and orchestration across services for you, allowing your WfSpec to focus just on what matters to the business. Task workers handle integrations with external systems and databases.

Pinned Loading

  1. littlehorse littlehorse Public

    LittleHorse Server: Workflow Engine for Microservice Orchestration & Business-as-Code, and the core of the Saddle Command Center

    Java 394 36

  2. lh-examples lh-examples Public

    Examples of applications built using LittleHorse features in a practical setting.

    Java 8 5

  3. lh-kafka-connect lh-kafka-connect Public

    Trigger workflows and post events to the LittleHorse Server using Sink Connectors for Apache Kafka Connect.

    Java 5 3

  4. lh-quarkus lh-quarkus Public

    Quarkus extension for managing workflows & tasks in LittleHorse.

    Java 3 1

  5. lh-developer-hub lh-developer-hub Public

    WIP: Combined skills and examples and demos repo in one place.

Repositories

Showing 10 of 26 repositories

Top languages

Loading…

Most used topics

Loading…