use of org.kie.api.runtime.manager.RuntimeManager in project jbpm by kiegroup.
the class SingletonRuntimeManagerTest method testCreationOfMultipleSingletonManagerWithPersistence.
@Test
public void testCreationOfMultipleSingletonManagerWithPersistence() {
RuntimeEnvironment environment = RuntimeEnvironmentBuilder.Factory.get().newDefaultBuilder().userGroupCallback(userGroupCallback).addAsset(ResourceFactory.newClassPathResource("BPMN2-ScriptTask.bpmn2"), ResourceType.BPMN2).get();
// create first manager
// -----------------------------------------
RuntimeManager manager = RuntimeManagerFactory.Factory.get().newSingletonRuntimeManager(environment, "manager1");
assertNotNull(manager);
RuntimeEngine runtime = manager.getRuntimeEngine(EmptyContext.get());
KieSession ksession = runtime.getKieSession();
assertNotNull(ksession);
long sessionId = ksession.getIdentifier();
assertTrue(sessionId == 1);
runtime = manager.getRuntimeEngine(EmptyContext.get());
ksession = runtime.getKieSession();
assertEquals(sessionId, ksession.getIdentifier());
// dispose session that should not have affect on the session at all
manager.disposeRuntimeEngine(runtime);
ksession = manager.getRuntimeEngine(EmptyContext.get()).getKieSession();
assertEquals(sessionId, ksession.getIdentifier());
// close manager which will close session maintained by the manager
manager.close();
// create another manager
// -----------------------------------------
RuntimeManager manager2 = RuntimeManagerFactory.Factory.get().newSingletonRuntimeManager(environment, "manager2");
assertNotNull(manager2);
runtime = manager2.getRuntimeEngine(EmptyContext.get());
ksession = runtime.getKieSession();
assertNotNull(ksession);
sessionId = ksession.getIdentifier();
assertTrue(sessionId == 2);
runtime = manager2.getRuntimeEngine(EmptyContext.get());
ksession = runtime.getKieSession();
assertEquals(sessionId, ksession.getIdentifier());
// dispose session that should not have affect on the session at all
manager2.disposeRuntimeEngine(runtime);
ksession = manager2.getRuntimeEngine(EmptyContext.get()).getKieSession();
assertEquals(sessionId, ksession.getIdentifier());
// close manager which will close session maintained by the manager
manager2.close();
// recreate first manager
// -----------------------------------------
manager = RuntimeManagerFactory.Factory.get().newSingletonRuntimeManager(environment, "manager1");
assertNotNull(manager);
runtime = manager.getRuntimeEngine(EmptyContext.get());
ksession = runtime.getKieSession();
assertNotNull(ksession);
sessionId = ksession.getIdentifier();
assertTrue(sessionId == 1);
runtime = manager.getRuntimeEngine(EmptyContext.get());
ksession = runtime.getKieSession();
assertEquals(sessionId, ksession.getIdentifier());
// dispose session that should not have affect on the session at all
manager.disposeRuntimeEngine(runtime);
ksession = manager.getRuntimeEngine(EmptyContext.get()).getKieSession();
assertEquals(sessionId, ksession.getIdentifier());
// close manager which will close session maintained by the manager
manager.close();
// create another manager
// -----------------------------------------
manager2 = RuntimeManagerFactory.Factory.get().newSingletonRuntimeManager(environment, "manager2");
assertNotNull(manager2);
runtime = manager2.getRuntimeEngine(EmptyContext.get());
ksession = runtime.getKieSession();
assertNotNull(ksession);
sessionId = ksession.getIdentifier();
assertTrue(sessionId == 2);
runtime = manager2.getRuntimeEngine(EmptyContext.get());
ksession = runtime.getKieSession();
assertEquals(sessionId, ksession.getIdentifier());
// dispose session that should not have affect on the session at all
manager2.disposeRuntimeEngine(runtime);
ksession = manager2.getRuntimeEngine(EmptyContext.get()).getKieSession();
assertEquals(sessionId, ksession.getIdentifier());
// close manager which will close session maintained by the manager
manager2.close();
}
use of org.kie.api.runtime.manager.RuntimeManager in project jbpm by kiegroup.
the class ParentChildMarshallingJpaTest method testProcess.
@Test
public void testProcess() throws Exception {
emfDomain = Persistence.createEntityManagerFactory("org.jbpm.persistence.parent-child");
addEnvironmentEntry(EnvironmentName.OBJECT_MARSHALLING_STRATEGIES, new ObjectMarshallingStrategy[] { new JPAPlaceholderResolverStrategy(emfDomain), new SerializablePlaceholderResolverStrategy(ClassObjectMarshallingStrategyAcceptor.DEFAULT) });
RuntimeManager manager = createRuntimeManager(Strategy.PROCESS_INSTANCE, "manager", "org/jbpm/test/functional/jpa/parent-child.bpmn");
RuntimeEngine runtime = manager.getRuntimeEngine(ProcessInstanceIdContext.get());
KieSession ksession = runtime.getKieSession();
// start a new process instance
Map<String, Object> params = new HashMap<String, Object>();
Application application = new Application();
application.setType("A");
params.put("application", application);
ProcessInstance pi = ksession.startProcess("com.sample.bpmn.hello", params);
System.out.println("A process instance started : pid = " + pi.getId());
TaskService taskService = runtime.getTaskService();
assertTrue(taskService instanceof CommandBasedTaskService);
assertTrue(((CommandBasedTaskService) taskService).getEnvironment().get(EnvironmentName.OBJECT_MARSHALLING_STRATEGIES) != null);
List<TaskSummary> list = taskService.getTasksAssignedAsPotentialOwner("john", "en-UK");
for (TaskSummary taskSummary : list) {
System.out.println("john starts a task : taskId = " + taskSummary.getId());
Task task = taskService.getTaskById(taskSummary.getId());
long documentContentId = task.getTaskData().getDocumentContentId();
Content content = taskService.getContentById(documentContentId);
HashMap<String, Object> contents = (HashMap<String, Object>) ContentMarshallerHelper.unmarshall(content.getContent(), ksession.getEnvironment());
Application outputApplication = (Application) contents.get("input1_application");
Person person = new Person();
person.setFullName("John Doe");
outputApplication.setPerson(person);
Map<String, Object> results = new LinkedHashMap<String, Object>();
results.put("output1_application", outputApplication);
taskService.start(taskSummary.getId(), "john");
taskService.complete(taskSummary.getId(), "john", results);
}
list = taskService.getTasksAssignedAsPotentialOwner("mary", "en-UK");
for (TaskSummary taskSummary : list) {
System.out.println("mary starts a task : taskId = " + taskSummary.getId());
taskService.start(taskSummary.getId(), "mary");
taskService.complete(taskSummary.getId(), "mary", null);
}
manager.disposeRuntimeEngine(runtime);
// Check!
EntityManager em = emfDomain.createEntityManager();
int size = em.createQuery("select i from Person i").getResultList().size();
assertEquals(1, size);
}
use of org.kie.api.runtime.manager.RuntimeManager in project jbpm by kiegroup.
the class CallActivitiesWithUserTasksProcessTest method testCallActivitiesWith2ndUserTaskInSub.
@Test
public void testCallActivitiesWith2ndUserTaskInSub() throws Exception {
TaskCleanUpProcessEventListener taskListener = new TaskCleanUpProcessEventListener(null);
addWorkItemHandler("Sysout", new SystemOutWorkItemHandler());
addProcessEventListener(taskListener);
InitialContext context = new InitialContext();
UserTransaction ut = (UserTransaction) context.lookup(JtaTransactionManager.DEFAULT_USER_TRANSACTION_NAME);
RuntimeManager manager = createRuntimeManager(strategy, (String) null, "org/jbpm/test/functional/subprocess/CallActivityWithTaskInSub-Main.bpmn2", "org/jbpm/test/functional/subprocess/CallActivityWithTaskInSub-Sub.bpmn2");
RuntimeEngine runtimeEngine;
if (Strategy.SINGLETON.equals(strategy)) {
runtimeEngine = getRuntimeEngine();
} else if (Strategy.PROCESS_INSTANCE.equals(strategy)) {
runtimeEngine = getRuntimeEngine(ProcessInstanceIdContext.get());
} else {
throw new IllegalStateException("Not possible!");
}
KieSession ksession = runtimeEngine.getKieSession();
TaskService taskService = runtimeEngine.getTaskService();
// set created task service on listener
taskListener.setTaskService((InternalTaskService) taskService);
if (userManagedTx) {
ut.begin();
}
Map<String, Object> params = new HashMap<String, Object>();
params.put("pActorId", "john");
ProcessInstance processInstance = ksession.startProcess("PolicyValueAnalysis", params);
if (userManagedTx) {
ut.commit();
manager.disposeRuntimeEngine(runtimeEngine);
runtimeEngine = getRuntimeEngine(ProcessInstanceIdContext.get(processInstance.getId()));
ksession = runtimeEngine.getKieSession();
taskService = runtimeEngine.getTaskService();
taskListener.setTaskService((InternalTaskService) taskService);
ut.begin();
} else {
manager.disposeRuntimeEngine(runtimeEngine);
runtimeEngine = getRuntimeEngine(ProcessInstanceIdContext.get(processInstance.getId()));
ksession = runtimeEngine.getKieSession();
taskService = runtimeEngine.getTaskService();
taskListener.setTaskService((InternalTaskService) taskService);
}
List<TaskSummary> tasks = taskService.getTasksAssignedAsPotentialOwner("john", "en-UK");
assertNotNull(tasks);
assertEquals(1, tasks.size());
Long taskId = tasks.get(0).getId();
taskService.start(taskId, "john");
taskService.complete(taskId, "john", null);
if (userManagedTx) {
ut.commit();
manager.disposeRuntimeEngine(runtimeEngine);
runtimeEngine = getRuntimeEngine(ProcessInstanceIdContext.get(processInstance.getId()));
ksession = runtimeEngine.getKieSession();
taskService = runtimeEngine.getTaskService();
taskListener.setTaskService((InternalTaskService) taskService);
ut.begin();
} else {
manager.disposeRuntimeEngine(runtimeEngine);
runtimeEngine = getRuntimeEngine(ProcessInstanceIdContext.get(processInstance.getId()));
ksession = runtimeEngine.getKieSession();
taskService = runtimeEngine.getTaskService();
taskListener.setTaskService((InternalTaskService) taskService);
}
// sub process task
tasks = taskService.getTasksAssignedAsPotentialOwner("john", "en-UK");
assertNotNull(tasks);
assertEquals(1, tasks.size());
taskId = tasks.get(0).getId();
taskService.start(taskId, "john");
taskService.complete(taskId, "john", null);
if (userManagedTx) {
ut.commit();
manager.disposeRuntimeEngine(runtimeEngine);
runtimeEngine = getRuntimeEngine(ProcessInstanceIdContext.get(processInstance.getId()));
ksession = runtimeEngine.getKieSession();
taskService = runtimeEngine.getTaskService();
taskListener.setTaskService((InternalTaskService) taskService);
ut.begin();
} else {
manager.disposeRuntimeEngine(runtimeEngine);
runtimeEngine = getRuntimeEngine(ProcessInstanceIdContext.get(processInstance.getId()));
ksession = runtimeEngine.getKieSession();
taskService = runtimeEngine.getTaskService();
taskListener.setTaskService((InternalTaskService) taskService);
}
tasks = taskService.getTasksAssignedAsPotentialOwner("john", "en-UK");
assertNotNull(tasks);
assertEquals(1, tasks.size());
taskId = tasks.get(0).getId();
taskService.start(taskId, "john");
taskService.complete(taskId, "john", null);
if (userManagedTx) {
ut.commit();
manager.disposeRuntimeEngine(runtimeEngine);
runtimeEngine = getRuntimeEngine(ProcessInstanceIdContext.get(processInstance.getId()));
ksession = runtimeEngine.getKieSession();
taskService = runtimeEngine.getTaskService();
taskListener.setTaskService((InternalTaskService) taskService);
ut.begin();
} else {
manager.disposeRuntimeEngine(runtimeEngine);
runtimeEngine = getRuntimeEngine(ProcessInstanceIdContext.get(processInstance.getId()));
ksession = runtimeEngine.getKieSession();
taskService = runtimeEngine.getTaskService();
taskListener.setTaskService((InternalTaskService) taskService);
}
// sub process task
tasks = taskService.getTasksAssignedAsPotentialOwner("john", "en-UK");
assertNotNull(tasks);
assertEquals(1, tasks.size());
taskId = tasks.get(0).getId();
taskService.start(taskId, "john");
taskService.complete(taskId, "john", null);
if (userManagedTx) {
// since we are checking in same transaction it will already see it as completed
assertProcessInstanceCompleted(processInstance.getId());
ut.commit();
}
assertProcessInstanceCompleted(processInstance.getId());
}
use of org.kie.api.runtime.manager.RuntimeManager in project jbpm by kiegroup.
the class CallActivitiesWithUserTasksProcessTest method testCallActivitiesWithUserTasks.
@Test
public void testCallActivitiesWithUserTasks() throws Exception {
TaskCleanUpProcessEventListener taskListener = new TaskCleanUpProcessEventListener(null);
addWorkItemHandler("Sysout", new SystemOutWorkItemHandler());
addProcessEventListener(taskListener);
InitialContext context = new InitialContext();
UserTransaction ut = (UserTransaction) context.lookup(JtaTransactionManager.DEFAULT_USER_TRANSACTION_NAME);
RuntimeManager manager = createRuntimeManager(strategy, (String) null, "org/jbpm/test/functional/subprocess/CallActivityWithTask-Main.bpmn2", "org/jbpm/test/functional/subprocess/CallActivityWithTask-Sub.bpmn2");
RuntimeEngine runtimeEngine;
if (Strategy.SINGLETON.equals(strategy)) {
runtimeEngine = getRuntimeEngine();
} else if (Strategy.PROCESS_INSTANCE.equals(strategy)) {
runtimeEngine = getRuntimeEngine(ProcessInstanceIdContext.get());
} else {
throw new IllegalStateException("Not possible!");
}
KieSession ksession = runtimeEngine.getKieSession();
TaskService taskService = runtimeEngine.getTaskService();
// set created task service on listener
taskListener.setTaskService((InternalTaskService) taskService);
if (userManagedTx) {
ut.begin();
}
Map<String, Object> params = new HashMap<String, Object>();
params.put("pActorId", "john");
ProcessInstance processInstance = ksession.startProcess("PolicyValueAnalysis", params);
if (userManagedTx) {
ut.commit();
manager.disposeRuntimeEngine(runtimeEngine);
runtimeEngine = getRuntimeEngine(ProcessInstanceIdContext.get(processInstance.getId()));
ksession = runtimeEngine.getKieSession();
taskService = runtimeEngine.getTaskService();
taskListener.setTaskService((InternalTaskService) taskService);
ut.begin();
} else {
manager.disposeRuntimeEngine(runtimeEngine);
runtimeEngine = getRuntimeEngine(ProcessInstanceIdContext.get(processInstance.getId()));
ksession = runtimeEngine.getKieSession();
taskService = runtimeEngine.getTaskService();
taskListener.setTaskService((InternalTaskService) taskService);
}
List<TaskSummary> tasks = taskService.getTasksAssignedAsPotentialOwner("john", "en-UK");
assertNotNull(tasks);
assertEquals(1, tasks.size());
Long taskId = tasks.get(0).getId();
taskService.start(taskId, "john");
taskService.complete(taskId, "john", null);
if (userManagedTx) {
ut.commit();
manager.disposeRuntimeEngine(runtimeEngine);
runtimeEngine = getRuntimeEngine(ProcessInstanceIdContext.get(processInstance.getId()));
ksession = runtimeEngine.getKieSession();
taskService = runtimeEngine.getTaskService();
taskListener.setTaskService((InternalTaskService) taskService);
ut.begin();
} else {
manager.disposeRuntimeEngine(runtimeEngine);
runtimeEngine = getRuntimeEngine(ProcessInstanceIdContext.get(processInstance.getId()));
ksession = runtimeEngine.getKieSession();
taskService = runtimeEngine.getTaskService();
taskListener.setTaskService((InternalTaskService) taskService);
}
tasks = taskService.getTasksAssignedAsPotentialOwner("john", "en-UK");
assertNotNull(tasks);
assertEquals(1, tasks.size());
taskId = tasks.get(0).getId();
taskService.start(taskId, "john");
taskService.complete(taskId, "john", null);
if (userManagedTx) {
ut.commit();
ut.begin();
}
assertProcessInstanceCompleted(processInstance.getId());
if (userManagedTx) {
ut.commit();
}
}
use of org.kie.api.runtime.manager.RuntimeManager in project jbpm by kiegroup.
the class AdminAPIsWithListenerTest method automaticCleanUpForSubProcessWithPerProcessInstanceStrategy.
@Test
public void automaticCleanUpForSubProcessWithPerProcessInstanceStrategy() throws Exception {
TaskCleanUpProcessEventListener taskCleanUpProcessEventListener = new TaskCleanUpProcessEventListener(null);
this.addProcessEventListener(taskCleanUpProcessEventListener);
RuntimeManager manager = createRuntimeManager(Strategy.PROCESS_INSTANCE, "com.mycompany.sample", "org/jbpm/test/functional/task/ht-main.bpmn", "org/jbpm/test/functional/task/ht-sub.bpmn");
RuntimeEngine runtime = getRuntimeEngine(ProcessInstanceIdContext.get());
taskCleanUpProcessEventListener.setTaskService((InternalTaskService) runtime.getTaskService());
KieSession ksession = runtime.getKieSession();
// start a new process instance
Map<String, Object> params = new HashMap<String, Object>();
ProcessInstance pi = ksession.startProcess("com.mycompany.sample", params);
// obtain the task service
TaskService taskService = runtime.getTaskService();
List<TaskSummary> tasks1 = taskService.getTasksAssignedAsPotentialOwner("john", "en-UK");
assertFalse(tasks1.isEmpty());
TaskSummary task1 = tasks1.get(0);
System.out.println("Sales-rep executing task " + task1.getName() + "(" + task1.getId() + ": " + task1.getDescription() + ")");
taskService.start(task1.getId(), "john");
Map<String, Object> results = new HashMap<String, Object>();
results.put("comment", "Agreed, existing laptop needs replacing");
results.put("outcome", "Accept");
// complete the human task of the main process
taskService.complete(task1.getId(), "john", results);
// abort the process instance
ksession.abortProcessInstance(pi.getId());
// main process instance shall be aborted
assertProcessInstanceAborted(pi.getId());
AuditService logService = runtime.getAuditService();
List<? extends ProcessInstanceLog> logs = logService.findProcessInstances("com.mycompany.sample");
assertNotNull(logs);
assertEquals(1, logs.size());
assertEquals(ProcessInstance.STATE_ABORTED, logs.get(0).getStatus().intValue());
logs = logService.findProcessInstances("com.mycompany.sample.subprocess");
assertNotNull(logs);
assertEquals(1, logs.size());
assertEquals(ProcessInstance.STATE_ABORTED, logs.get(0).getStatus().intValue());
manager.close();
final EntityManager em = emfTasks.createEntityManager();
assertEquals(0, em.createQuery("select t from TaskImpl t").getResultList().size());
assertEquals(0, em.createQuery("select i from I18NTextImpl i").getResultList().size());
assertEquals(0, em.createNativeQuery("select * from PeopleAssignments_BAs").getResultList().size());
assertEquals(0, em.createNativeQuery("select * from PeopleAssignments_ExclOwners").getResultList().size());
assertEquals(0, em.createNativeQuery("select * from PeopleAssignments_PotOwners").getResultList().size());
assertEquals(0, em.createNativeQuery("select * from PeopleAssignments_Recipients").getResultList().size());
assertEquals(0, em.createNativeQuery("select * from PeopleAssignments_Stakeholders").getResultList().size());
assertEquals(0, em.createQuery("select c from ContentImpl c").getResultList().size());
em.close();
}
Aggregations