# erupt-flow-camunda
**Repository Path**: PPLINGHUFEI/erupt-flow-camunda
## Basic Information
- **Project Name**: erupt-flow-camunda
- **Description**: 开源camunda适配erupt工作流引擎
- **Primary Language**: Java
- **License**: GPL-2.0
- **Default Branch**: erupt-flow-camunda
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 4
- **Forks**: 4
- **Created**: 2024-11-01
- **Last Updated**: 2025-06-24
## Categories & Tags
**Categories**: Uncategorized
**Tags**: 工作流, erupt, camunda, flow
## README
erupt-flow-camunda 工作流
该开源项目目前处于开发阶段,还未完善
### 👩联系作者
| 微信 | QQ |
| :----------------------------------------------------------: | :------------: |
| 搜索 `Misakimashino` 加我微信,备注 `flow` | 加QQ `884700965` |
### erupt-flow-camunda
#### 新增功能
- 组件库全面支持`PC + 移动端 (ElementUI)`,一次表单设计,分别渲染成两种效果,即时预览
- 表单支持权限控制,每个节点可以看到不一样的表单,且支持动态设置表单内容字段只读、可编辑、隐藏,审批时能动态修改表单,改变后续流程走向
##### 1.组件库新增组件

- 高级选择器
- 更多组件后续增加。。。
- 计划开发组件
- 地理位置选择,高德地图选位置
- 计算公式,配置一个计算公式,根据其他字段值自动计算本字段结果
- Vue容器,能够在线编写Vue代码,生成自定义的组件
- Iframe容器,嵌入一个URL页面
>高级选择器使用
>
>远程加载(前端执行,可使用打印等前端api)
>
>数据接收格式,不是该格式请用后处理调整
>暴露ctx,系统token,rsp变量
```json
{
"code": "200",
"data": [
{
"value": "xxx1",
"label": "选项x1"
},
{
"value": "xxx2",
"label": "选项x2"
}
//...
]
//...
}
```
```js
//前置处理:
function preHandler(ctx,token)
{
//发起请求前做一些处理
ctx.headers['token']=token
}
//后置处理:
function aftHandler(rsp)
{
//获取到结果后做一些处理
rsp.data.code=(rsp.data.code==1?200:1)
}
```
##### 2.支持流程打印
- 系统模板(支持`扫码查看流程`,防篡改功能)
- 系统模板自动生成无需编辑模板
- 系统模板支持`扫码功能`
- 系统模板支持审批编号前缀`自定义功能`

- 可使用自定义模板

- 新增打印管理(可查看已打印的系统模板)

###### 实际应用
>使用富文本编辑器,右侧存有系统变量和表单变量,点击即可插入到富文本中,如:
```
${currentDate} //当前日期
${currentTime} //当前时间
${printerName} //打印人
${sponsorName} //发起人
...
${表单变量} //表单变量
```

--------
##### 3.新增流程节点
> 流程节点,新增办理人等,
> 后续计划增加触发器节点、延时节点、子流程节点等

---------
##### 4.新增电子签名
- 流程可使用`电子签名`功能,审批可开启审批需签字通过
##### 5.新增流程监听
流程监听可以使用无动作,java语言,js语言,http请求等
包含以下监听
- 全局监听
- 流程启动成功时
- 流程审批通过时
- 流程审批拒绝时

- 节点监听
- 当流程进入本节点时
- 当流程离开本节点时

- 作用
主要用于流程审批时,自动触发一些事件,如:发送邮件、发送短信、发送http请求、调用java方法、调用js方法等
###### 1.java语言使用springel表达式
>可以使用 `@bean名.方法名(#表单变量)` 等方法,详细搜索 `springel表达式` 使用方法
###### 实际应用
1. 选择调用Java
2. 输入如下代码:
```js
@myBean.greet(#field7892038987210) //myBean为bean名,greet为方法名,#field7892038987210为表单变量名
```
###### 2.js语言
js语言通过后台运行(不能使用`前端部分js、api` )
js可以使用java的服务端内部类,如:
```java
var s = Java.type('类路径')
s.方法名(参数)
```
js内置变量`ctx`可获取表单数据,
- 表单变量获取方式:
>查看:`表单ID`即`表单字段变量`
>

