Slickflow

Current Version: NET8


1. 🤖 AI-Powered Workflow Automation

SlickFlow: Intelligent Workflow Automation with Large Language Models

Slickflow integrates cutting-edge Large Language Model (LLM) nodes directly into BPMN workflows, enabling advanced conversational reasoning, RAG (Retrieval-Augmented Generation), image understanding and other AI capabilities as first-class workflow steps.
This transforms traditional workflow systems into dynamic, AI-driven orchestration platforms.

1.1 Native LLM Node Integration

1.2 Multi-Provider LLM Support

Flexible integration with leading AI services:

1.3 Image Understanding & RAG

1.4 AI Feature Reference

1.5 AI Demo (Key GIF)

AI Image Classification Process Demo
AI Image Classification Demo


2. 🚀 Code-Defined Auto-Execution Engine

Besides designer-based processes, Slickflow provides a code-first auto-execution model based on Slickflow.Graph and WorkflowExecutor.
You can define workflows in C#, run them fully in memory, and let the engine automatically execute all steps without human interaction.

2.1 Code-First Workflow Definition

Use Slickflow.Graph.Model.Workflow to build BPMN-style flows programmatically:

using Slickflow.Graph.Model;

var wf = new Workflow("Order Process", "OrderProcess_Code");

wf.Start("Start")
  .ServiceTask("Validate Order", "Validate001", "ValidateOrder")   // LocalMethod
  .ServiceTask("Calculate Amount", "Calc001", "CalcAmount")       // LocalMethod
  .RagService("RAG Reply", "RAG001")                              // RAG AI node
  .LlmService("LLM Enrich", "LLM001")                             // General LLM node
  .ServiceTask<SaveOrderService>("Save Order", "Save001")         // Local service class
  .End("End");

Key points:

2.2 Auto-Execution with WorkflowExecutor

Auto-execution loop (conceptual):

  1. Start the process and create an instance.
  2. While there are executable activities:
    • Collect next activities.
    • Execute each activity (local method, service class, AI/RAG/LLM, external API, etc.).
    • Move the process forward to the next activity.
  3. Return execution result (status, message, variables, AI response, etc.).

Typical code pattern:

using Slickflow.Engine.Executor;
using Slickflow.Engine.Core.Result;

var result = await new WorkflowExecutor()
    .UseApp("OrderApp-001", "OrderApp")
    .UseProcess(wf)                      // Use code-defined workflow
    .AddVariable("OrderId", "ORD-2025-001")
    .AddVariable("Quantity", "3")
    .AddVariable("UnitPrice", "99.50")
    .Run();

This mode is ideal for:

2.3 Engine Capabilities (.NET8 Core)


3. ✅ Human Approval Workflows (BPM)

On top of AI and auto-execution, Slickflow remains a full-featured human-centric workflow engine for traditional BPM scenarios: approvals, reviews, multi-level routing, etc.

3.1 Workflow Patterns (Key GIFs/Images)

Supported patterns (BPMN-style):

Workflow Pattern

Multiple Instance Pattern

3.2 Core Human-Task Operations (Brief)

Slickflow manages human tasks with features such as:

Code style (simplified):

// Start a process instance
IWorkflowService wfService = new WorkflowService();
var startResult = wfService.CreateRunner("10", "Jack")
    .UseApp("DS-100", "Book-Order", "DS-100-LX")
    .UseProcess("PriceProcessCode")
    .Start();

// Run to next step
var runResult = wfService.CreateRunner("10", "Jack")
    .UseApp("DS-100", "Book-Order", "DS-100-LX")
    .UseProcess("PriceProcessCode")
    .NextStepInt("20", "Alice")
    .Run();

3.3 Code-Style Modeling for Human Approval

You can also define simple approval processes purely in code (sequence example) using Workflow:

using Slickflow.Graph.Model;

// create a simple sequence process diagram by hand code rather than an HTML designer
var wf = new Workflow("simple-process-name", "simple-process-code");

wf.Start("Start")
  .Task("Task1")
  .Task("Task2")
  .End("End");

simple sequence diagram

This gives developers both designer-based and code-based options for modeling human approval workflows.


4. 📦 Demos, Target Users and License

4.1 Demo Projects

4.2 Target Users

4.3 License & Support

If you have any further inquiry, please feel free to contact:


5. 📚 Resources & Docker Deployment

5.1 Documentation

5.2 Wiki

5.3 CodeProject Articles

5.4 Official Website

5.5 Online Demo

5.6 Docker Hub

Pre-built Docker images are available on Docker Hub. Get started in minutes without building from source.

The easiest way to get started – pull one image and run all three services:

docker pull besley2096/slickflow-all:latest
docker run -d \
  -p 5000:5000 \
  -p 5001:5001 \
  -p 8090:8090 \
  -e WfDBConnectionType=PGSQL \
  -e WfDBConnectionString="Server=host.docker.internal;Port=5432;Database=wfdbbpmn2;User Id=postgres;Password=your-password;TimeZone=UTC;" \
  --name slickflow-all \
  besley2096/slickflow-all:latest

Access:

Docker Hub: https://hub.docker.com/r/besley2096/slickflow-all

Separate Images

For better isolation and scaling, use separate images:

Backend API

docker pull besley2096/slickflow-api:latest
docker run -d -p 5000:5000 \
  -e WfDBConnectionType=PGSQL \
  -e WfDBConnectionString="Server=host.docker.internal;Port=5432;Database=wfdbbpmn2;User Id=postgres;Password=your-password;TimeZone=UTC;" \
  --name slickflow-api \
  besley2096/slickflow-api:latest

Frontend Designer

docker pull besley2096/slickflow-designer:latest
docker run -d -p 8090:8090 \
  --name slickflow-designer \
  besley2096/slickflow-designer:latest

WebTest

docker pull besley2096/slickflow-webtest:latest
docker run -d -p 5001:5001 \
  -e WfDBConnectionType=PGSQL \
  -e WfDBConnectionString="Server=host.docker.internal;Port=5432;Database=wfdbbpmn2;User Id=postgres;Password=your-password;TimeZone=UTC;" \
  --name slickflow-webtest \
  besley2096/slickflow-webtest:latest

Docker Compose

Use docker-compose.hub.yml from this repository:

docker-compose -f docker-compose.hub.yml pull
docker-compose -f docker-compose.hub.yml up -d

Image Tags

Available tags for each image:

Database Configuration

API and WebTest containers require database configuration. Supported databases: PostgreSQL, MySQL, SQL Server, Oracle.

Database on Host Machine

-e WfDBConnectionString="Server=host.docker.internal;Port=5432;Database=wfdbbpmn2;User Id=postgres;Password=your-password;TimeZone=UTC;"

Database in Docker Container

-e WfDBConnectionString="Server=postgres;Port=5432;Database=wfdbbpmn2;User Id=postgres;Password=your-password;TimeZone=UTC;"

Remote Database

-e WfDBConnectionString="Server=192.168.1.100;Port=5432;Database=wfdbbpmn2;User Id=postgres;Password=your-password;TimeZone=UTC;"

6. 📞 Contact & 💰 Donation

6.1 Contact

6.2 Donation

Your donation will be used for the continuous research and development of the product and community building.
您的捐赠将用于产品的持续研发和社区建设。

Donate with PayPal