飞龙工作流FlowLong:架构设计与技术栈

飞龙工作流FlowLong:架构设计与技术栈

【免费下载链接】flowlong 🔥🔥🔥飞龙工作流 FlowLong 🐉 真正的国产、无代码工作流引擎、低代码集成、功能比飞书钉钉审批流程更加强大🚩为中国特色审批匠心打造❗ 【免费下载链接】flowlong 项目地址: https://gitcode.com/aizuda/flowlong

飞龙工作流(FlowLong)是一个功能强大的模块化工作流引擎,其架构设计围绕核心引擎、数据持久化层和框架适配层展开。技术栈基于Java生态,采用MyBatis-Plus实现数据访问,通过Spring Boot和Solon双框架支持提供灵活的集成方案,并利用JSON模型实现动态流程定义。

整体架构解析

飞龙工作流(FlowLong)是一个功能强大的工作流引擎,其架构设计充分考虑了模块化、扩展性和灵活性。以下是对其整体架构的详细解析:

核心模块划分

FlowLong的架构主要分为以下几个核心模块:

  1. 引擎核心(flowlong-core)
    包含工作流引擎的核心逻辑,如流程定义、任务执行、条件分支处理等。核心类包括:

    • FlowLongEngine: 引擎入口,负责配置和启动工作流。
    • FlowLongContext: 上下文管理,提供流程实例的运行时环境。
    • ProcessModel: 流程模型定义,用于解析和存储流程节点信息。
    • NodeModel: 节点模型,表示流程中的各个节点(如审批节点、条件节点等)。
  2. 数据访问层(flowlong-mybatis-plus)
    基于MyBatis-Plus实现,提供对流程实例、任务、参与者等数据的持久化操作。核心类包括:

    • FlwInstanceDao: 流程实例数据访问。
    • FlwTaskDao: 任务数据访问。
    • FlwTaskActorDao: 任务参与者数据访问。
  3. Spring Boot集成(flowlong-spring-boot-starter)
    提供与Spring Boot的深度集成,支持自动配置和事件监听。核心类包括:

    • FlowLongAutoConfiguration: 自动配置类,注册核心组件。
    • EventTaskListener: 任务事件监听器。
    • EventInstanceListener: 流程实例事件监听器。
  4. Solon集成(flowlong-solon-plugin)
    为Solon框架提供适配支持,核心类包括:

    • XPluginImpl: Solon插件入口。
    • SolonFlowJsonHandler: JSON处理适配器。
  5. 示例项目(flowlong-spring-boot-example / flowlong-solon-example)
    提供Spring Boot和Solon框架的示例代码,帮助用户快速上手。

核心组件交互

以下是一个简化的核心组件交互流程图:

mermaid

关键技术栈

FlowLong采用以下技术栈实现其功能:

技术栈用途
Java核心开发语言
MyBatis-Plus数据访问层框架
Spring Boot提供依赖注入、自动配置等能力
Solon轻量级Java框架,支持插件化扩展
JSON流程模型和数据的序列化与反序列化
Mermaid用于生成流程图和交互图

流程模型设计

FlowLong的流程模型采用节点(Node)和连接线(Edge)的设计,支持多种节点类型:

mermaid

扩展性设计

FlowLong通过以下方式支持扩展:

  1. 自定义表达式
    通过实现FlowLongExpression接口,支持SpEL或其他表达式语言。
  2. 自定义任务参与者
    通过实现TaskActorProvider接口,支持动态分配任务参与者。
  3. 事件监听
    通过实现TaskListenerInstanceListener接口,支持任务和流程实例的事件监听。

总结

FlowLong的架构设计充分体现了模块化和扩展性,通过清晰的模块划分和灵活的扩展机制,能够满足复杂业务流程的需求。其核心组件和关键技术栈的选择,确保了高性能和易用性。

核心模块划分(Core、Solon、Spring Boot)

飞龙工作流(FlowLong)的核心架构分为三个主要模块:CoreSolonSpring Boot。每个模块针对不同的技术栈和场景设计,提供了灵活的集成方式。以下是各模块的详细划分和功能说明:

1. Core 模块

Core 模块是 FlowLong 的核心引擎,负责工作流的核心逻辑和基础功能实现。它不依赖任何特定的框架,可以独立运行或集成到其他框架中。

核心功能
  • 流程定义与解析:通过 ProcessModelParser 解析流程定义,生成可执行的 ProcessModel
  • 流程执行引擎FlowLongEngine 提供流程实例的创建、启动、执行和终止功能。
  • 任务管理TaskServiceRuntimeService 负责任务的创建、分配和执行。
  • 条件节点处理ConditionNodeHandler 处理条件分支逻辑。
  • 缓存与锁机制FlowCacheJobLock 提供流程实例的缓存和并发控制。
关键类
  • FlowLongEngineImpl:流程引擎的核心实现。
  • Execution:流程执行的上下文。
  • ProcessModel:流程定义的模型表示。
  • TaskServiceImplRuntimeServiceImpl:任务和运行时服务的实现。
