flowable/flowable-engine · error · FlowableIllegalArgumentException
No resource name provided
Error message
No resource name provided
What it means
getDmnDeploymentResourceData throws FlowableIllegalArgumentException("No resource name provided") when resourceName is null. The resource-data endpoint looks a resource up by its exact name inside a deployment, so the name is a required path variable validated before the deployment query runs.
Solutions
- Pass the exact resource name (e.g. 'my-decision.dmn') in the URL path.
- Get valid resource names from GET /dmn-repository/deployments/{deploymentId}/resources before calling.
- Fix client URL construction to fail fast on null/empty names.
Example fix
// before
byte[] data = client.getDeploymentResourceDataByName(deploymentId, resourceName); // null
// after
String name = Optional.ofNullable(resourceName).filter(n -> !n.isEmpty())
.orElseGet(() -> listResourceNames(deploymentId).get(0));
byte[] data = client.getDeploymentResourceDataByName(deploymentId, name); Defensive patterns
Strategy: validation
Validate before calling
if (resourceName == null || resourceName.isEmpty()) {
resourceName = getDeploymentResources(deploymentId).get(0).getName();
} Prevention
- Fetch valid resource names from the deployment's resources endpoint
- Check URL templates so no segment is left empty
- Distinguish the by-id resources endpoint from the by-name resource-data endpoint
When it happens
Trigger: GET /dmn-repository/deployments/{deploymentId}/resource-data/{resourceName} where the {resourceName} segment is missing or resolves to null/empty in the client-built URL.
Common situations: URL templates with an empty interpolated resource name; path-encoding bugs dropping the last segment; confusing the by-id resource endpoint with the by-name resource-data endpoint and omitting the wrong segment.
Understand the failure class
Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.
Related errors
- No deployment id provided
- No resource id provided
- A group or a user is required to create an identity link.
- A group or a user is required to create an identity link.
- A group or a user is required to create an identity link.
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/a645366271552cd5.
Report an issue: GitHub.
Appendix: source
Thrown at modules/flowable-dmn-rest/src/main/java/org/flowable/dmn/rest/service/api/repository/BaseDmnDeploymentResourceDataResource.java:51
*/
public class BaseDmnDeploymentResourceDataResource {
@Autowired
protected ContentTypeResolver contentTypeResolver;
@Autowired
protected DmnRepositoryService dmnRepositoryService;
@Autowired(required=false)
protected DmnRestApiInterceptor restApiInterceptor;
protected byte[] getDmnDeploymentResourceData(String deploymentId, String resourceName, HttpServletResponse response) {
if (deploymentId == null) {
throw new FlowableIllegalArgumentException("No deployment id provided");
}
if (resourceName == null) {
throw new FlowableIllegalArgumentException("No resource name provided");
}
// Check if deployment exists
DmnDeploymentQuery deploymentQuery = dmnRepositoryService.createDeploymentQuery().deploymentId(deploymentId);
DmnDeployment deployment = deploymentQuery.singleResult();
if (deployment == null) {
throw new FlowableObjectNotFoundException("Could not find a DMN deployment with id '" + deploymentId);
}
if (restApiInterceptor != null) {
restApiInterceptor.accessDeploymentById(deployment);
}
List<String> resourceList = dmnRepositoryService.getDeploymentResourceNames(deploymentId);
if (resourceList.contains(resourceName)) {
String contentType = contentTypeResolver.resolveContentType(resourceName);View on GitHub (pinned to d6d39ce1c6)