@Bean
@ConditionalOnMissingBean(name = "runtimeDataService")
public RuntimeDataService runtimeDataService(EntityManagerFactory entityManagerFactory, UserGroupCallback userGroupCallback, UserInfo userInfo, TransactionalCommandService transactionalCommandService, IdentityProvider identityProvider, DeploymentService deploymentService) {
Environment environment = EnvironmentFactory.newEnvironment();
environment.set(EnvironmentName.TRANSACTION_MANAGER, transactionManager);
environment.set(EnvironmentName.ENTITY_MANAGER_FACTORY, entityManagerFactory);
TaskService taskService = HumanTaskServiceFactory.newTaskServiceConfigurator()
.entityManagerFactory(entityManagerFactory)
.userGroupCallback(userGroupCallback)
.userInfo(userInfo)
.environment(environment)
.getTaskService();
RuntimeDataServiceImpl runtimeDataService = new RuntimeDataServiceImpl();
runtimeDataService.setCommandService(transactionalCommandService);
runtimeDataService.setIdentityProvider(identityProvider);
runtimeDataService.setUserGroupCallback(userGroupCallback);
runtimeDataService.setTaskService(taskService);
runtimeDataService.setTaskAuditService(TaskAuditServiceFactory.newTaskAuditServiceConfigurator()
.setTaskService(taskService)
.getTaskAuditService());
((KModuleDeploymentService) deploymentService).setRuntimeDataService(runtimeDataService);
((KModuleDeploymentService) deploymentService).addListener(runtimeDataService);
return runtimeDataService;
}