LiteFlow LiteFlow
💒Home
📚Documents
💖Donation
🚀Plugin
  • About LiteFlow
  • Update Record
Community
Users
Gitee (opens new window)
Github (opens new window)
  • 简体中文 (opens new window)
  • English (opens new window)
💒Home
📚Documents
💖Donation
🚀Plugin
  • About LiteFlow
  • Update Record
Community
Users
Gitee (opens new window)
Github (opens new window)
  • 简体中文 (opens new window)
  • English (opens new window)
  • 🍤Introduction
    • Foreword
    • Advantages of the LiteFlow Framework
    • Design Principles of LiteFlow
    • What scenarios are LiteFlow not suitable for?
    • What scenarios LiteFlow is suitable for
  • 🍓Features
  • 🍟Quick Start(Hello world)

    • 🍄Notice
    • 🌿Springboot environment

      • 🧬Dependency
      • ⚙️Config
      • 🛫Execute
    • 🌱Spring environment

      • 🧬Dependency
      • ⚙️Config
      • 🛫Execute
    • 🌵Other environment

      • 🍄Notice
      • 🧬Dependency
      • ⚙️Config
      • 🛫Execute
  • 🍢Configuration item

    • 🍄Notice
    • 🌿Springboot environment
    • 🌱Spring environment
    • 🌵Other environment
  • 🗂Rules file

    • 📔Rules file format
    • 📕Local rule file
    • 📗Zookeeper source
    • 📘SQL database source
    • 📋Nacos source
    • 🗄Etcd source
    • 📙Custom source
  • 🔗General components

    • 📎Common component
    • ✂️Switch component
    • 📌If component
    • 🧬For component
    • ⛓While component
    • 🧿Break component
  • 🧩How to write EL rules

    • 🍄Notice
    • 🌴Serial mode
    • 🎋Parallel mode
    • 🌾Switch mode
    • 🌵If mode
    • 🌳Loop mode
    • 🍁Use sub chain
    • 🍂Use sub variables
    • 💐Complex example
    • 🌻About semicolons
    • 🌰About comments
    • 🐚Component Name Package
  • 🌮Data context

    • 🍄Notice
    • 🌯Definition and use
    • 🪶Pass initialized context
  • 🛩Flow executor

    • 🍄Notice
    • 🎡Executor method
    • 🎢Chain input parameter
    • 🎈LiteflowResponse object
  • 🍋Script component

    • 🍫Choose a script language
    • 🍕Define script component
    • 🌯Define file script
    • 🍣Interact with java
    • 🍘Dynamic refresh script
  • 🍇Declarative component

    • 🥭What is a declarative component
    • 🧅Class level declaration
    • 🥥Method level declaration
  • 🎲Dynamic rules

    • 🍄Notice
    • 🎯How to build
  • 🎨Advanced features

    • 🍒Pre & Finally components
    • 🥠Substitute component
    • 🍉Component Parameters
    • 🍑Component alias
    • 🍍Component tag
    • 🥝Component event
    • 🥑Implicit chain
    • 🍕Private delivery
    • 🍣Component retry
    • 🍖Smooth hot refresh
    • 🍪Component aspect
    • 🍡Step information
    • 🧊Exceptions
    • 🧇Printing details
    • 🧁Custom request id
    • 🌭Multiple type rules
    • 🥗Asynchronous thread pool
    • 🍿Custom component executor
    • 🍥Simple monitor
    • 🧉DTD in Xml
  • ⛱Test cases and demo

    • 🪁Test cases
    • 🪀Demo
  • 🪂Performance
  • v2.9.X文档
铂赛东
2022-06-16
Contents

🍤Introduction

# Foreword

