Search in sources :

Example 31 with TrackingProcessEventListener

use of org.jbpm.test.listener.TrackingProcessEventListener in project jbpm by kiegroup.

the class AdHocSubProcessTest method testAdHocSubprocessDynamicWorkItem.

/**
 * Tests dynamic insertion of new work item node into the adhoc subprocess.
 * Uses DynamicUtils.
 */
@Test(timeout = 30000)
public void testAdHocSubprocessDynamicWorkItem() {
    KieSession kieSession = createKSession(ADHOC);
    TrackingProcessEventListener eventListener = new TrackingProcessEventListener();
    kieSession.addEventListener(eventListener);
    WorkflowProcessInstance pi = (WorkflowProcessInstance) kieSession.execute((Command<?>) CommandFactory.newStartProcess(ADHOC_ID));
    assertProcessStarted(eventListener, ADHOC_ID);
    assertTriggeredAndLeft(eventListener, "start");
    assertTriggered(eventListener, "adhoc");
    // dynamic node insert
    JbpmJUnitBaseTestCase.TestWorkItemHandler handler = getTestWorkItemHandler();
    RegisterWorkItemHandlerCommand registerCommand = new RegisterWorkItemHandlerCommand("addedWorkItem", handler);
    kieSession.execute(registerCommand);
    DynamicNodeInstance dynamicNodeInstance = (DynamicNodeInstance) pi.getNodeInstances().iterator().next();
    DynamicUtils.addDynamicWorkItem(dynamicNodeInstance, kieSession, "addedWorkItem", new java.util.HashMap<String, Object>());
    WorkItem wi = handler.getWorkItem();
    CompleteWorkItemCommand completeCommand = new CompleteWorkItemCommand(wi.getId(), null);
    kieSession.execute(completeCommand);
    // end of the dynamic stuff
    assertEquals("addedWorkItem", wi.getName());
}
Also used : DynamicNodeInstance(org.jbpm.workflow.instance.node.DynamicNodeInstance) RegisterWorkItemHandlerCommand(org.drools.core.command.runtime.process.RegisterWorkItemHandlerCommand) CompleteWorkItemCommand(org.drools.core.command.runtime.process.CompleteWorkItemCommand) JbpmJUnitBaseTestCase(org.jbpm.test.JbpmJUnitBaseTestCase) CompleteWorkItemCommand(org.drools.core.command.runtime.process.CompleteWorkItemCommand) Command(org.kie.api.command.Command) RegisterWorkItemHandlerCommand(org.drools.core.command.runtime.process.RegisterWorkItemHandlerCommand) TrackingProcessEventListener(org.jbpm.test.listener.TrackingProcessEventListener) KieSession(org.kie.api.runtime.KieSession) Test(org.junit.Test)

Example 32 with TrackingProcessEventListener

use of org.jbpm.test.listener.TrackingProcessEventListener in project jbpm by kiegroup.

the class SubprocessesTest method testDependentNoWaitForCompletion.

@Test(timeout = 30000)
public void testDependentNoWaitForCompletion() {
    TrackingProcessEventListener listener = new TrackingProcessEventListener();
    ksession.addEventListener(listener);
    IterableProcessEventListener process = new IterableProcessEventListener();
    ksession.addEventListener(process);
    ProcessInstance pi = ksession.startProcess(PROCESS_ID_2, createBranchDefiningMap("dependent-nowait"));
    assertChangedVariable(process, "node", null, "dependent-nowait");
    assertProcessStarted(process, PROCESS_ID_2);
    assertNextNode(process, P2_START);
    assertNextNode(process, P2_GATEWAY_START);
    assertTriggered(process, "dependent process that doesn't have to be completed");
    // subprocess
    assertProcessStarted(process, PROCESS_ID_3);
    long id = process.current().<CachedProcessStartedEvent>getEvent().getProcessInstanceId();
    assertNextNode(process, P3_START);
    assertTriggered(process, P3_SIGNAL);
    assertLeft(process, "dependent process that doesn't have to be completed");
    assertNextNode(process, P2_GATEWAY_END);
    assertTriggered(process, P2_SIGNAL_END);
    Assertions.assertThat(listener.wasProcessStarted(PROCESS_ID_2)).isTrue();
    Assertions.assertThat(listener.wasProcessStarted(PROCESS_ID_3)).isTrue();
    // signal the parent process to finish
    ksession.signalEvent("finish", null, pi.getId());
    assertLeft(process, P2_SIGNAL_END);
    assertNextNode(process, P2_END);
    assertProcessCompleted(process, PROCESS_ID_2);
    Assertions.assertThat(listener.wasProcessCompleted(PROCESS_ID_2)).isTrue();
    Assertions.assertThat(listener.wasProcessCompleted(PROCESS_ID_3)).isFalse();
    // signal the subprocess to continue
    ksession.signalEvent("continue", null, id);
    assertLeft(process, P3_SIGNAL);
    assertTriggered(process, P3_SCRIPT);
    assertChangedVariable(process, "variable", null, "new value");
    assertLeft(process, P3_SCRIPT);
    assertNextNode(process, P3_END);
    assertProcessCompleted(process, PROCESS_ID_3);
    Assertions.assertThat(listener.wasProcessCompleted(PROCESS_ID_2)).isTrue();
    Assertions.assertThat(listener.wasProcessCompleted(PROCESS_ID_3)).isTrue();
}
Also used : IterableProcessEventListener(org.jbpm.test.listener.IterableProcessEventListener) TrackingProcessEventListener(org.jbpm.test.listener.TrackingProcessEventListener) ProcessInstance(org.kie.api.runtime.process.ProcessInstance) Test(org.junit.Test)

