共享流程接入
2023年1月13日大约 5 分钟
共享流程接入
一.接入步骤
1. 流程编码获取
流程编码是接入对应流程的重要凭证,需联系流程管理员获取,流程管理员可根据
平台手册-共享流程创建获取流程编码。
2. 根据流程编码获取流程部署id
流程部署id是流程发起的重要参数,调用接口说明中第一个接口,根据流程编码获取。
3. 发起流程
封装发起流程需要的参数,参数详情参照接口说明中第二个接口的请求参数描述。
4. 流程回调处理
流程审批完成后,根据回调接口配置,流程服务调用接入方对应的接口,处理流程完成后的业务逻辑,请参照回调接口设计说明
二.接入方式:
注意
- 共享流程接入提供了两种对接方式,可以通过
feign进行微服务间的调用或则采用http请求方式调用,使用feign方式需要注意接入方服务已集成流程服务所在的微服务环境,具体可根据情况选用合适的接入方式,以下是两种接入方式的详细介绍
方式一:
通过feign调用接口
启动类增加feign扫描路径,参照@EnableFeignClients(value = {"com.diboot.cloud.service",
"cn.com.lightcode.cloud.demo.service"})
// 根据流程编码获取流程部署id,feign方式示例
@FeignClient(value = "flow-service", configuration = FeignConfig.class)
public interface FlowImpl {
@GetMapping("/shared/flow/flowDetail")
JsonResult flowDetail(@RequestParam("code") String code, @RequestParam("flowCode") String flowCode);
} //发起流程,feign方式示例
@FeignClient(value = "workflow", configuration = FeignConfig.class)
public interface SysWorkFlowImpl {
@PostMapping("/workflowApply/apply")
JsonResult apply(@RequestBody Map<String, Object> workflowApplyRequest);
}方式二:
通过http请求方式- 格式: 网关地址/服务名称/接口地址
- 示例: 此处以网关地址为 http://127.0.0.1:8080示例
请求地址 http://127.0.0.1:8080/flow-service/shared/flow/flowDetail 请求方式 Get 请求参数 flowCode
三.接口说明
1. 根据流程分类编码或流程编码获取部署id
| 服务名称 | 接口地址 | 请求方式 |
|---|---|---|
| flow-service | /shared/flow/flowDetail | Get |
请求参数
| 参数名称 | 参数类型 | 参数描述 | 是否必需 |
|---|---|---|---|
| code | String | 分类编码 | 非必需 |
| flowCode | String | 流程编码 | 必需 |
返回参数
{
"code": 0,
"msg": "操作成功",
"data": {
"name": "***共享流程",
"deploymentId": "GXLCTEST:1:0a430139-63d5-11ec-bc3c-00d0f8000001"
},
"ok": true
}返回参数说明
| 参数名称 | 参数类型 | 参数描述 |
|---|---|---|
| name | String | 流程名称 |
| deploymentId | String | 部署id |
2. 发起流程
| 服务名称 | 接口地址 | 请求方式 |
|---|---|---|
| workflow | /workflowApply/apply | Post |
请求参数
| 参数名称 | 参数类型 | 参数描述 | 是否必需 | 参数示例 |
|---|---|---|---|---|
| applyName | String | 申请名称 | 必须 | 通知公告发布申请 |
| requestService | String | 请求服务 | 必须 | news-service |
| callbackUrl | String | 回调地址(workflowType值为thirdParty时,该值有用) | 非必须 | http://127.0.0.1/workflow/flowCallback |
| callbackParam | String | 回调参数(json格式字符串 | 非必须 | "{ "id" : "10000" }" |
| workflowKey | String | 流程key(使用流程部署id) | 必须 | GXLCTEST:1:0a430139-63d5-11ec-bc3c-00d0f8000001 |
| businessId | String | 业务id(唯一值,回调接口请求参数将会返回此参数) | 必须 | 10000 |
| formId | String | 表单参数,参数格式为:showUrl:百度: baidu.com | 非必须 | showUrl:通知公告: /notic/detail?id=10000 |
| workflowType | String | 回调方式(initiateWorkflow: feign方式回调,thirdParty: http方式回调 | 必须 | initiateWorkflow |
| applyUser | String | 申请用户id | 必须 | 1 |
返回参数
{
"code": 0,
"msg": "操作成功",
"data": {
"GXLCTEST:1:0a430139-63d5-11ec-bc3c-00d0f8000001"
},
"ok": true
}四.回调接口设计说明
注意
回调接口是编写在接入方服务的接口,在接入方调用流程发布接口时可以指定回调方式和接口地址,这里的回调方式同样支持feign和http请求两种通信方式,该回调接口会在流程审批完成后自动调用给定的回调接口,接入方可在该接口实现审批完成后的业务逻辑。
1. 回调方式选择:
- 通过给定发起流程中
workflowType参数值,决定使用回调方式 - 当值为
initiateWorkflow时,表示使用feign方式,则流程服务会自动回调固定接口,调用的固定接口地址为接入方服务名/workflow/flowCallback - 当值为
thirdParty时,表示使用http请求方式,则流程服务会发送http请求到callbackUrl属性值的地址接口
2. 回调接口格式:
- 流程服务回调接入服务的接口方式必须为
Post,其接收参数必须为Map<String, Object> entity,请求参数map有如下数据{ "businessId" : "业务id ", "state":1 },回调方式如果为feign,则接口返回参数需要为JsonResult,否则可为空, 接口格式如下:@Api(tags = {"流程服务回调接口"}) @RestController @RequestMapping("/workflow") public class WorkFlowCallBackController { @PostMapping("/flowCallback") public JsonResult callback(@RequestBody Map<String, Object> entity) throws Exception { } }
五.全局参数说明
流程回调state状态值说明
| state值 | 说明 |
|---|---|
| 0 | 流程中止 |
| 1 | 审批通过 |
| 2 | 流程撤回 |
| 3 | 流程驳回 |
固定返回格式说明: (JsonResult)
| 参数名称 | 类型 | 说明 |
|---|---|---|
| code | int | 返回状态编码 |
| msg | String | 操作信息 |
| data | Obeject | 数据对象 |
| ok | boolean | 状态 |
code状态值说明
| 值 | 说明 |
|---|---|
| 0 | 操作成功 |
| 4000 | 请求参数不匹配 |
| 4001 | token无线或过期 |
| 4003 | 无权执行该操作 |
| 4004 | 请求资源不存在 |
| 4005 | 数据校验不通过 |
| 4006 | 操作执行失败 |
| 4008 | 请求连接超时 |
| 5000 | 系统异常 |
| 5003 | 服务不可用 |
