package io.trygvis.engine; import org.kie.api.runtime.process.ProcessInstance; import org.kie.internal.runtime.StatefulKnowledgeSession; import org.slf4j.Logger; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.transaction.support.TransactionTemplate; import javax.persistence.EntityManagerFactory; import static org.slf4j.LoggerFactory.getLogger; public class CalamusJbpm { private final Logger log = getLogger(getClass()); private final TransactionTemplate transactionTemplate; private final EntityManagerFactory emf; private final StatefulKnowledgeSession session; public static enum CalamusProcess { DEPLOY("io.trygvis.bpm.Deploy"); private String name; CalamusProcess(String name) { this.name = name; } } public CalamusJbpm() { AnnotationConfigApplicationContext spring = new AnnotationConfigApplicationContext(CalamusDbConfig.class, CalamusJbpmConfig.class); // emf = Persistence.createEntityManagerFactory("org.jbpm.persistence.jpa"); // Environment env = KnowledgeBaseFactory.newEnvironment(); // env.set(EnvironmentName.ENTITY_MANAGER_FACTORY, emf); // env.set(EnvironmentName.TRANSACTION_MANAGER, TransactionManagerServices.getTransactionManager()); // KieBase kieBase = new KieHelper() // .addResource(ResourceFactory.newClassPathResource("Deploy.bpmn2")) // .build(); // RuntimeEnvironment runtimeEnvironment = spring.getBean(RuntimeEnvironment.class); // // KieBase kieBase = runtimeEnvironment.getKieBase(); transactionTemplate = spring.getBean(TransactionTemplate.class); emf = spring.getBean(EntityManagerFactory.class); session = null; // session = JPAKnowledgeService.newStatefulKnowledgeSession(kieBase, null, env); // session.addEventListener(AuditLoggerFactory.newJPAInstance(env)); // session.getWorkItemManager().registerWorkItemHandler("Service Task", new ServiceTaskHandler()); // session.getWorkItemManager().registerWorkItemHandler("Upgrade App", new UpgradeAppWorkItemHandler()); // session.getWorkItemManager().registerWorkItemHandler("Restart App", new RestartAppWorkItemHandler()); } public TransactionTemplate getTransactionTemplate() { return transactionTemplate; } public EntityManagerFactory getEntityManagerFactory() { return emf; } public StatefulKnowledgeSession getSession() { return session; } public void startProcess(CalamusProcess process) { ProcessInstance processInstance = session.startProcess(process.name); } }