xxxxxxxxxx
<dependency>
<groupId>org.jbpm</groupId>
<artifactId>jbpm-test</artifactId>
<version>7.28.0.Final</version>
<scope>test</scope>
</dependency>
xxxxxxxxxx
public class ProcessTest extends JbpmJUnitBaseTestCase {
@Test
public void test() {
final RuntimeManager runtimeManager = createRuntimeManager("sample.bpmn");
final RuntimeEngine runtimeEngine = getRuntimeEngine(null);
final KieSession kieSession = runtimeEngine.getKieSession();
final ProcessInstance processInstance = kieSession.startProcess("com.sample.bpmn.hello");
assertProcessInstanceCompleted(processInstance.getId(), kieSession);
assertNodeTriggered(processInstance.getId(), "Hello");
runtimeManager.disposeRuntimeEngine(runtimeEngine);
runtimeManager.close();
}
}
jbpm-test
source code (jbpm-test-7.28.0.Final-sources
) where you will find some sample codes that will help you understand how jBPM works.org.jbpm.test.JbpmJUnitBaseTestCase
org.kie.api.runtime.manager.RuntimeEnvironmentBuilder
:xxxxxxxxxx
RuntimeEnvironmentBuilder builder = RuntimeEnvironmentBuilder.Factory.get().newEmptyBuilder()
.addConfiguration("drools.processSignalManagerFactory", DefaultSignalManagerFactory.class.getName())
.addConfiguration("drools.processInstanceManagerFactory", DefaultProcessInstanceManagerFactory.class.getName())
.registerableItemsFactory(new SimpleRegisterableItemsFactory() {
@Override
public Map<String, WorkItemHandler> getWorkItemHandlers(RuntimeEngine runtime) {
Map<String, WorkItemHandler> handlers = new HashMap<String, WorkItemHandler>();
handlers.putAll(super.getWorkItemHandlers(runtime));
handlers.putAll(customHandlers);
return handlers;
}
@Override
public List<ProcessEventListener> getProcessEventListeners(RuntimeEngine runtime) {
List<ProcessEventListener> listeners = super.getProcessEventListeners(runtime);
listeners.addAll(customProcessListeners);
return listeners;
}
@Override
public List<AgendaEventListener> getAgendaEventListeners(RuntimeEngine runtime) {
List<AgendaEventListener> listeners = super.getAgendaEventListeners(runtime);
listeners.addAll(customAgendaListeners);
return listeners;
}
@Override
public List<TaskLifeCycleEventListener> getTaskListeners() {
List<TaskLifeCycleEventListener> listeners = super.getTaskListeners();
listeners.addAll(customTaskListeners);
return listeners;
}
});
org.kie.api.runtime.manager.RuntimeManager
:xxxxxxxxxx
protected RuntimeManager createRuntimeManager(Strategy strategy, Map<String, ResourceType> resources, RuntimeEnvironment environment, String identifier) {
try {
switch (strategy) {
case SINGLETON:
if (identifier == null) {
manager = managerFactory.newSingletonRuntimeManager(environment);
} else {
manager = managerFactory.newSingletonRuntimeManager(environment, identifier);
}
break;
case REQUEST:
if (identifier == null) {
manager = managerFactory.newPerRequestRuntimeManager(environment);
} else {
manager = managerFactory.newPerRequestRuntimeManager(environment, identifier);
}
break;
case PROCESS_INSTANCE:
if (identifier == null) {
manager = managerFactory.newPerProcessInstanceRuntimeManager(environment);
} else {
manager = managerFactory.newPerProcessInstanceRuntimeManager(environment, identifier);
}
break;
default:
if (identifier == null) {
manager = managerFactory.newSingletonRuntimeManager(environment);
} else {
manager = managerFactory.newSingletonRuntimeManager(environment, identifier);
}
break;
}
return manager;
} catch (Exception e) {
if (e instanceof BitronixSystemException || e instanceof ClosedChannelException) {
TransactionManagerServices.getTransactionManager().shutdown();
}
throw new RuntimeException(e);
}
}
void assertProcessInstanceState(long processInstanceId, Integer expectedState, String message)
void assertNodeActive(long processInstanceId, KieSession ksession, String... name)
void assertNodeTriggered(long processInstanceId, String... nodeNames)