升级Activiti 7.9后调用/runtime/process-instances端点遇404问题求助
解决Activiti 7.9升级后REST端点404问题
核心原因
Activiti 7.x版本对REST模块做了重构,旧版本的activiti-spring-boot-starter-rest依赖已被移除,必须引入Activiti Cloud相关组件才能启用标准的流程REST端点。
解决方案步骤
- 添加Activiti Cloud REST依赖
在项目的pom.xml中加入以下依赖(Gradle项目请对应调整依赖声明):
<dependency> <groupId>org.activiti.cloud</groupId> <artifactId>activiti-cloud-starter-rest-api</artifactId> <version>7.9.0</version> </dependency> <dependency> <groupId>org.activiti.cloud</groupId> <artifactId>activiti-cloud-services-rest-api</artifactId> <version>7.9.0</version> </dependency>
修正端点URL
Activiti Cloud的REST端点默认使用/v1前缀,启动流程实例的正确请求路径为:POST /v1/process-instances调整安全配置
移除原有的全放行安全配置,改用匹配Activiti认证规则的配置,保持HTTP Basic认证适配测试代码:
@Configuration public class SecurityConfig { @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http.csrf().disable() .authorizeRequests() .antMatchers("/v1/**").authenticated() .and() .httpBasic(); return http.build(); } }
- 更新测试代码
修改测试用例中的请求URL,确保与新端点一致:
@Test public void givenAuthenticated_whenRejectingLevel1_then() throws Exception { mvc.perform(post("/v1/process-instances") .header(HttpHeaders.AUTHORIZATION, "Basic " + Base64.getEncoder().encodeToString(String.format("%s:%s", username, password).getBytes())) .contentType(MediaType.APPLICATION_JSON) .content(""" { "processDefinitionId" : "isae3402" } """)) .andExpect(status().isOk()); }
注:手动添加Basic 前缀是HTTP Basic认证的标准格式,确保认证头符合规范
问题排查过程回顾
- 最初调用旧路径
/runtime/process-instances返回404:Activiti 7.x已废弃该端点路径 - 尝试旧版本兼容路径
/activiti-rest/service/runtime/process-instances仍404:该路径仅适用于Activiti 6及更早版本 - 移除宽松安全配置后返回403:说明端点存在但权限验证不通过,验证了路径错误的猜测
- 最终确认依赖缺失:Activiti 7.x将REST功能迁移至Activiti Cloud生态,必须引入对应依赖才能启用端点
内容的提问来源于stack exchange,提问作者user20155381
相关产品推荐
相关产品推荐

