## 流程发起 1. 进入发起事务页面,可以看到刚刚部署的流程已经可以操作 ![](https://box.kancloud.cn/2b8fe1a9271aa924b982459009d7d268_3358x1338.png) 2. 点击流程图可以看到流程的详情 ![](https://box.kancloud.cn/049494fdccb26f73d709420e35742acb_1898x1316.png) 3. 点击发起,可以看到进入了流程申请页面 ![](https://box.kancloud.cn/b4fade15061fbd2d5275e8d4adc0e148_2744x1332.png) 4. 可能到这有小伙伴会有疑问,不同的流程跳转到不同的页面,这个应该如何操作?后续如何自动匹配?下面我们来揭秘下bladex如何设计并运行了整个封装的工作流程 <br> ## 流程详解 ### 一、流程分类 1. 每个流程都会配置一个对应的分类,如下 ![](https://box.kancloud.cn/694dd038d7553a31f9bccf71c18a9bc7_702x524.png) 2. 这个分类来源于字典数据,流程分类主要与以下三项相关 ![](https://box.kancloud.cn/4157b32be1e7fd567fbe675e549800f0_2144x1272.png) 3. 当选择分类为请假流程的时候,系统将会组成`flow_1`入库 ![](https://box.kancloud.cn/73ab2f3ec2d9b08326451236afa75e1e_2034x234.png) 4. 当发起流程的时候,字典表的remark(备注)字段将充当流程表单的路由key ### 二、发起流程 1. 流程跳转前先查看下跳转方法所在 ![](https://box.kancloud.cn/f590e8283705ac3e582c6590cc4849b1_2752x1406.png) 2. 流程路由获取方法如下 ![](https://box.kancloud.cn/a145bd8122c5ec0de4db5706ee023850_1926x962.png) ![](https://box.kancloud.cn/6a288758c7e8c0226f3560fa0eb1a5f3_930x214.png) ![](https://box.kancloud.cn/5c97639fc2d40dfa2976d16dc64eb147_1818x906.png) 3. 点击发起流程,查看url链接 ![](https://box.kancloud.cn/f59d34fcf51d33155bfdf7ccf824a3dd_2132x1358.png) 4. 这样一来,便可以根据流程类型来动态获取流程路由的key,从而达到不同流程跳转至对应的流程表单了 ### 三、流程表单配置 1. 推荐大家按照系统规则,根据流程路由的key在process文件夹下创建对应的文件夹,之后再创建对应的form(流程发起)、handle(流程审批)、detail(流程详情)三个文件 ![](https://box.kancloud.cn/21ebd8d116d38ba6b3123eddf6337a70_698x520.png) 2. 配置流程发起的路由,重点如下 ![](https://box.kancloud.cn/fdac0abc2112c08d1abcc5d307d702c2_2558x1652.png) 3. 路由获取传参配置:`path: 'form/:processDefinitionId',` 4. 请假流程form代码如下,采用avuex表单配置,构建页面非常迅速 ![](https://box.kancloud.cn/7bd5f842ba97e4212e649dbf7bd0def9_2348x1822.png) ![](https://box.kancloud.cn/383f527fee570686c4a1c8db694f912a_1454x1622.png) 5. 第三点路由配置的参数可由如下方法获取 ![](https://box.kancloud.cn/f3038d59eeab154e19f946c3a89f28c3_1258x654.png) 6. 对应的url参数如下 ![](https://box.kancloud.cn/2d0f0196a1249ade55ad635226a64bd4_1448x66.png) 7. 准备工作完毕后,大家便可以根据业务自由配置表单了 ### 四、流程发起后端接口 1. 我们可以看一下前端发起流程的接口是 ![](https://box.kancloud.cn/c361b256452eda9fb0825ad42919c855_780x348.png) 2. 根据api地址找到后端接口 ![](https://box.kancloud.cn/124bc0fffa40d6872c43f7650e147539_2022x1300.png) 3. 查看接口详细 ![](https://box.kancloud.cn/1c146deaffef6aa22cbab514974b427d_960x338.png) ![](https://box.kancloud.cn/610cf1d418cd5da388729f9541eb015a_1750x1676.png) 4. 我们来慢慢拆分一下代码 * 从流程工具类中获取对应的业务表名 `String businessTable = FlowUtil.getBusinessTable(ProcessConstant.LEAVE_KEY);` * 保存业务表 ~~~ leave.setApplyTime(LocalDateTime.now()); save(leave); ~~~ * 创建启动流程所需的变量 ~~~ Kv variables = Kv.create() .set(ProcessConstant.TASK_VARIABLE_CREATE_USER, SecureUtil.getUserName()) .set("taskUser", TaskUtil.getTaskUser(leave.getTaskUser())) .set("days", Duration.between(leave.getStartTime(), leave.getEndTime()).toDays()); ~~~ * 将变量传入工作流远程调用接口,开启一个新流程(cloud版为feign,boot版为service) ~~~ BladeFlow flow = flowClient.startProcessInstanceById( leave.getProcessDefinitionId(), FlowUtil.getBusinessKey(businessTable, String.valueOf(leave.getId())), variables ); ~~~ * 如果流程启动成功,则将流程主键反向插入流程业务表 ~~~ if (Func.isNotEmpty(flow)) { log.debug("流程已启动,流程ID:" + flow.getProcessInstanceId()); // 返回流程id写入leave leave.setProcessInstanceId(flow.getProcessInstanceId()); updateById(leave); } ~~~ ### 五、查看已发流程 若发布成功,则可以到已发事务模块进行查看对应的记录 ![](https://box.kancloud.cn/47f7951ca1ea806650265bc26c8e75e8_3336x1674.png)