public BusinessArchive createBusinessArchive( final AbstractProcess process, final Configuration configuration, final Set<EObject> excludedObject, final boolean addProcessImage) throws Exception { checkArgument(configuration != null); BonitaStudioLog.info( "Building bar for process " + process.getName() + " (" + process.getVersion() + " )...", EnginePlugin.PLUGIN_ID); final DesignProcessDefinitionBuilder procBuilder = getProcessDefinitionBuilder(); procBuilder.seteObjectNotExported(excludedObject); final DesignProcessDefinition def = procBuilder.createDefinition(process); if (def == null) { throw new Exception(Messages.cantDeployEmptyPool); } final BusinessArchiveBuilder builder = new BusinessArchiveBuilder().createNewBusinessArchive(); builder.setProcessDefinition(def); builder.setParameters(getParameterMapFromConfiguration(configuration)); final byte[] content = new ActorMappingExporter().toByteArray(configuration); if (content != null) { builder.setActorMapping(content); } for (final BARResourcesProvider resourceProvider : getBARResourcesProvider()) { resourceProvider.addResourcesForConfiguration( builder, process, configuration, excludedObject); } // Add forms resources final BARResourcesProvider provider = getBARApplicationResourcesProvider(); if (provider != null) { provider.addResourcesForConfiguration(builder, process, configuration, excludedObject); } if (!(process instanceof SubProcessEvent)) { if (addProcessImage) { Display.getDefault() .syncExec( new Runnable() { @Override public void run() { try { addProcessImage(builder, process); } catch (final CoreException e) { BonitaStudioLog.error(e); } } }); } } final BusinessArchive archive = builder.done(); BonitaStudioLog.info( "Build complete for process " + process.getName() + " (" + process.getVersion() + " ).", EnginePlugin.PLUGIN_ID); return archive; }