public Configuration getConfiguration(final AbstractProcess process, String configurationId) { Configuration configuration = null; final ProcessConfigurationRepositoryStore processConfStore = RepositoryManager.getInstance() .getRepositoryStore(ProcessConfigurationRepositoryStore.class); if (configurationId == null) { configurationId = ConfigurationPlugin.getDefault() .getPreferenceStore() .getString(ConfigurationPreferenceConstants.DEFAULT_CONFIGURATION); } if (configurationId.equals(ConfigurationPreferenceConstants.LOCAL_CONFIGURAITON)) { final String id = ModelHelper.getEObjectID(process); IRepositoryFileStore file = processConfStore.getChild(id + ".conf"); if (file == null) { file = processConfStore.createRepositoryFileStore(id + ".conf"); configuration = ConfigurationFactory.eINSTANCE.createConfiguration(); configuration.setName(configurationId); configuration.setVersion(ModelVersion.CURRENT_VERSION); file.save(configuration); } try { configuration = (Configuration) file.getContent(); } catch (final ReadFileStoreException e) { BonitaStudioLog.error("Failed to read process configuration", e); } } else { for (final Configuration conf : process.getConfigurations()) { if (configurationId.equals(conf.getName())) { configuration = conf; } } } if (configuration == null) { configuration = ConfigurationFactory.eINSTANCE.createConfiguration(); configuration.setName(configurationId); configuration.setVersion(ModelVersion.CURRENT_VERSION); } // Synchronize configuration with definition new ConfigurationSynchronizer(process, configuration).synchronize(); return configuration; }