BAEL-379 A Guide to jBPM with Java (#6687)
* BAEL-379 A Guide to jBPM with Java * BAEL-379 A Guide to jBPM with Java
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
package com.baeldung.jbpm;
|
||||
|
||||
import org.kie.api.runtime.manager.Context;
|
||||
import org.kie.internal.runtime.manager.context.EmptyContext;
|
||||
|
||||
import com.baeldung.jbpm.engine.WorkflowEngine;
|
||||
import com.baeldung.jbpm.engine.WorkflowEngineImpl;
|
||||
|
||||
public class WorkflowProcessMain {
|
||||
|
||||
public static void main(String[] args) {
|
||||
WorkflowEngine workflowEngine = new WorkflowEngineImpl();
|
||||
String processId = "com.baeldung.bpmn.helloworld";
|
||||
String kbaseId = "kbase";
|
||||
String persistenceUnit = "org.jbpm.persistence.jpa";
|
||||
Context<String> initialContext = EmptyContext.get();
|
||||
workflowEngine.runjBPMEngineForProcess(processId, initialContext, kbaseId, persistenceUnit);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package com.baeldung.jbpm.engine;
|
||||
|
||||
import org.kie.api.runtime.manager.Context;
|
||||
import org.kie.api.runtime.process.ProcessInstance;
|
||||
|
||||
public interface WorkflowEngine {
|
||||
|
||||
public ProcessInstance runjBPMEngineForProcess(String processId, Context<String> initialContext, String kbaseId, String persistenceUnit);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
package com.baeldung.jbpm.engine;
|
||||
|
||||
import javax.persistence.EntityManagerFactory;
|
||||
import javax.persistence.Persistence;
|
||||
|
||||
import org.jbpm.test.JBPMHelper;
|
||||
import org.kie.api.KieBase;
|
||||
import org.kie.api.KieServices;
|
||||
import org.kie.api.runtime.KieContainer;
|
||||
import org.kie.api.runtime.KieSession;
|
||||
import org.kie.api.runtime.manager.Context;
|
||||
import org.kie.api.runtime.manager.RuntimeEngine;
|
||||
import org.kie.api.runtime.manager.RuntimeEnvironment;
|
||||
import org.kie.api.runtime.manager.RuntimeEnvironmentBuilder;
|
||||
import org.kie.api.runtime.manager.RuntimeManager;
|
||||
import org.kie.api.runtime.manager.RuntimeManagerFactory;
|
||||
import org.kie.api.runtime.process.ProcessInstance;
|
||||
|
||||
public class WorkflowEngineImpl implements WorkflowEngine {
|
||||
|
||||
@Override
|
||||
public ProcessInstance runjBPMEngineForProcess(String processId, Context<String> initialContext, String kbaseId, String persistenceUnit) {
|
||||
RuntimeManager manager = null;
|
||||
RuntimeEngine engine = null;
|
||||
ProcessInstance pInstance = null;
|
||||
try {
|
||||
KieBase kbase = getKieBase(kbaseId);
|
||||
manager = createJBPMRuntimeManager(kbase, persistenceUnit);
|
||||
engine = manager.getRuntimeEngine(initialContext);
|
||||
pInstance = executeProcessInstance(processId, manager, initialContext, engine);
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
} finally {
|
||||
if (manager != null && engine != null)
|
||||
manager.disposeRuntimeEngine(engine);
|
||||
System.exit(0);
|
||||
}
|
||||
return pInstance;
|
||||
}
|
||||
|
||||
private ProcessInstance executeProcessInstance(String processId, RuntimeManager manager, Context<String> initialContext, RuntimeEngine engine) {
|
||||
KieSession ksession = engine.getKieSession();
|
||||
ProcessInstance pInstance = ksession.startProcess(processId);
|
||||
return pInstance;
|
||||
}
|
||||
|
||||
private KieBase getKieBase(String kbaseId) {
|
||||
KieServices ks = KieServices.Factory.get();
|
||||
KieContainer kContainer = ks.getKieClasspathContainer();
|
||||
KieBase kbase = kContainer.getKieBase(kbaseId);
|
||||
return kbase;
|
||||
}
|
||||
|
||||
private RuntimeManager createJBPMRuntimeManager(KieBase kbase, String persistenceUnit) {
|
||||
JBPMHelper.startH2Server();
|
||||
JBPMHelper.setupDataSource();
|
||||
EntityManagerFactory emf = Persistence.createEntityManagerFactory(persistenceUnit);
|
||||
RuntimeEnvironmentBuilder runtimeEnvironmentBuilder = RuntimeEnvironmentBuilder.Factory.get()
|
||||
.newDefaultBuilder();
|
||||
RuntimeEnvironment runtimeEnvironment = runtimeEnvironmentBuilder.entityManagerFactory(emf)
|
||||
.knowledgeBase(kbase)
|
||||
.get();
|
||||
return RuntimeManagerFactory.Factory.get()
|
||||
.newSingletonRuntimeManager(runtimeEnvironment);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user