public PersistentProcessingEngine createEngine(DataSource dataSource, String wfRepoSourceDir, String wfRepoTargetDir, DependencyInjector dependencyInjector) throws Exception {
EngineIdProvider engineIdProvider = new EngineIdProviderBean("default");
FileBasedWorkflowRepository wfRepository = new FileBasedWorkflowRepository();
wfRepository.setSourceDirs(Collections.singletonList(wfRepoSourceDir));
wfRepository.setTargetDir(wfRepoTargetDir);
wfRepository.start();
CopperTransactionController txnController = new CopperTransactionController();
txnController.setDataSource(dataSource);
DatabaseDialect dialect = createDialect(dataSource, wfRepository, engineIdProvider);