fix(bpm): 修复发起流程报 500 - 流程定义编号 URL 编码归一化 + 缺失定义容错
1. 新增 BpmProcessDefinitionIdUtils,对 processDefinitionId 做幂等归一化(最多解 5 层 URL 编码),前端多编码几次也不会 500
2. BpmProcessDefinitionServiceImpl 的 getProcessDefinition / getProcessDefinitionBpmnModel / getProcessDefinitionInfo / 批量查询统一归一化;流程定义不存在时返回 null 而非抛 FlowableObjectNotFoundException
3. BpmProcessInstanceServiceImpl 的 getApprovalDetail、createProcessInstance 增加空值校验,转为明确的 PROCESS_DEFINITION_NOT_EXISTS 业务错误
4. BpmProcessDefinitionInfoMapper 查询改为取最新一条,兼容同一 processDefinitionId 多条脏数据导致的 TooManyResultsException
5. BpmProcessInstanceConvert.buildProcessInstance 容错流程定义已删除的场景