欢迎大家来到IT世界,在知识的湖畔探索吧!
一飞开源,介绍创意、新奇、有趣、实用的免费开源应用、系统、软件、硬件及技术,一个探索、发现、分享、使用与互动交流的开源技术社区平台。致力于打造活力开源社区,共建开源新生态!
一、开源项目简介
Flowable Activiti 仿钉钉流程设计器源码 前端基于wflow工程创建 对标wflow商业版项目 本人无偿开源 100%开源 后台可以基于Flowable 56 以及 Activiti567版本
二、开源协议
使用GPL-3.0开源协议
三、界面展示
开源版界面一览
工作区面板
表单管理
工作流表单管理,支持分组和单组表单拖拽排序
表单基本设置
表单设计器
支持分栏布局、明细表格、以及多种基础组件,支持自定义开发组件
流程设计器
任意条件层级审批流程设计, 审批节点支持多种业务类型设置,支持流程校验
自定义审批条件
自定义复杂流转条件
可视化流程逻辑分支条件
支持多种类型业务节点,支持配置校验,灵活配置
支持无限层级嵌套
自动校验设置项,列出所有错误提示
条件节点优先级动态拖拽,实时刷新
四、功能概述
以下内容为 dingding-mid 作者原文引用 :
dingding-mid 中国式传统流程引擎开源标杆(Activiti 567 Flowable 56,Camunda7 )
在介绍本项目之前,我先想与大家谈论谈论业务框架 和 技术框架的问题 以及工作流的诸多问题
我想这些话是更比这个项目的源码更有用的
那是很早的事了..
回忆在这几年JavaEE的路途中,我的老师在讲Struts2框架(那还是SSH的时代)的时候 提过一段概念,这让我记忆犹新
什么是软件?什么是框架?
软件(也即给公司做的各种系统) = 应用组件(不变的) + 业务组件(变化的)
应用组件来形成框架,即框架是半成品的软件!
先定义一个概念 框架分为 技术框架 和 业务框架
列举几个Java领域的框架
SpringBoot Spring MyBatis SpringMVC Hibernate
此种框架大家可以理解为 纯技术框架
从gitHub上下载下来 它与我们即将要做的任何系统里面的业务逻辑是没有任何关系的
同时他们也只能算系统分层开发中的某一层, 比如MyBatis 仅仅是持久层(Manager,Dao) SpringMVC(Action,Controller)
但大家需要明白的是
工作流框架(JBPM,Activiti,Flowable,Camunda,Zeebe)
并不仅仅是 技术框架, 它从另一个角度来说 也可以算做是 业务框架
为什么这么说呢? 因为工作流确确实实解决了某些审批中的疑难问题 以及 业务编排的中的诸多问题
在审批流领域:
工作流框架提供了整个流程图运转的核心代码,对比于传统的状态机来说,她就灵活多了
另外 也直接就解决了工作流系统中的一些常见业务的代码实现
比如: 流程跳转与驳回,撤回,审批转办,委派,审批过程中加签,减签,流程迁移,我的待办,我的已办,我发起的,等等常见痛点需求
而且工作流并不是系统分层开发中的某一层,它本身就连接了几十张表 他是一个完整的项目 解决了审批领域/业务编排系统的痛点
像我们来做业务系统来说 一般情况下 二次开发框架的可能性是非常小的
比如像Spring 我们顶多自己定义一些 BeanFactory FactoryBean 一些Processor
比如像MyBatis 我们顶多自己定义一些 Plugin Interceptor
但是这些东西并没有改动人家本来的源码 只是我们多加了一些东西
但像工作流框架就不一样了, 以Activiti 567 举例
其框架就没有实现中国式的动态审批跳转以及驳回(注意:不是通过流程图画连线来跳转驳回 我指的是没有连线也能跳转 想跳哪跳哪)
可以想象一下 我们自己实现流程跳转和驳回那是相当困难的,需要熟悉Activiti底层使用的一些类
诸如ExecutionEntity TaskEntity CommandContext XXXAgenda 等等
以上我想表达的意思就是
- 工作流框架 算是技术框架 + 业务框架
- 二次开发工作流框架是相当有技术难点的
这才造成了
各大视频讲解各种Spring MyBatis源码的视频 多如繁星 而深度讲解工作流的视频国内都没几个(主要是相当有技术难点,而且因为工作流和业务会产生关系)
第二 中国式流程 基本上 属于中国内地才有这样的需求,在外国就没有了,比如流程跳转,驳回, 所以在Activiti ,JBPM时代 这是更加痛苦的
以往别的框架有问题 我们可以去StackOverFlow里面搜 ,在工作流框架里面 这个法子就不灵了
第三 你像 工作流框架本身就要操作 几十张表, 他内部的逻辑 对我们来说 算是黑盒
但是别的系统我们自己写的业务代码 都是白盒(因为是我们亲手写的)
一旦工作流内部有问题,我们得各种阅读其本身源码, 这是是工作流框架复杂的另一个原因
以上 所以国内目前暂无好的开源的工作流 本系统在此背景下特意开源出来,供大家学习使用
最后, 给学习流程引擎框架(Activiti567,Flowable56,Camunda7,Zeebe8)的Java开发人员几个建议
1> 一定一定不要认为Activiti 没有提供对应的表查询的API ,那么就无法完成了
我们可以 把他的这些表 Mapper 都写出来, 自己查就可以了 ,但是要注意的是, 需要先看好Activiti的索引是怎么建的,
防止自己写导致索引失效,导致查询效率慢 (自己不要写更新SQL, 可以通过CMD 更新, 因为 他有乐观锁版本列 ,自己写的Mapper仅仅用于查询 推荐)2> 一定一定要把他的执行SQL 打印出来, 这样才会知道该如何优化 ,因为工作流本身 比如很小的一个功能,
就至少会 操作 十几张表 比如start 工作流 ,所以一定要注意它的性能优化,对于SQL不强的人,可以在了解的Activiti的表结构之后 看一下他是如何进行多表联查的3> 一定不要觉得,从数据库 中查询出数据 就代表 工作流 进阶了 , 像类似这种, 从数据库查询到的对应的数据,
只是Activiti的 入门, 根本满足不了 产品的需求的, 比如一个Activiti 稍微难一点(中国式流程)的功能, 流程任意跳转,
功能, 比如需要完成这个功能, 是相当有难度的, 要完成这个功能 , 其实大部分的操作 都不是表, 而是 一些高级的类中,
只不过数据最后流转完了之后到了数据库中
五、技术选型
✍开发
详细文档请访问 : wflow文档
特别说明:源码、JDK、MySQL、Redis等存放路径禁止包含中文、空格、特殊字符等
环境要求
官方建议: JDK版本不低于 1.8.0_281版本,可使用OpenJDK 8、Alibaba Dragonwell 8、BiShengJDK 8
项目 |
推荐版本 |
说明 |
JDK |
1.8.0_281 |
JAVA环境依赖(需配置环境变量) |
Maven |
3.6.3 |
项目构建(需配置环境变量) |
Redis |
3.2.100(Windows)/6.0.x(Linux,Mac) |
|
MySQL |
5.7.x+ |
数据库任选一(默认) |
SQLServer |
2012+ |
数据库任选一 |
Oracle |
11g+ |
数据库任选一 |
PostgreSQL |
12+ |
数据库任选一 |
工具推荐
为防止无法正常下载Maven以来,请使用以下IDE版本
IDEA版本 |
Maven版本 |
IDEA2020及以上版本 |
Maven 3.6.3及以上版本 |
IDEA插件
- Lombok
- Alibaba Java Coding Guidelines
- MybatisX
环境配置
- 打开dingding-mid\src\main\resources\application.yml
环境变量
dev 开发环境test 测试环境preview 预发布环境pro 生产环境
#环境 dev|test|pro|preview
profiles:
active: dev
欢迎大家来到IT世界,在知识的湖畔探索吧!
- 打开application-x.yml(x表示环境变量),需配置以下服务端口(port)数据库连接Redis
启动项目
- dingding-mid\src\main\java\com\dingding\mid\DingDingAdminApplication.java,右击运行即可。
项目发布
- 在IDEA右侧Maven–dingding-mid(root)–Lifecycle中双击clean清理下项目
- 双击package打包项目
- 打开项目目录,依次打开dingding-mid\target,将dingding-mid-{version}-RELEASE.jar上传至服务器
swagger接口文档
- http://localhost:10000/swagger-ui/
六、源码地址
访问一飞开源:https://code.exmay.com/
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/35489.html