# flowable-solon-web **Repository Path**: hiro/flowable-solon-web ## Basic Information - **Project Name**: flowable-solon-web - **Description**: Solon框架集成的flowable6.8.1实现 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 3 - **Created**: 2024-11-16 - **Last Updated**: 2025-10-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 项目介绍 Flowable Solon Web - [solon](https://solon.noear.org/) 类似 `spring-boot` 国产 web 开发框架。 - 本项目基于flowable6.8.1扩展而来,本着易用的特点进行了扩展。 - 推荐IdeaIJ插件《RestfulBox-Solon》 - 脚本位置:./docs ### 一.工作流设计模型 #### 1. 创建空白流程 接口流程 POST /flow/model/create > 输入参数 ```JSON { "areaCode": "AREA01", "flowCode": "FLOW0001", "flowName": "工作流0001", "createBy": "0000", "updateBy": "0000", "remark": "备注:第0001个测试流程" } ``` > 输出结果: 文本String,Flowable模型ID,表ACT_RE_MODEL.ID_ #### 2. 打开绘制页面URL > http://127.0.0.1:8080/process-editor/modeler.html?modelId=1 ![alt 流程设计](./docs/flow_design.png) #### 3. 绘制流程图保存(界面保存按钮) 接口调用 PUT /flow/model/save > 输入参数 ```JSON { "actModeId": "", "deployFlag": 0, "name": "工作流0001", "description": "备注:第一个测试流程", "jsonXml": "设计图XML对应的JSON,BMPN2.0标准", "svgXml": "流程图SVG图片" } ``` > 输出结果: 文本String,Flowable模型ID,表ACT_RE_MODEL.ID_ > 补充说明:未发布直接覆盖;已发布的流程,保存不会覆盖实际工作流定义,会产生新的版本,防止进行中的流程实例出现差错 #### 4. 发布接口 POST /flow/model/deploy/{uid} > 输入参数: uid 扩展定义ID > 输出参数:原生BPM定义Deployment.ID #### 5. 查询流程分页 POST /flow/model/query/page > 输入参数:分页查询条件 ```JSON { "current": 1, "size": 50, "queryObject": {} } ``` > 输出参数:扩展定义分页结果 ### 二.工作流运行 #### 1. 业务绑定流程 POST /flow/model/bind/save ```JSON { "areaCode": "AREA01", "dataType": "model", "flowCode": "FLOW0001", "createBy": "0000", "updateBy": "0000" } ``` > 输出参数:成功后的UID #### 2. 工作流发起流程 POST /flow/run/start ```JSON { "taskId": "task_7e1c50bd0eb8", "areaCode": "AREA01", "dataType": "model", "userId": "admin", "deptId": "103", "decision": 6, "message": "提交", "dataList": [ { "dataId": "M1679005573089701888", "dataDesc": "编码:T0000 名称:模板模型", "ownDeptId": "103", "params": { "code":"T0000", "name":"模板模型" } } ] } ``` #### 3. 查看待办列表 POST /flow/run/todo > 页面:http://127.0.0.1:8080/process-editor/flowTodo.html?userId=admin&deptId=103&type=model&area=AREA01 > 输入参数:分页查询条件 ```JSON { "current": 1, "size": 50, "queryObject": { "userId": "登录账号ID", "dataDesc": "数据相关模糊查询" } } ``` > 输出参数:分页查询结果 ![alt 流程设计](./docs/flow_todo_list.png) ![alt 流程设计](./docs/flow_todo_detail.png) #### 4. 流程前进后退 POST /flow/run/skip > 输入参数:选中数据(从界面选择发送) ```JSON { "taskId": "taskId_a1d472007c50", "userId": "admin", "deptId": "103", "areaCode": "AREA01", "dataType": "model", "decision": 2, "message": "同意", "dataList": [ { "userId": "admin", "deptId": "103", "userName": "瓜瓜", "areaCode": "AREA01", "dataType": "model", "dataId": "M1679005573089701888", "workFlowId": "8", "auditFlag": 2, "dataDesc": "编码:T0000 名称:模板模型" } ] } ``` #### 5. 查询待发布的数据 POST /flow/run/deploy ```JSON { "current": 1, "size": 50, "queryObject": { "areaCode": "AREA01", "dataType": "model" } } ``` > PS:待发布的数据进行发布后,删除act_ext_audit对应的数据 #### 6. 工作流通知订阅 > 扩展每一步都发送了Redis通知:topic = flowable > 参考:https://gitee.com/noear/redisx ```Java RedisBus bus = redisClient.getBus(); bus.publish("flowable", ONode.stringify(task)); ``` > 业务端订阅Redis通知:topic = flowable ```Java @Init public void initRedisTopic() { Thread thread = new Thread(() -> { String[] channels = {"flowable"}; RedisBus bus = redisClient.getBus(); bus.subscribe((topic, message) -> { log.info("Flowable >>> Received Message: {} on channel: {}", message, topic); }, channels); }); thread.start(); } ``` ### 三.补充说明 1. 工作流程定制简化,不支持并行节点、子流程,支持需要使用stencilset_full.json,并修改改代码 2. 业务分离,走Redis消息,可自行改成其他通知