package io.trygvis.calamus.engine; import org.jbpm.process.audit.JPAAuditLogService; import org.kie.api.io.Resource; import org.kie.api.io.ResourceType; import org.kie.api.runtime.manager.RuntimeEnvironment; import org.kie.api.runtime.manager.RuntimeManager; import org.kie.internal.io.ResourceFactory; import org.kie.spring.factorybeans.RuntimeEnvironmentFactoryBean; import org.kie.spring.factorybeans.RuntimeManagerFactoryBean; import org.slf4j.Logger; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Lazy; import org.springframework.transaction.PlatformTransactionManager; import javax.persistence.EntityManagerFactory; import javax.sql.DataSource; import java.util.HashMap; import java.util.Map; import static org.slf4j.LoggerFactory.getLogger; /** * http://planet.jboss.org/post/jbpm_6_with_spring */ @Configuration public class CalamusJbpmConfig { private final Logger log = getLogger(getClass()); @Bean @Lazy public RuntimeEnvironmentFactoryBean runtimeEnvironment(DataSource dataSource, CalamusDbConfig.DbMigrations dbMigrations, EntityManagerFactory entityManagerFactory, PlatformTransactionManager platformTransactionManager) { System.out.println("CalamusConfig.runtimeEnvironmentFactoryBean"); System.out.println("dataSource = " + dataSource); System.out.println("dbMigrations = " + dbMigrations); System.out.println("entityManagerFactory = " + entityManagerFactory); System.out.println("platformTransactionManager = " + platformTransactionManager); RuntimeEnvironmentFactoryBean x = new RuntimeEnvironmentFactoryBean(); x.setType("DEFAULT"); Map assets = new HashMap<>(); System.out.println("getClass().getClassLoader() = " + getClass().getClassLoader()); assets.put(ResourceFactory.newClassPathResource("Deploy.bpmn2", getClass()), ResourceType.BPMN2); x.setAssets(assets); // x.setClassLoader(getClass().getClassLoader()); x.setEntityManagerFactory(entityManagerFactory); x.setTransactionManager(platformTransactionManager); return x; } @Bean @Lazy public RuntimeManager runtimeManagerFactoryBean(RuntimeEnvironment runtimeEnvironment) throws Exception { RuntimeManagerFactoryBean x = new RuntimeManagerFactoryBean(); x.setIdentifier("spring-rm"); x.setRuntimeEnvironment(runtimeEnvironment); x.afterPropertiesSet(); return (RuntimeManager) x.getObject(); } @Bean public JPAAuditLogService jpaAuditLogService(EntityManagerFactory entityManagerFactory) { return new JPAAuditLogService(entityManagerFactory); } }