Example 33 with TrackingProcessEventListener

use of org.jbpm.test.listener.TrackingProcessEventListener in project jbpm by kiegroup.

the class SubprocessesTest method runProcess.

private TrackingProcessEventListener runProcess(KieSession session, String processId, String nodeType, Command<?>... additionalCommands) {
    TrackingProcessEventListener process = new TrackingProcessEventListener();
    session.addEventListener(process);
    ProcessInstance pi = session.startProcess(processId);
    session.signalEvent("nodeType", nodeType, pi.getId());
    for (Command<?> additionalCommand : additionalCommands) {
        session.execute(additionalCommand);
    }
    try {
        assertTrue("Process was not started on time!", process.waitForProcessToStart(1000));
    } catch (Exception ex) {
        logger.warn("Interrupted", ex);
    }
    return process;
}
Also used : TrackingProcessEventListener(org.jbpm.test.listener.TrackingProcessEventListener) ProcessInstance(org.kie.api.runtime.process.ProcessInstance)

Example 34 with TrackingProcessEventListener

use of org.jbpm.test.listener.TrackingProcessEventListener in project jbpm by kiegroup.

the class AsyncWIHOnOracleTest method testAsyncWIHExecutedMoreThanOnceOnOracle.

@Test
@BZ("1234592")
public void testAsyncWIHExecutedMoreThanOnceOnOracle() throws Exception {
    KieSession ksession = createKSession(PROCESS);
    TrackingProcessEventListener tpel = new TrackingProcessEventListener();
    ksession.addEventListener(tpel);
    WorkItemHandler wih = new AsyncWorkItemHandler(getExecutorService(), CounterCommand.class.getName());
    ksession.getWorkItemManager().registerWorkItemHandler("async", wih);
    ksession.startProcess(PROCESS_ID);
    boolean completed = tpel.waitForProcessToComplete(10000);
    Assertions.assertThat(completed).as("The process should have finished in 10s").isTrue();
    Assertions.assertThat(CounterCommand.getCounter()).as("The job has not been executed").isNotEqualTo(0);
    Assertions.assertThat(CounterCommand.getCounter()).as("The job has been executed multiple times").isEqualTo(1);
}
Also used : AsyncWorkItemHandler(org.jbpm.executor.impl.wih.AsyncWorkItemHandler) WorkItemHandler(org.kie.api.runtime.process.WorkItemHandler) TrackingProcessEventListener(org.jbpm.test.listener.TrackingProcessEventListener) AsyncWorkItemHandler(org.jbpm.executor.impl.wih.AsyncWorkItemHandler) KieSession(org.kie.api.runtime.KieSession) Test(org.junit.Test) BZ(qa.tools.ikeeper.annotation.BZ)

Example 35 with TrackingProcessEventListener

use of org.jbpm.test.listener.TrackingProcessEventListener in project jbpm by kiegroup.

the class EmbeddedSubprocessTest method testTerminatingEndEvent.

@Test
@BZ("851286")
public void testTerminatingEndEvent() {
    KieSession ksession = createKSession(TERMINATING_END_EVENT);
    TrackingProcessEventListener processEvents = new TrackingProcessEventListener();
    ksession.addEventListener(processEvents);
    List<Command<?>> commands = new ArrayList<Command<?>>();
    commands.add(getCommands().newStartProcess(TERMINATING_END_EVENT_ID));
    ksession.execute(getCommands().newBatchExecution(commands, null));
    Assertions.assertThat(processEvents.wasNodeTriggered("main-script")).isTrue();
    Assertions.assertThat(processEvents.wasNodeTriggered("main-end")).isTrue();
}
Also used : Command(org.kie.api.command.Command) TrackingProcessEventListener(org.jbpm.test.listener.TrackingProcessEventListener) ArrayList(java.util.ArrayList) KieSession(org.kie.api.runtime.KieSession) Test(org.junit.Test) BZ(qa.tools.ikeeper.annotation.BZ)

Aggregations

TrackingProcessEventListener (org.jbpm.test.listener.TrackingProcessEventListener)51 Test (org.junit.Test)49 KieSession (org.kie.api.runtime.KieSession)25 IterableProcessEventListener (org.jbpm.test.listener.IterableProcessEventListener)17 Command (org.kie.api.command.Command)16 ArrayList (java.util.ArrayList)13 ProcessInstance (org.kie.api.runtime.process.ProcessInstance)13 BZ (qa.tools.ikeeper.annotation.BZ)9 UserTransaction (javax.transaction.UserTransaction)7 RegisterWorkItemHandlerCommand (org.drools.core.command.runtime.process.RegisterWorkItemHandlerCommand)6 CompleteWorkItemCommand (org.drools.core.command.runtime.process.CompleteWorkItemCommand)5 HashMap (java.util.HashMap)3 TrackingAgendaEventListener (org.jbpm.test.listener.TrackingAgendaEventListener)2 WorkItem (org.kie.api.runtime.process.WorkItem)2 AsyncWorkItemHandler (org.jbpm.executor.impl.wih.AsyncWorkItemHandler)1 JbpmJUnitBaseTestCase (org.jbpm.test.JbpmJUnitBaseTestCase)1 TrackingRuleRuntimeEventListener (org.jbpm.test.listener.TrackingRuleRuntimeEventListener)1 ListWorkItemHandler (org.jbpm.test.wih.ListWorkItemHandler)1 DynamicNodeInstance (org.jbpm.workflow.instance.node.DynamicNodeInstance)1 Before (org.junit.Before)1