@Cacheable("processDefinitionIdMap")
  public ManyMap<String, Process> getProcessDefinitionIdMap(Set<Process> processes) {
    ManyMap<String, Process> processDefinitionKeyMap = new ManyMap<String, Process>();
    for (Process process : processes) {
      ProcessDeployment deployment = process.getDeployment();
      if (deployment != null
          && deployment.getEngine() != null
          && getKey() != null
          && deployment.getEngine().equals(getKey()))
        processDefinitionKeyMap.putOne(deployment.getEngineProcessDefinitionKey(), process);
    }

    ManyMap<String, Process> map = new ManyMap<String, Process>();
    for (ProcessDefinition processDefinition :
        processEngine.getRepositoryService().createProcessDefinitionQuery().list()) {
      List<Process> matchingProcesses = processDefinitionKeyMap.get(processDefinition.getKey());
      if (matchingProcesses != null && !matchingProcesses.isEmpty())
        map.put(processDefinition.getId(), matchingProcesses);
    }

    return map;
  }