如:
```js
ctx.formName;
ctx.formId;
ctx.表单ID;
ctx.CreatorName;
ctx.FinishDate;
ctx.token;
//...
```
例:发送http请求,如:
```js
var http = Java.type('cn.hutool.http.HttpRequest');
var res = http.get('http://localhost:xxx/xxx').timeout(20000).execute().body();//http请求(详情参照hutool等相应的类库文档)
java.lang.System.out.println(res);//打印请求结果
java.lang.System.out.println(ctx);//打印系统默认提供变量
```
>详情参照相应的类
###### 实际应用
1. 选择调用JS
2. 输入如下代码:
```js
var http = Java.type('cn.hutool.http.HttpRequest');//type获取文本特定内容
var data ={
'page':1,
'size':10
}
var result = http.get('http://192.168.0.1:5859/getXXX').form(data).header('token', ctx.token).execute(); //form请求数据,header请求头,execute执行请求并返回结果
java.lang.System.out.println(result);//java打印控制台
```
###### 3.http请求
http请求使用,支持get、post、delete、put等请求方式
form表单、url地址、header可使用`${变量}`取值(可使用变量:token/表单ID),如:
>http://localhost:8080/${变量名}
>
>key:xxx,value:${变量}
- 使用前处理(`暴露body,headers,connection系统参数`)
>
> 暴露`表单变量`,使用ctx.xxxxx可获取表单变量值,使用ctx.token可获取token
>
>body.参数更改,如:
>body.xxx=ctx.xxx
>body.xxx=xxx
>headers参数修改,如:
>
> headers.xxxx=ctx.xxxx
>
> headers.xxxx=xxxx
- 使用后处理(`暴露response、connection系统参数`)
>暴露表单变量,使用`ctx.xxxxx`可获取表单变量值,使用`ctx.token`可获取token
>
>response.参数更改(主要用于处理请求结果数据),如:
>
>response.xxxx=ctx.xxxx
>response.xxxx=xxxx
- 实际应用
1. 选择发送Http请求
2. 将前缀选项换成GET、POST、DELETE、PUT等请求方式
3. 输入如下:http:/xxxx:xxxx/xxxx
```js
`前处理:`
//发起请求前做一些处理
headers.token=ctx.token;
body.xxx="xxxx";
`后置处理:`
//获取到结果后做一些处理
response.code=(response.code==1?200:1)
```
###### 4.无动作
##### 项目结构
```
├─api 接口
├─assets
│ └─image
├─components 通用组件
│ └─common
├─router 路由
├─store vuex,设计器数据存储
├─utils
└─views 主要页面及视图
├─admin
│ └─layout
│ ├─form 表单设计
│ └─process 流程设计
├─common
│ ├─form 表单
│ │ ├─components 表单组件
│ │ ├─config 表单组件配置
│ │ ├─expand 扩展组件
│ │ └─settings 设置
│ └─process 流程
│ ├─config 流程节点设置
│ └─nodes 流程节点
└─workspace 工作区
```
##### 设计器数据
> 设计器的数据都存在Vuex中,需要传递到后端时,直接取出提交到接口
```json
{
"formId":"37289743892", //表单ID,由后端生成
"formName":"补卡申请", //表单名称
"logo":{ //图标
"icon":"图标/图片base64",
"background":"#FEFEFE" //如果是图片则不生效
},
//表单权限及其他属性设置
"settings":{
"commiter": [], //哪些人可以提交发起表单
"admin":[], //表单管理员,可以编辑及导出数据
"singn": false, //全局设置审批时是否需要签字
"notify":{
"type": "APP", //通知类型 APP QQ WX DING EMAIL
"title": "消息通知标题"
}
},
"group":20, //所在分组
"formItems":[],//表单设计数据
"process":{}, //流程数据
"remark":"备注说明"
}
```
>前端开源项目来自:`wflow`
>
> 后端开源使用`erupt-flow`
#### 支持作者
**开发不易,需要鼓励,如果觉得这个项目有帮助到了你请我喝杯咖啡吧!**