# 傻瓜工作流工具 **Repository Path**: iqiny/silly ## Basic Information - **Project Name**: 傻瓜工作流工具 - **Description**: 致力于成为更简单更好用的流程引擎数据及业务管理工具。 - **Primary Language**: Java - **License**: MIT - **Default Branch**: develop - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 16 - **Forks**: 6 - **Created**: 2020-09-02 - **Last Updated**: 2026-06-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: activiti, flowable, bpmn ## README # SILLY-ACTIVITI 文档 ### silly-activiti 是什么? silly-activiti 是流程中业务数据管理工具,致力于提供傻瓜式的数据管理服务。 ### 快速开始 #### 使用手册: https://www.yuque.com/u32053479/cgy6lz/tto1f2ww5igxyg5g?singleDoc# 《Silly工具集成》 #### 使用 DEMO: https://gitee.com/iqiny/silly-activiti-demo #### 使用 DEMO-集成 RuoYi: https://gitee.com/iqiny/ry-silly ### 结构说明 ``` - silly + activiti [集成 Activiti 工作流,涉及流程引擎服务] + all [打包控制] + bom [打包版本依赖控制] + common [工具类] + content/spring [集成 Spring,涉及工具容器与内置业务 Controller] + content/starter [集成 Spring Boot starter,提供自动配置] + core [核心包] + orm/mybatisplus-* [MyBatis-Plus 持久化适配] + orm/jdbc [不依赖 MyBatis-Plus 的 JDBC 持久化适配] + orm/tck [ORM 适配兼容性测试套件] + process-engine/* [流程引擎适配] + style [代码 copyright] 针对核心包的说明: - core + base [基础接口] + cache [缓存接口] + common [核心工具] + config [工具配置] + convertor [数据转换器] + engine [流程引擎接口] + group [任务组接口] + read [读取相关对象] + readhandle [读取相关处置器] + resume [流程履历接口] + savehandle [保存相关处置器] + service [傻瓜服务接口] ``` ### 持久化适配选择 Silly 当前官方持久化适配包含 `silly-mybatisplus-2`、`silly-mybatisplus-3`、`silly-mybatisplus-3.5` 和 `silly-jdbc`。MyBatis-Plus 适配继续保留,旧的 `Map` wrapper 入口不删除;已有项目可以继续使用对应版本的 MyBatis-Plus 适配。 `silly-jdbc` 是不依赖 MyBatis-Plus 的 JDBC 适配。第一轮能力边界是单表 CRUD、基础条件查询、排序、选择列、分页、履历,以及 H2/TCK 覆盖的兼容能力;暂不承诺复杂 join、自定义 SQL 体系或数据库方言全集。 下游应用推荐只引入一个默认 ORM 适配依赖。若同时引入多个默认适配,`silly.persistence-provider` 为 `auto` 时会出现配置歧义或 classpath 冲突风险,启动校验会要求显式选择 provider,或者显式配置 `silly.default-crud-service-clazz` 与 `silly.default-resume-service-clazz`。 `silly.persistence-provider` 可选值为 `auto`、`mybatis-plus`、`jdbc`、`custom`,默认 `auto`。该配置对应 starter 中的 `persistenceProvider` 字段,示例优先使用 Spring Boot relaxed binding 的短横线形式。 ### 流程引擎适配选择 Silly 当前官方流程引擎适配族包含 Activiti 与 Flowable,对应 `silly-activiti-*` 和 `silly-flowable-*` 模块。下游应用推荐只引入一个官方流程引擎适配依赖;同一 provider 族的多个版本也不建议同时引入,避免同名默认实现类在 classpath 中产生隐式选择。 `silly.process-engine-provider` 可选值为 `auto`、`activiti`、`flowable`、`custom`,默认 `auto`。 - `auto`:默认值。classpath 中只发现唯一官方流程引擎适配族时自动选择。 - `activiti`:显式选择 Activiti 官方适配族;缺少 Activiti 适配依赖时启动失败。 - `flowable`:显式选择 Flowable 官方适配族;缺少 Flowable 适配依赖时启动失败。 - `custom`:使用下游自定义流程引擎适配。 当 classpath 同时存在 Activiti 与 Flowable 官方适配族时,`auto` 会因为多适配冲突而启动失败。此时应显式配置 `silly.process-engine-provider`,或者使用旧配置 `silly.default-engine-service-clazz` 指定默认流程引擎服务实现。 `silly.default-engine-service-clazz` 继续保留,可作为旧项目兼容入口覆盖 provider 自动选择。自定义适配至少需要提供 `SillyEngineService` bean,或通过 `silly.default-engine-service-clazz` 指向自定义 `SillyEngineService` 实现类;如果需要管理端模型、部署、流程定义和流程实例查询能力,还需要提供 `SillyEngineRepositoryService`。 流程引擎适配合同测试由 `silly-process-engine-tck` 提供。自定义流程引擎适配可在测试作用域依赖该模块,并实现 fixture 复用 Silly 流程引擎合同测试。第一轮 `process-engine/flowable-68` 已作为首个接入通过核心 TCK 的官方适配;Activiti、Flowable 其他版本可按同一 TCK 逐步接入。 ### Maven 依赖示例 如果项目引入了 `silly-bom` 管理版本,下列依赖不需要写 ``;未引入 BOM 时,需要补充当前 Silly 版本。 使用 MyBatis-Plus 3.5: ```xml com.iqiny.silly silly-mybatisplus-3.5 ``` 使用 JDBC 适配: ```xml com.iqiny.silly silly-jdbc ``` 验证自定义 ORM 适配: ```xml com.iqiny.silly silly-orm-tck test ``` 使用 Flowable 6.8 流程引擎适配: ```xml com.iqiny.silly silly-flowable-68 ``` 使用 Activiti 5.2 流程引擎适配: ```xml com.iqiny.silly silly-activiti-52 ``` 官方流程引擎适配依赖通常只选择一个。自定义流程引擎适配可引入 TCK 进行合同测试: ```xml com.iqiny.silly silly-process-engine-tck test ``` ### Spring Boot 配置示例 最小可复制配置: ```yaml silly: process-pattern: classpath*:/silly/*.json entity-scan-package: com.example.demo.silly.entity persistence-provider: jdbc process-engine-provider: flowable web-controller: enable: true url-prefix: /v1/silly filter: enable: true admin: enable: false ``` 通常只需要选择一个官方 ORM 适配依赖,由 classpath 自动发现默认 CRUD/Resume 实现。确实需要显式指定时,可使用以下配置: ```yaml silly: default-crud-service-clazz: com.iqiny.silly.service.crud.DefaultSillyCrudService default-resume-service-clazz: com.iqiny.silly.service.resume.DefaultSillyResumeService default-engine-service-clazz: com.iqiny.silly.service.process.DefaultSillyProcessEngineService ``` 使用 Flowable 官方适配: ```yaml silly: process-engine-provider: flowable ``` 使用 Activiti 官方适配: ```yaml silly: process-engine-provider: activiti ``` 使用自定义流程引擎适配: ```yaml silly: process-engine-provider: custom ``` `custom` 模式下,下游应用需要提供 `SillyEngineService` bean,或继续配置 `silly.default-engine-service-clazz` 指向自定义实现类。需要管理端、部署、模型、流程定义和流程实例查询能力时,还需要提供 `SillyEngineRepositoryService`。 `silly.webController.enable`、`silly.webController.urlPrefix` 是历史 camelCase 表达式;`silly.web-controller.enable`、`silly.web-controller.url-prefix` 是同一配置意图的 canonical 短横线写法,推荐新配置使用短横线形式。 ### JDBC 映射约定 `silly-jdbc` 第一轮映射约定: - 表名默认由实体类名驼峰转下划线,例如 `DemoOrder` 映射为 `demo_order`。 - 列名默认由 JavaBean 属性名驼峰转下划线,例如 `startUserId` 映射为 `start_user_id`。 - 主键属性默认 `id`,且实体需要提供可读写的 `id` 属性。 - 生产表名、主键如需覆盖,应以当前 JDBC 适配最终实现提供的配置或注解为准;不要依赖尚未实现的注解名或配置名。 TCK 以 `silly-orm-tck` 提供官方 ORM 适配的兼容性测试基础。JDBC 第一轮验收边界以 H2/TCK 覆盖的单表 CRUD、基础查询、分页与履历能力为准。 ### 使用这玩意有什么好处 ``` 1. 可独立的流程引擎服务,可更换不同引擎服务,耦合性低,方便升级引擎。 2. 基于 json 配置各个节点信息,便于控制及问题排查。 3. json 内容动态解析,支持 SPEL,支持更多业务逻辑,让代码更简洁。 4. 内置 json-scheme,防止错误填写。 5. 内置各种 handle 方便随时随地切入,进行逻辑处理。 还有很多功能,不一一介绍了,期待你的参与~ ``` ![输入图片说明](https://gitee.com/iqiny/ry-silly/raw/develop/1694155312117.png) ### MIT License 大量没有机构或商业管理人的项目都在使用 MIT 风格的许可条款。SPDX 和 OSI 通过标准化不涉及特定实体或机构版权持有人的 MIT 和 ISC 之类的许可证形式,为这些用例提供了帮助。有了这些许可证形式,项目作者的普遍做法是在许可证的版权声明中尽早填上自己的名字...也许还会在这里或那里填上年份。至少根据美国的版权法,由此产生的版权声明并不能说明全部情况。 软件的原始所有者保留其工作的所有权。但是,尽管 MIT 风格的许可条款赋予了他人开发和更改软件的权利,创造了法律上所谓的“衍生作品”,但它们并没有赋予原始作者对他人的贡献的所有权。相反,每个贡献者在以现有代码为起点所做的任何作品都拥有版权,即使是稍做了一点创意。 ![输入图片说明](https://bkimg.cdn.bcebos.com/pic/bf096b63f6246b600c339c23ffaf0d4c510fd9f90417?x-bce-process=image/watermark,image_d2F0ZXIvYmFpa2UxNTA=,g_7,xp_5,yp_5/format,f_auto)