Not handling isCmmnEnabled and isDmnEnabled correctly

When setting the two flags isCmmnEnabled() and isDmnEnabled() in ProcessEngineConfiguration this not handled at all places.

org.camunda.bpm.engine.rest.impl.CaseDefinitionRestServiceImpl.getCaseDefinitionsCount() should be

@Override
public CountResultDto getCaseDefinitionsCount(final UriInfo uriInfo) {
    CountResultDto result = null;
    final ProcessEngine engine = getProcessEngine();
    final ProcessEngineConfiguration processEngineConfiguration = engine.getProcessEngineConfiguration();
    if (!(processEngineConfiguration instanceof ProcessEngineConfigurationImpl)
            || ((ProcessEngineConfigurationImpl) processEngineConfiguration).isCmmnEnabled()) {
        final CaseDefinitionQueryDto queryDto = new CaseDefinitionQueryDto(getObjectMapper(), uriInfo.getQueryParameters());
        final CaseDefinitionQuery query = queryDto.toQuery(engine);
        final long count = query.count();
        result = new CountResultDto();
        result.setCount(count);
    }
    return result;
}

org.camunda.bpm.engine.rest.impl.DecisionDefinitionRestServiceImpl.getDecisionDefinitionsCount() should be

@Override
public CountResultDto getDecisionDefinitionsCount(final UriInfo uriInfo) {
    CountResultDto result = null;
    final ProcessEngine engine = getProcessEngine();
    final ProcessEngineConfiguration processEngineConfiguration = engine.getProcessEngineConfiguration();
    if (!(processEngineConfiguration instanceof ProcessEngineConfigurationImpl)
            || ((ProcessEngineConfigurationImpl) processEngineConfiguration).isDmnEnabled()) {
        final DecisionDefinitionQueryDto queryDto = new DecisionDefinitionQueryDto(getObjectMapper(), uriInfo.getQueryParameters());
        final DecisionDefinitionQuery query = queryDto.toQuery(engine);
        final long count = query.count();
        result = new CountResultDto();
        result.setCount(count);
    }
    return result;
}

Otherwise e.g showing the dashboard of Cockpit creates exceptions.

And org.camunda.bpm.engine.impl.cfg.ProcessEngineConfigurationImpl should create decisionService and caseService only if the flags are true.

1 Like

Hi @bmaehr,

good catch!

Would you like to create a pull request with your findings to ensure that the improvements will become part of the engine?

Pull requests are the most easy way to handle this.

Cheers, Ingo