In every company's system, there are always some systems with complex business logic, these systems carry the core business logic, almost every requirement is related to these core business, these core business logic is lengthy, involving internal logic operations, cache operations, persistence operations, external resources fetching, internal other system RPC calls and so on. Over time, the project has changed hands several times, and the cost of maintenance will become higher and higher. All kinds of hard code judgments, branching conditions more and more. The code abstraction, reuse rate is also getting lower and lower, and the coupling between various modules is high. A small change in logic affects other modules and requires complete regression testing to verify. If you want to change the order of business processes flexibly, you have to make big code changes for abstraction and rewrite the methods. Real-time hot changes to business processes are almost impossible to achieve.

How to break the deadlock?LiteFlow is made for decoupling logic and orchestration, after using LiteFlow, you will find it becomes very easy to build a low-coupling and flexible system.

# Advantages of the LiteFlow Framework

If you want to rewrite or refactor complex business logic, LiteFlow is the most suitable. It is a lightweight and fast component-based rule engine framework, which orchestrates components, helps decouple business code, makes each business segment a component, and supports hot refresh rule configuration for instant modification.

With LiteFlow, you need to split the complex business logic into small components by code fragments and define a rule flow configuration. In this way, all components can be configured according to your rules for complex flow.

And all this, you just need to define the rules. LiteFlow provides extremely simple and easy-to-understand regular expressions.



Components can be hot-replaced in real time, and a component can be added to a rule in real time to change your business logic.



LiteFlow's scripting component supports three scripting languages, and is fully compatible with Java. You can use scripts to implement any logic.



LiteFlow supports putting rules and scripts in databases, registry centers, and interfaces that can be extended arbitrarily, which is convenient for you to customize.

Have you ever thought about how to implement the following complex logic flow in code?

For example:

examples

Another example:

examples

At the same time, ensure that all components are flexible and changeable.

I believe that someone must be able to achieve it, but it requires a certain development cost.

And all of the above, with LiteFlow, you can easily get it!

# Design Principles of LiteFlow

LiteFlow is designed based on the workbench mode. What is the workbench mode?

Many workers surround a workbench in a certain order, and produce parts in sequence. The produced parts can eventually be assembled into a machine. Each worker only needs to complete his own task without knowing the production tasks of other workers. The resources required for each worker's production are taken from the workbench. If the workbench has the necessary resources for production, it will be produced. If not, it will wait until the resource is available. The parts made by each worker are also placed on the workbench.

This mode has several benefits:

  • Each worker does not need to communicate with other workers. Workers only need to care about their work content and the resources on the workbench. This achieves decoupling and indifference between each worker.
  • Even if workers change positions, the content of workers' work and the resources they care about do not change. This ensures the stability of each worker.
  • If a worker is assigned to another workstation, the worker's job content and required resources remain unchanged, which ensures reusability.
  • Because each worker does not need to communicate with other workers, it is possible to make real-time workstation changes as the production task proceeds: replacements, insertions, removal of some workers, so that the production task can also be changed in real time. This ensures the flexibility of the entire production task.

This pattern is mapped to the LiteFlow framework, where workers are components, the order in which workers sit is the process configuration, the workbench is the context, the resources are the parameters, and the final assembly of this machine is this business. Because of these features, LiteFlow can achieve uniform decoupling of components and flexible assembly.

# What scenarios are LiteFlow not suitable for?

Since LiteFlow has been open source, I've often been asked the question: How does LiteFlow do the flow between role tasks, similar to approval flow, where A should be approved by B after approval, and then flow to C role.

tip

LiteFlow only does logic-based flow, not role-based task flow. If you want to do role-based task flow, it is recommended to useflowable (opens new window).

# What scenarios LiteFlow is suitable for

LiteFlow is suitable for businesses with complex logic, such as pricing engines, order submission processes, etc. These businesses often have many steps, which can be completely broken down into individual components according to business granularity and assembled for reuse changes. With LiteFlow, you get a highly flexible and scalable system. Because the components are independent of each other, you can also avoid the risk of changing one place and moving the whole body.

Help us improve this document (opens new window)
last update: 2022/11/30, 22:42:09
🍓Features

🍓Features→

Theme by Vdoing | Copyright © 2020-2022 铂赛东 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式