public synchronized void start() {
   try {
     fireBeforeProcessEngineControllerStart(this);
     init();
     processEngineRegistry.processEngineInstallationSuccess(processEngineUserConfiguration, this);
     isActive = true;
     fireAfterProcessEngineControllerStart(this);
   } catch (Exception e) {
     processEngineRegistry.processEngineInstallationFailed(processEngineUserConfiguration);
     throw new FoxPlatformException("Exception while attempting to start process engine: ", e);
   }
 }
  public synchronized void stop() {
    fireBeforeProcessEngineControllerStop(this);
    closeProcessEngine();

    Collection<ProcessArchiveContext> installedProcessArchives =
        new ArrayList<ProcessArchiveContext>(installedProcessArchivesByName.values());
    for (ProcessArchiveContext processArchive : installedProcessArchives) {
      unInstallProcessArchive(processArchive.getProcessArchive());
    }

    processEngineRegistry.processEngineUninstalled(this);

    installedProcessArchivesByName.clear();
    installedProcessArchivesByProcessDefinitionKey.clear();
    activitiProcessEngine = null;
    processEngineConfiguration = null;
    isActive = false;

    fireAfterProcessEngineControllerStop(this);
  }