示例代码
// 创建流程实例
FlwInstance instance = runtimeService.createInstance(process, creator, args, nodeModel, false);
// 启动流程
runtimeService.startProcess(instance.getId());

2. Solon 模块

Solon 模块为 Solon 框架提供了 FlowLong 的集成支持,通过插件和自动配置简化了工作流的集成和使用。

核心功能
  • 自动配置FlowLongAutoConfiguration 自动注册必要的 Bean。
  • 插件机制XPluginImpl 提供 Solon 插件入口。
  • JSON 处理SolonFlowJsonHandler 提供 JSON 序列化和反序列化支持。
  • 表达式解析SolonFlowLongExpression 支持 Solon 环境下的表达式解析。
关键类
  • XPluginImpl:Solon 插件入口。
  • FlowLongAutoConfiguration:自动配置类。
  • SolonFlowJsonHandler:JSON 处理器。
示例代码
// 在 Solon 中启用 FlowLong 插件
@XBean
public class MyPlugin implements XPlugin {
    @Override
    public void start(AppContext context) {
        context.beanScan(FlowLongAutoConfiguration.class);
    }
}

3. Spring Boot 模块

Spring Boot 模块为 Spring Boot 应用提供了 FlowLong 的 Starter 支持,通过自动配置和事件监听简化了工作流的集成。

核心功能
  • 自动配置FlowLongAutoConfiguration 自动注册必要的 Bean。
  • 事件监听EventInstanceListenerEventTaskListener 提供流程和任务的事件监听支持。
  • JSON 处理FlowJacksonHandler 提供 JSON 序列化和反序列化支持。
  • 表达式解析SpelFlowLongExpression 支持 Spring 环境下的表达式解析。
关键类
  • FlowLongAutoConfiguration:自动配置类。
  • EventInstanceListenerEventTaskListener:事件监听器。
  • FlowJacksonHandler:JSON 处理器。
示例代码
// 在 Spring Boot 中启用 FlowLong
@SpringBootApplication
public class FlowLongApplication {
    public static void main(String[] args) {
        SpringApplication.run(FlowLongApplication.class, args);
    }
}

模块对比

模块适用框架核心功能关键特性
Core无依赖流程引擎、任务管理、条件节点处理独立运行,高度灵活
SolonSolon自动配置、插件支持、JSON 处理轻量级,适合 Solon 生态
Spring BootSpring Boot自动配置、事件监听、SpEL 表达式支持适合 Spring Boot 生态,开箱即用

通过以上模块划分,FlowLong 能够灵活适配不同的技术栈和业务场景,满足开发者的多样化需求。

技术栈与依赖(MyBatis Plus、JSON模型)

飞龙工作流(FlowLong)是一个功能强大的工作流引擎,其技术栈和依赖设计充分体现了现代Java开发的灵活性和高效性。以下将重点介绍项目中核心的技术栈组件及其依赖关系,特别是MyBatis Plus和JSON模型的应用。

MyBatis Plus:高效的数据持久化

MyBatis Plus作为ORM框架,为FlowLong提供了强大的数据库操作能力。其核心优势在于简化了CRUD操作,同时支持动态SQL和灵活的查询构建。以下是MyBatis Plus在项目中的典型应用场景:

  1. 实体类与数据库表映射
    项目中的实体类(如FlwInstanceFlwTask等)通过注解与数据库表直接关联,例如:

    @TableName("flw_instance")
    public class FlwInstance {
        @TableId(type = IdType.AUTO)
        private Long id;
        private String businessKey;
        // 其他字段
    }
    
  2. 动态SQL支持
    MyBatis Plus的动态SQL功能使得复杂查询变得简单。例如,FlwTaskDaoImpl中的查询方法:

    @Override
    public FlwTask selectById(Long id) {
        return getById(id);
    }
    
  3. 分页与性能优化
    结合MyBatis Plus的分页插件,FlowLong实现了高效的分页查询,例如:

    Page<FlwTask> page = new Page<>(1, 10);
    QueryWrapper<FlwTask> wrapper = new QueryWrapper<>();
    wrapper.eq("instance_id", instanceId);
    taskDao.selectPage(page, wrapper);
    
  4. 事务管理
    通过@Transactional注解,FlowLong确保了数据操作的原子性和一致性,特别是在流程实例的创建和任务执行过程中。

JSON模型:灵活的流程定义

