Unknown property used in expression: ${carServiceImpl.repair(carId)}. Cause: Cannot resolve identifier 'carServiceImpl'
Car Service is defined as a spring bean. Im able to autowire it or access it directly via application context (applicationContext.getBean("carServiceImpl").
I use in a spring boot (1.3.0) environment.
My problem is, that I do not understand how camunda gets beans from application context to resolve the JUEL expression.
Any documentation for that? Or any idea why my simple service call cant`t find my bean in spring boot context?
Best regards,
Markus
@Bean(name="taskService")
public TaskService taskService(ProcessEngine processEngine) {
return processEngine.getTaskService();
}
@Bean(name="repositoryService")
public RepositoryService repositoryService(ProcessEngine processEngine) {
return processEngine.getRepositoryService();
}
@Bean(name="runtimeService")
public RuntimeService runtimeService(ProcessEngine processEngine) {
return processEngine.getRuntimeService();
}
@Bean(name="historyService")
public HistoryService historyService(ProcessEngine processEngine) {
return processEngine.getHistoryService();
}
@Bean(name="managementService")
public ManagementService managementService(ProcessEngine processEngine) {
return processEngine.getManagementService();
}
@Bean(name="caseService")
public CaseService caseService (ProcessEngine processEngine) {
return processEngine.getCaseService();
}
@Bean
public SpringProcessEngineConfiguration processEngineConfiguration(PlatformTransactionManager tm, ApplicationContext appContext) throws IOException{
SpringProcessEngineConfiguration conf = new SpringProcessEngineConfiguration();
conf.setDataSource(dataSource());
conf.setDatabaseSchemaUpdate("true");
conf.setTransactionManager(tm);
conf.setHistory("full");
conf.setJobExecutorActivate(true);
PathMatchingResourcePatternResolver resourceResolver = new PathMatchingResourcePatternResolver();
conf.setDeploymentResources(resourceResolver.getResources("processes/*.bpmn20.xml"));
//No Beans available if Iuncomment this
//List<String> relevantBeans = Arrays.asList(appContext.getBeanNamesForAnnotation(Service.class));
//Map<Object, Object> beans = relevantBeans.stream()
// .collect(Collectors.toMap((beanName) -> beanName, (beanName) -> appContext.getBean(beanName)));
// conf.setBeans(beans);
return conf;
}
@Bean(name="processEngine")
public ProcessEngine processEngine(SpringProcessEngineConfiguration processEngineConfiguration) throws Exception {
ProcessEngineFactoryBean pef = new ProcessEngineFactoryBean();
pef.setProcessEngineConfiguration(processEngineConfiguration);
return pef.getObject();
}
@Bean(name = "processEngine")public ProcessEngineFactoryBean processEngine(SpringProcessEngineConfiguration processEngineConfiguration) throws Exception { ProcessEngineFactoryBean pef = new ProcessEngineFactoryBean(); pef.setProcessEngineConfiguration(processEngineConfiguration); return pef;}