Using Spring Beans
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-15-2019 07:08 PM
Hi all,
I'm fairly new to Activiti so apologies if this is basic.
I have a class implementing the JavaDelegate interface, but it also has an @Autowired bean inside it (it is a class annotated with @Service). I read that since I am autowiring, you can't specify it as an activiti:class inside the service task, you have to bind it using activiti:delegateExpression.
I have my implemented class as:
@Component("myDelegate")class MyDelegate implements JavaDelegate { @Autowired MyCustomService myCustomService; ...}
and I have defined the service task as:
<serviceTask id="servicetask1" name="Service Task 1" activiti:delegateExpression="${myDelegate}"></serviceTask>
However when I go to run the process, I get a runtime error saying:
org.activiti.engine.ActivitiException: Unknown property used in expression: ${myDelegate}
Is there something else I need to do?
If possible, I was hoping there was a solution that only used annotations rather than .xml bean definitions
- Labels:
-
Alfresco Process Services
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
01-16-2019 06:35 PM
The reason it didn't work it because I didn't set up my process engine correctly. The following got it working for me:
@Configurationpublic class ProcessEngineConfig { @Value("classpath*:*.bpmn") private Resource resources[]; @Bean public DataSource dataSource() { SimpleDriverDataSource dataSource = new SimpleDriverDataSource(); dataSource.setUsername("sa"); dataSource.setPassword(""); dataSource.setUrl("jdbc:h2:mem:activiti;DB_CLOSE_DELAY=1000"); dataSource.setDriverClass(org.h2.Driver.class); return dataSource; } @Bean public PlatformTransactionManager transactionManager(DataSource dataSource) { DataSourceTransactionManager transactionManager = new DataSourceTransactionManager(); transactionManager.setDataSource(dataSource); return transactionManager; } @Bean public SpringProcessEngineConfiguration processEngineConfiguration(DataSource dataSource, PlatformTransactionManager transactionManager) { SpringProcessEngineConfiguration engineConfiguration = new SpringProcessEngineConfiguration(); engineConfiguration.setDataSource(dataSource); engineConfiguration.setTransactionManager(transactionManager); engineConfiguration.setDatabaseSchemaUpdate(SpringProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE); engineConfiguration.setAsyncExecutorActivate(false); engineConfiguration.setDeploymentResources(resources); return engineConfiguration; } @Bean public ProcessEngineFactoryBean processEngine(SpringProcessEngineConfiguration springProcessEngineConfiguration) { ProcessEngineFactoryBean processEngineFactoryBean = new ProcessEngineFactoryBean(); processEngineFactoryBean.setProcessEngineConfiguration(springProcessEngineConfiguration); return processEngineFactoryBean; } @Bean public RepositoryService repositoryService(ProcessEngine processEngine) { return processEngine.getRepositoryService(); } @Bean public RuntimeService runtimeService(ProcessEngine processEngine) { return processEngine.getRuntimeService(); } @Bean public HistoryService historyService(ProcessEngine processEngine) { return processEngine.getHistoryService(); } @Bean public ManagementService managementService(ProcessEngine processEngine) { return processEngine.getManagementService(); } @Bean public TaskService taskService(ProcessEngine processEngine) { return processEngine.getTaskService(); }}