FlowLong使用JSON作为流程模型的定义格式,这种设计使得流程配置更加灵活且易于扩展。以下是JSON模型在项目中的关键应用:

  1. 流程模型解析
    通过ProcessModelParser类,FlowLong将JSON格式的流程定义解析为Java对象。例如:

    public ProcessModel parse(String content, String cacheKey, boolean redeploy) {
        // 解析JSON内容为ProcessModel对象
    }
    
  2. 动态节点配置
    JSON模型支持动态配置节点属性,例如条件分支、并行分支等。以下是一个简单的JSON流程定义示例:

    {
        "nodes": [
            {
                "nodeKey": "start",
                "type": "START",
                "nextNodeKey": "approval"
            },
            {
                "nodeKey": "approval",
                "type": "APPROVAL",
                "assignee": "user1",
                "nextNodeKey": "end"
            }
        ]
    }
    
  3. 模型缓存与重载
    ProcessModelCache接口负责缓存解析后的JSON模型,以提高性能。例如:

    public interface ProcessModelCache {
        ProcessModel get(String cacheKey);
        void put(String cacheKey, ProcessModel processModel);
    }
    
  4. 条件表达式
    JSON模型中的条件节点(ConditionNode)支持动态表达式,例如:

    {
        "nodeKey": "condition",
        "type": "CONDITION",
        "expression": "${amount > 1000}",
        "nextNodeKey": "approval"
    }
    

技术栈的协同作用

MyBatis Plus和JSON模型在FlowLong中协同工作,形成了高效的数据持久化和灵活的流程定义能力。例如:

  • 数据存储:MyBatis Plus将流程实例、任务等数据持久化到数据库。
  • 流程定义:JSON模型定义了流程的逻辑结构,解析后由引擎执行。
  • 动态扩展:JSON的灵活性使得FlowLong可以轻松支持新的节点类型和业务场景。

以下是一个简单的流程图,展示了技术栈的协同关系: mermaid

通过MyBatis Plus和JSON模型的结合,FlowLong实现了高性能、高灵活性的工作流引擎设计,满足了复杂业务场景的需求。

扩展性与插件机制

飞龙工作流(FlowLong)在设计之初就充分考虑了系统的扩展性与插件机制,通过灵活的接口定义和模块化设计,使得开发者能够轻松地扩展功能或替换默认实现。以下从核心接口、插件机制和扩展点三个方面详细解析其设计。

核心接口与扩展点

FlowLong通过一系列核心接口定义扩展点,开发者可以通过实现这些接口来定制化功能。以下是一些关键接口及其作用:

  1. FlowJsonHandler
    用于处理JSON序列化与反序列化逻辑,开发者可以自定义JSON处理库(如Jackson、Gson等)。

  2. ConditionNodeHandler
    负责条件节点的处理逻辑,支持自定义条件判断规则。

  3. TaskActorProvider
    定义任务处理人的获取逻辑,支持动态分配任务处理人(如基于角色、部门等)。

  4. TaskTrigger
    任务触发逻辑的扩展点,支持自定义任务触发行为(如定时触发、事件触发等)。

  5. FlowLongExpression
    表达式解析接口,支持动态表达式(如SpEL、Groovy等)的扩展。

mermaid

插件机制

FlowLong通过Spring Boot和Solon的自动配置机制实现插件化加载。开发者只需实现相关接口并注册为Bean,即可无缝集成到系统中。例如:

  1. Spring Boot Starter
    FlowLongAutoConfiguration中,通过@ConditionalOnMissingBean注解动态加载默认实现或用户自定义实现:

    @Bean
    @ConditionalOnMissingBean
    public FlowLongExpression flowLongExpression() {
        return new SpelFlowLongExpression();
    }
    
  2. Solon Plugin
    通过XPluginImpl启动插件,动态加载扩展模块:

    @Override
    public void start(AppContext context) {
        context.beanScan("com.aizuda.bpm.solon");
    }
    

扩展场景示例

以下是一个动态任务分配的场景,通过实现TaskActorProvider接口扩展任务处理人逻辑:

public class CustomTaskActorProvider implements TaskActorProvider {
    @Override
    public Integer getActorType(NodeModel nodeModel) {
        // 自定义逻辑:根据节点属性动态返回处理人类型
        return nodeModel.getExtendConfig().containsKey("customType") ? 1 : 0;
    }
}

表格:扩展点与实现类

扩展点默认实现类功能描述
FlowJsonHandlerFlowJacksonHandler基于Jackson的JSON处理
FlowLongExpressionSpelFlowLongExpression基于SpEL的表达式解析
TaskActorProviderGeneralTaskActorProvider通用任务处理人分配逻辑
TaskTriggerDefaultTaskTrigger默认任务触发逻辑

通过以上设计,FlowLong实现了高度的灵活性和可扩展性,开发者可以根据业务需求轻松定制或替换核心组件。

总结

FlowLong通过清晰的模块化架构(Core/Solon/Spring Boot)和扩展性设计(自定义表达式、任务参与者、事件监听)实现了工作流引擎的高灵活性与易用性。其技术栈选择(MyBatis-Plus/JSON/SpEL)兼顾性能与开发效率,插件机制支持快速适配不同业务场景,最终形成了一套可扩展、高性能的轻量级工作流解决方案。

【免费下载链接】flowlong 🔥🔥🔥飞龙工作流 FlowLong 🐉 真正的国产、无代码工作流引擎、低代码集成、功能比飞书钉钉审批流程更加强大🚩为中国特色审批匠心打造❗ 【免费下载链接】flowlong 项目地址: https://gitcode.com/aizuda/flowlong

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值