共享流程接入指南
2023年1月14日大约 5 分钟
共享流程接入帮助文档
该组件,主要解决第三方需进行流程审批或者不同业务需进行相同的流程审批需求,无需进行重复的创建定制化流程操作
注:该流程中的表单页面需根据各自业务定制化实现表单页面
前置条件
- 需能访问公司内网环境,访问maven私服。
- 微服务环境,能够通过feign调用workflow-service和flow-service服务。
共享流程接入时序图
获取流程列表时序图

流程发起时序图

共享流程接入说明
第一步 创建共享流程
- 创建方式
填写共享流程的基本信息,流程编码自行定义

流程设计,配置审批人,审批方式,节点条件等

- 相关接口说明
- 创建共享流程接口
@Api(tags = {"共享流程管理"})
@RestController
@RequestMapping("/shared/flow")
@BindPermission(name = "共享流程管理")
@Slf4j
public class SharedFlowController extends BaseCustomCrudRestController<SharedFlow> {
@ApiOperation(value = "新建数据")
@Log(operation = Operation.LABEL_CREATE)
@BindPermission(name = Operation.LABEL_CREATE, code = Operation.CODE_CREATE)
@PostMapping("/")
public JsonResult createSharedFlow(@Valid @RequestBody SharedFlow entity) throws Exception {
return sharedFlowService.createSharedFlow(entity);
}
}请求示例
{
"name":"共享流程",
"flowCode":"gxlcxx",
"category":"98",
"description":"",
"flowModelType":"simpleFlow"
}请求参数说明
| 参数名称 | 数据类型 | 是否必须 | 参数说明 |
|---|---|---|---|
| name | String | 是 | 共享流程名称 |
| flowCode | String | 是 | 共享流程编码 |
| category | Long | 是 | 分类id |
| description | String | 否 | 共享流程描述 |
| flowModelType | String | 否 | 流程类型 |
返回参数示例
{
"code": 0,
"msg": "操作成功",
"data": {
"id": 495,
"createTime": "2022-08-25 17:24:19",
"name": "测试共享流程",
"flowCode": "asfsd",
"instanceId": "b2292943-2457-11ed-8ba8-b669716daf12",
"depVersion": "1",
"version": 1,
"createBy": 1,
"updateBy": 1,
"category": "98",
"description": "阿斯达",
"state": 0,
"lastUpdateTime": "2022-08-25 17:24:30"
},
"ok": true
}第二步 获取共享流程编码并保存
调用获取流程分类列表接口,获取分类id,根据分类id获取共享流程列表,实现自身逻辑并保存流程编码
- 相关接口说明
- 获取流程分类接口
@Api(tags = {"共享流程分类管理"})
@RestController
@RequestMapping("/shared/category")
@BindPermission(name = "共享流程分类管理")
@Slf4j
public class SharedTreeController extends BaseCustomCrudRestController<SharedTree> {
@ApiOperation(value = "共享流程分类树")
@Log(operation = Operation.LABEL_LIST)
@BindPermission(name = Operation.LABEL_LIST, code = Operation.CODE_LIST)
@GetMapping("/list")
public JsonResult getSharedCategoryList(@RequestParam(required = false) String currentId) throws Exception {
return sharedTreeService.getSharedCategoryList(currentId);
}
}请求参数说明
| 参数名称 | 数据类型 | 是否必须 | 参数说明 |
|---|---|---|---|
| currentId | Long | 否 | 分类id |
返回参数示例
{
"code": 0,
"msg": "操作成功",
"data": [
{
"id": 98,
"createTime": "2022-02-26 02:19:54",
"name": "应用审批流程",
"code": "YYSP",
"parentId": "0",
"children": [],
"nodeType": 0
}
],
"ok": true
}
- 获取流程列表接口
@Api(tags = {"共享流程管理"})
@RestController
@RequestMapping("/shared/flow")
@BindPermission(name = "共享流程管理")
@Slf4j
public class SharedFlowController extends BaseCustomCrudRestController<SharedFlow> {
@ApiOperation(value = "获取列表分页数据")
@Log(operation = Operation.LABEL_LIST)
@BindPermission(name = Operation.LABEL_LIST, code = Operation.CODE_LIST)
@GetMapping("/list")
public JsonResult getViewObjectListMapping(BusinessFlowDTO queryDto, Pagination pagination) throws Exception {
return sharedFlowService.getSharedList(queryDto, pagination);
}
}请求参数说明
| 参数名称 | 数据类型 | 是否必须 | 参数说明 |
|---|---|---|---|
| category | Long | 否 | 分类id |
返回参数说明
{
"code": 0,
"msg": "操作成功",
"data": [
{
"id": 495,
"createTime": "2022-08-25 17:24:19",
"name": "测试共享流程",
"flowCode": "asfsd",
"instanceId": "b2292943-2457-11ed-8ba8-b669716daf12",
"depVersion": "1",
"version": 1,
"category": "98",
"state": 0,
"lastUpdateTime": "2022-08-25 17:24:30",
"createByName": "admin",
"updateByName": "admin"
}
],
"page": {
"pageIndex": 1,
"pageSize": 20,
"totalCount": 8,
"orderBy": "id:DESC",
"totalPage": 1
},
"ok": true
}第三步 发起流程
自行实现业务逻辑,并通过流程编码调用flow-service服务的获取流程详情接口,获取流程部署id,通过部署id调用workflow-service服务发起流程接口发起流程,并获取流程实例id,发起流程后,相关审批人进行审批,审批过程中可通过实例id查询流程审批状态,并自行实现回调函数
- 相关接口说明
- 获取流程详情接口
@Api(tags = {"共享流程管理"})
@RestController
@RequestMapping("/shared/flow")
@BindPermission(name = "共享流程管理")
@Slf4j
public class SharedFlowController extends BaseCustomCrudRestController<SharedFlow> {
@ApiOperation(value = "根据分类编码或流程编码,获取流程")
@GetMapping("/flowDetail")
public JsonResult getSharedFlowDetail(String code,String flowCode) throws Exception{
return sharedFlowService.getSharedFlowDetail(code,flowCode);
}
}请求参数说明
| 参数名称 | 数据类型 | 是否必须 | 参数说明 |
|---|---|---|---|
| code | String | 否 | 分类id |
| flowCode | String | 否 | 流程编码 |
返回参数示例
{
"code": 0,
"msg": "操作成功",
"data": {
"name": "ztz-学生岗位申请",
"flowCode": "ztz5",
"deploymentId": "ztz5"
},
"ok": true
}
- 发起流程接口
@Api(tags = {"业务流程申请"})
@RestController
@RequestMapping("/workflowApply")
@Slf4j
@RefreshScope
public class WorkflowApplyController extends BaseCrudRestController {
@ApiOperation(value = "流程申请")
@PostMapping("/apply")
public JsonResult apply(@RequestBody @Valid WorkflowApplyRecord requestParam) throws Exception {
return workflowApplyRecordService.apply(requestParam);
}
}请求参数说明
| 参数名称 | 数据类型 | 是否必须 | 参数说明 |
|---|---|---|---|
| applyName | String | 否 | 申请名称 |
| requestService | String | 否 | 请求服务 |
| callbackUrl | String | 否 | 回调地址 |
| callbackParam | String | 否 | 回调参数 |
| workflowType | String | 否 | 回调方式(initiateWorkflow: feign方式回调,thirdParty: http方式回调 |
| workflowKey | String | 否 | 流程key(使用流程部署id) |
| businessId | String | 否 | 业务id(唯一值,回调接口请求参数将会返回此参数) |
| formId | String | 否 | 表单地址 |
| applyUser | String | 否 | 申请用户id |
返回参数示例
{
"code": 0,
"msg": "操作成功",
"data": {
"processInstanceId": "354a6de5-16c2-11ed-892d-eec0467cd75c"
},
"ok": true
}