flowable/flowable-engine · error · FlowableException
No resource name available
Error message
No resource name available
What it means
Thrown by HistoricTaskInstanceQuery.taskAssigneeIds(Collection) when the assignee collection is null. The method builds a multi-assignee IN predicate and requires a concrete list of assignee identifiers. The null check is the first of several validations on the argument.
Source
Thrown at modules/flowable-app-engine-rest/src/main/java/org/flowable/app/rest/service/api/repository/AppDefinitionResourceDataResource.java:70
@ApiOperation(value = "Get an app definition resource content", nickname = "getAppDefinitionContent", tags = { "App Definitions" })
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Indicates both app definition and resource have been found and the resource data has been returned."),
@ApiResponse(code = 404, message = "Indicates the requested app definition was not found or there is no resource with the given id present in the app definition. The status-description contains additional information.")
})
@GetMapping(value = "/app-repository/app-definitions/{appDefinitionId}/resourcedata", produces = "application/json")
@ResponseBody
public byte[] getAppDefinitionResource(@ApiParam(name = "appDefinitionId") @PathVariable String appDefinitionId, HttpServletResponse response) {
AppDefinition appDefinition = appRepositoryService.getAppDefinition(appDefinitionId);
if (appDefinition == null) {
throw new FlowableObjectNotFoundException("Could not find an app definition with id '" + appDefinitionId);
}
if (appDefinition.getDeploymentId() == null) {
throw new FlowableException("No deployment id available");
}
if (appDefinition.getResourceName() == null) {
throw new FlowableException("No resource name available");
}
if (restApiInterceptor != null) {
restApiInterceptor.accessAppDefinitionInfoById(appDefinition);
}
// Check if deployment exists
AppDeployment deployment = appRepositoryService.createDeploymentQuery().deploymentId(appDefinition.getDeploymentId()).singleResult();
if (deployment == null) {
throw new FlowableObjectNotFoundException("Could not find a deployment with id '" + appDefinition.getDeploymentId());
}
List<String> resourceList = appRepositoryService.getDeploymentResourceNames(appDefinition.getDeploymentId());
if (resourceList.contains(appDefinition.getResourceName())) {
final InputStream resourceStream = appRepositoryService.getResourceAsStream(
appDefinition.getDeploymentId(), appDefinition.getResourceName());
View on GitHub (pinned to d6d39ce1c6)
Solutions
- Null-check assigneeIds before calling and skip the filter when absent.
- Initialize the collection to an empty list at the source and only call taskAssigneeIds when non-empty (empty list also throws).
- Make the producer return Collections.emptyList() rather than null for 'no assignees'.
Example fix
// before
query.taskAssigneeIds(assignees); // may be null
// after
if (assignees != null && !assignees.isEmpty()) {
query.taskAssigneeIds(assignees);
} Defensive patterns
Strategy: validation
Validate before calling
if (assignees == null) { /* skip filter or return empty result */ }
else if (!assignees.isEmpty()) { query.taskAssigneeIds(assignees); } Type guard
static boolean isNonEmpty(Collection<String> c) { return c != null && !c.isEmpty(); } Try / catch
try {
query.taskAssigneeIds(assignees);
} catch (FlowableIllegalArgumentException e) {
LOG.warn("Invalid assignee filter: {}", e.getMessage());
return Collections.emptyList();
} Prevention
- Return emptyList() instead of null from code producing assignee lists
- Null-check optional filter inputs before applying them to the query
- Centralize assignee-filter application in one validated helper
When it happens
Trigger: Calling taskAssigneeIds(null), e.g., forwarding a nullable list of user IDs from a request, session, or configuration directly into the query.
Common situations: An unassigned filter parameter (null instead of a list), a failed lookup that returns null instead of an empty list, or deserialization of a missing JSON array field.
Related errors
- Error retrieving app engine info
- No deployment id available
- variableNames are null or empty
- nameLike is null
- nameLikeIgnoreCase is null
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/d96bb603cb31645f.
Report an issue: GitHub.