@Test(timeout=10000) @RequirePersistence(false) public void testIntermediateCatchEventTimerCycleWithError() throws Exception { NodeLeftCountDownProcessEventListener countDownListener = new NodeLeftCountDownProcessEventListener("timer", 3); KieBase kbase = createKnowledgeBase("BPMN2-IntermediateCatchEventTimerCycleWithError.bpmn2"); ksession = createKnowledgeSession(kbase); ksession.getWorkItemManager().registerWorkItemHandler("Human Task", new DoNothingWorkItemHandler()); ksession.addEventListener(countDownListener); Map<String, Object> params = new HashMap<String, Object>(); params.put("x", 0); ProcessInstance processInstance = ksession.startProcess("IntermediateCatchEvent", params); assertProcessInstanceActive(processInstance); // now wait for 1 second for timer to trigger countDownListener.waitTillCompleted(); assertProcessInstanceActive(processInstance); processInstance = ksession.getProcessInstance(processInstance.getId()); Integer xValue = (Integer) ((WorkflowProcessInstance) processInstance).getVariable("x"); assertThat(xValue).isEqualTo(3); ksession.abortProcessInstance(processInstance.getId()); assertProcessInstanceFinished(processInstance, ksession); }
person1.setId(1L); WorkflowProcessInstance pi1 = (WorkflowProcessInstance) ksession .createProcessInstance( "IntermediateCatchEventConditionFilterByProcessInstance", params1); long pi1id = pi1.getId(); ksession.insert(pi1); FactHandle personHandle1 = ksession.insert(person1); ksession.startProcessInstance(pi1.getId()); "IntermediateCatchEventConditionFilterByProcessInstance", params2); long pi2id = pi2.getId(); ksession.insert(pi2); FactHandle personHandle2 = ksession.insert(person2); ksession.startProcessInstance(pi2.getId()); assertThat(ksession.getProcessInstance(pi1id)).isNull(); assertThat(ksession.getProcessInstance(pi2id)).isNotNull();
KieSession ksession = createKnowledgeSession(kbase); TestWorkItemHandler workItemHandler = new TestWorkItemHandler(); ksession.getWorkItemManager().registerWorkItemHandler("Human Task", workItemHandler); ksession.addEventListener(listener); ksession.getEnvironment().set("SLATimerMode", "false"); ProcessInstance processInstance = ksession.startProcess("UserTask"); assertTrue(processInstance.getState() == ProcessInstance.STATE_ACTIVE); assertEquals("john", workItem.getParameter("ActorId")); processInstance = ksession.getProcessInstance(processInstance.getId()); assertTrue(processInstance.getState() == ProcessInstance.STATE_ACTIVE); Collection<NodeInstance> active = ((WorkflowProcessInstance)processInstance).getNodeInstances(); assertEquals(1, active.size()); ksession.getWorkItemManager().completeWorkItem(workItem.getId(), null); assertProcessInstanceFinished(processInstance, ksession);
public NodeInstanceResolverFactory(NodeInstance nodeInstance) { this.nodeInstance = nodeInstance; this.extraParameters.put("nodeInstance", nodeInstance); if (nodeInstance.getProcessInstance() != null) { this.extraParameters.put("processInstance", nodeInstance.getProcessInstance()); this.extraParameters.put("processInstanceId", nodeInstance.getProcessInstance().getId()); this.extraParameters.put("parentProcessInstanceId", nodeInstance.getProcessInstance().getParentProcessInstanceId()); } }
@Test public void testServiceTask() throws Exception { KieBase kbase = createKnowledgeBase("BPMN2-ServiceProcess.bpmn2"); KieSession ksession = createKnowledgeSession(kbase); ksession.getWorkItemManager().registerWorkItemHandler("Service Task", new ServiceTaskHandler()); Map<String, Object> params = new HashMap<String, Object>(); params.put("s", "john"); WorkflowProcessInstance processInstance = (WorkflowProcessInstance) ksession.startProcess("ServiceProcess", params); assertProcessInstanceCompleted(processInstance.getId(), ksession); assertThat(processInstance.getVariable("s")).isEqualTo("Hello john!"); }
public boolean evaluate(NodeInstance instance, Connection connection, Constraint constraint) { WorkflowProcessInstance processInstance = instance.getProcessInstance(); InternalAgenda agenda = (InternalAgenda) ((ProcessInstance) processInstance).getKnowledgeRuntime().getAgenda(); String rule = "RuleFlow-Split-" + processInstance.getProcessId() + "-" + ((Node) instance.getNode()).getUniqueId() + "-" + ((Node) connection.getTo()).getUniqueId() + "-" + connection.getToType(); return agenda.isRuleActiveInRuleFlowGroup( "DROOLS_SYSTEM", rule, processInstance.getId() ); }
@Test public void testReceiveTask() throws Exception { KieBase kbase = createKnowledgeBaseWithoutDumper("BPMN2-ReceiveTask.bpmn2"); KieSession ksession = createKnowledgeSession(kbase); ReceiveTaskHandler receiveTaskHandler = new ReceiveTaskHandler(ksession); ksession.getWorkItemManager().registerWorkItemHandler("Receive Task", receiveTaskHandler); WorkflowProcessInstance processInstance = (WorkflowProcessInstance) ksession.startProcess("ReceiveTask"); assertThat(processInstance.getState()).isEqualTo(ProcessInstance.STATE_ACTIVE); ksession = restoreSession(ksession); receiveTaskHandler.messageReceived("HelloMessage", "Hello john!"); assertProcessInstanceCompleted(processInstance.getId(), ksession); }
@Test public void testCallActivity() throws Exception { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add(ResourceFactory.newClassPathResource("BPMN2-CallActivity.bpmn2"), ResourceType.BPMN2); kbuilder.add(ResourceFactory.newClassPathResource("BPMN2-CallActivitySubProcess.bpmn2"), ResourceType.BPMN2); if (!kbuilder.getErrors().isEmpty()) { for (KnowledgeBuilderError error : kbuilder.getErrors()) { logger.error("{}", error); } throw new IllegalArgumentException("Errors while parsing knowledge base"); } InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addPackages(kbuilder.getKnowledgePackages()); KieSession ksession = createKnowledgeSession(kbase); Map<String, Object> params = new HashMap<String, Object>(); params.put("x", "oldValue"); ProcessInstance processInstance = ksession.startProcess("ParentProcess", params); assertThat(processInstance.getState()).isEqualTo(ProcessInstance.STATE_COMPLETED); assertThat(((WorkflowProcessInstance) processInstance).getVariable("y")).isEqualTo("new value"); }
ksession = createKnowledgeSession(kbase); TestWorkItemHandler workItemHandler = new TestWorkItemHandler(); ksession.getWorkItemManager().registerWorkItemHandler("Human Task", workItemHandler); TestWorkItemHandler workItemHandler2 = new TestWorkItemHandler(); ksession.getWorkItemManager().registerWorkItemHandler("OtherTask", workItemHandler2); ProcessInstance processInstance = ksession .startProcess("AdHocSubProcess"); assertTrue(processInstance.getState() == ProcessInstance.STATE_ACTIVE); ksession.fireAllRules(); DynamicNodeInstance dynamicContext = (DynamicNodeInstance) ((WorkflowProcessInstance) processInstance) .getNodeInstances().iterator().next(); DynamicUtils.addDynamicSubProcess(dynamicContext, ksession, "Minimal", new HashMap<String, Object>()); WorkItem workItem = workItemHandler.getWorkItem(); assertNotNull(workItem); ksession.getWorkItemManager().registerWorkItemHandler("Human Task", workItemHandler); ksession.getWorkItemManager().completeWorkItem(workItem.getId(), null);
@Test public void testScriptTaskFEEL() throws Exception { KieBase kbase = createKnowledgeBase("BPMN2-ScriptTaskFEEL.bpmn2"); ksession = createKnowledgeSession(kbase); TestWorkItemHandler handler = new TestWorkItemHandler(); ksession.getWorkItemManager().registerWorkItemHandler("Human Task", handler); Map<String, Object> params = new HashMap<String, Object>(); params.put("name", "krisv"); Person person = new Person(); person.setName("krisv"); params.put("person", person); WorkflowProcessInstance processInstance = (WorkflowProcessInstance) ksession.startProcess("ScriptTask", params); assertEquals("Entry", processInstance.getVariable("x")); assertNull(processInstance.getVariable("y")); ksession.getWorkItemManager().completeWorkItem(handler.getWorkItem().getId(), null); assertEquals("Exit", getProcessVarValue(processInstance, "y")); assertEquals("tester", processInstance.getVariable("surname")); assertNodeTriggered(processInstance.getId(), "Script1"); }
@Test public void testAdHocSubProcess() throws Exception { KieBase kbase = createKnowledgeBaseWithoutDumper("BPMN2-AdHocSubProcess.bpmn2", "BPMN2-AdHocSubProcess.drl"); ksession = createKnowledgeSession(kbase); TestWorkItemHandler workItemHandler = new TestWorkItemHandler(); ksession.getWorkItemManager().registerWorkItemHandler("Human Task", workItemHandler); ProcessInstance processInstance = ksession .startProcess("AdHocSubProcess"); assertTrue(processInstance.getState() == ProcessInstance.STATE_ACTIVE); assertEquals("Entry", ((WorkflowProcessInstance) processInstance).getVariable("x")); WorkItem workItem = workItemHandler.getWorkItem(); assertNull(workItem); ksession = restoreSession(ksession, true); ksession.getWorkItemManager().registerWorkItemHandler("Human Task", workItemHandler); ksession.fireAllRules(); logger.debug("Signaling Hello2"); ksession.signalEvent("Hello2", null, processInstance.getId()); workItem = workItemHandler.getWorkItem(); assertNotNull(workItem); ksession = restoreSession(ksession, true); ksession.getWorkItemManager().registerWorkItemHandler("Human Task", workItemHandler); ksession.getWorkItemManager().completeWorkItem(workItem.getId(), null); }
KieBase kbase = createKnowledgeBase("BPMN2-IntermediateCatchEventSignalWithSLAOnEvent.bpmn2"); KieSession ksession = createKnowledgeSession(kbase); ksession.addEventListener(listener); ksession.getWorkItemManager().registerWorkItemHandler("Human Task", new SystemOutWorkItemHandler()); ProcessInstance processInstance = ksession.startProcess("IntermediateCatchEvent"); assertTrue(processInstance.getState() == ProcessInstance.STATE_ACTIVE); Collection<NodeInstance> active = ((WorkflowProcessInstance)processInstance).getNodeInstances(); assertEquals(1, active.size()); ksession.signalEvent("MyMessage", null, processInstance.getId()); assertEquals(ProcessInstance.SLA_NA, slaCompliance); slaCompliance = getSLAComplianceForNodeInstance(processInstance.getId(), (org.jbpm.workflow.instance.NodeInstance) eventNode, NodeInstanceLog.TYPE_EXIT); assertEquals(ProcessInstance.SLA_MET, slaCompliance);
ksession = reloadSession( ksession, kbase , env); WorkflowProcessInstance processInstance = (WorkflowProcessInstance) ksession.getProcessInstance( processInstanceId ); assertNotNull( processInstance ); assertEquals("SomeString", processInstance.getVariable("x")); assertEquals("This is a test Entity", ((MyEntity) processInstance.getVariable("y")).getTest()); assertEquals("This is a test SerializableObject", ((MyVariableSerializable) processInstance.getVariable("z")).getText()); assertNull(processInstance.getVariable("a")); assertNull(processInstance.getVariable("b")); assertNull(processInstance.getVariable("c")); results.put("zeta", processInstance.getVariable("z")); results.put("equis", processInstance.getVariable("x")+"->modifiedResult"); assertNotNull(processInstance); logger.debug("######## Getting the already Persisted Variables #########"); assertEquals("SomeString->modifiedResult", processInstance.getVariable("x")); assertEquals("This is a test Entity", ((MyEntity) processInstance.getVariable("y")).getTest()); assertEquals("This is a test SerializableObject", ((MyVariableSerializable) processInstance.getVariable("z")).getText()); assertEquals("Some new String", processInstance.getVariable("a")); assertEquals("This is a new test Entity", ((MyEntity) processInstance.getVariable("b")).getTest()); assertEquals("This is a new test SerializableObject", ((MyVariableSerializable) processInstance.getVariable("c")).getText()); logger.debug("### Completing second work item ###"); results = new HashMap<String, Object>(); results.put("zeta", processInstance.getVariable("z")); results.put("equis", processInstance.getVariable("x")); ksession.getWorkItemManager().completeWorkItem( workItem.getId(), results ); assertEquals("SomeString->modifiedResult", processInstance.getVariable("x"));
person.setName("John Doe"); parameters.put("Person", person); WorkflowProcessInstance processInstance = (WorkflowProcessInstance)ksession.startProcess("org.drools.actions", parameters); assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState()); WorkItem workItem = handler.getWorkItem(); assertNotNull(workItem); assertEquals("John Doe", workItem.getParameter("ActorId")); assertEquals("John Doe", workItem.getParameter("Content")); assertEquals("John Doe", workItem.getParameter("Comment")); assertEquals(WorkItem.PENDING, workItem.getState()); assertEquals(WorkItem.COMPLETED, workItem.getState()); assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState()); person.setName("Jane Doe"); parameters.put("Person", person); processInstance = (WorkflowProcessInstance)ksession.startProcess("org.drools.actions", parameters); assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState()); workItem = handler.getWorkItem(); assertNotNull(workItem); assertEquals(WorkItem.COMPLETED, workItem.getState()); assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState()); assertEquals("SomeOtherString", processInstance.getVariable("MyObject")); assertEquals(15, processInstance.getVariable("Number"));
parameters.put("y", myEntity); parameters.put("z", myVariableSerializable); long processInstanceId = ksession.startProcess( "com.sample.ruleflow", parameters ).getId(); ksession = reloadSession( ksession, kbase , env); WorkflowProcessInstance processInstance = (WorkflowProcessInstance) ksession.getProcessInstance( processInstanceId ); assertNotNull( processInstance ); assertEquals("SomeString", processInstance.getVariable("x")); assertEquals("This is a test Entity", ((MyEntity) processInstance.getVariable("y")).getTest()); assertEquals("This is a test SerializableObject", ((MyVariableSerializable) processInstance.getVariable("z")).getText()); assertNull(processInstance.getVariable("a")); assertNull(processInstance.getVariable("b")); assertNull(processInstance.getVariable("c")); results.put("zeta", processInstance.getVariable("z")); results.put("equis", processInstance.getVariable("x")+"->modifiedResult"); ksession.getWorkItemManager().abortWorkItem( workItem.getId() ); logger.debug("######## Getting the already Persisted Variables #########"); assertEquals("SomeString", processInstance.getVariable("x")); assertEquals("This is a test Entity", ((MyEntity) processInstance.getVariable("y")).getTest()); assertEquals("This is a test SerializableObject", ((MyVariableSerializable) processInstance.getVariable("z")).getText()); assertEquals("Some new String", processInstance.getVariable("a")); assertEquals("This is a new test Entity", ((MyEntity) processInstance.getVariable("b")).getTest()); assertEquals("This is a new test SerializableObject", ((MyVariableSerializable) processInstance.getVariable("c")).getText());
ksession.getWorkItemManager().registerWorkItemHandler("Human Task", handler); Map<String, Object> parameters = new HashMap<String, Object>(); parameters.put("UserName", "John Doe"); person.setName("John Doe"); parameters.put("Person", person); WorkflowProcessInstance processInstance = (WorkflowProcessInstance)ksession.startProcess("org.drools.actions", parameters); assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState()); WorkItem workItem = handler.getWorkItem(); assertNotNull(workItem); assertEquals(WorkItem.PENDING, workItem.getState()); execContent("testAbortWorkItem.in.1", Long.toString(workItem.getId())); assertEquals(WorkItem.ABORTED, workItem.getState());
parameters ); assertEquals( ProcessInstance.STATE_ACTIVE, processInstance.getState() ); WorkItem workItem = handler.getWorkItem(); assertNotNull( workItem ); assertEquals( "John Doe", workItem.getParameter( "ActorId" ) ); assertEquals( "John Doe", workItem.getParameter( "Content" ) ); assertEquals( "John Doe", workItem.getParameter( "Comment" ) ); processInstance.getState() ); parameters ); assertEquals( ProcessInstance.STATE_ACTIVE, processInstance.getState() ); workItem = handler.getWorkItem(); assertNotNull( workItem ); processInstance.getState() ); assertEquals( "SomeOtherString", processInstance.getVariable( "MyObject" ) ); assertEquals( 15, processInstance.getVariable( "Number" ) );
@Test public void testServiceTaskWithMvelTransformation() throws Exception { KieBase kbase = createKnowledgeBaseWithoutDumper("BPMN2-ServiceProcessWithMvelTransformation.bpmn2"); ksession = createKnowledgeSession(kbase); ksession.getWorkItemManager().registerWorkItemHandler("Service Task", new ServiceTaskHandler()); Map<String, Object> params = new HashMap<String, Object>(); params.put("s", "JoHn"); WorkflowProcessInstance processInstance = (WorkflowProcessInstance) ksession .startProcess("ServiceProcess", params); assertProcessInstanceFinished(processInstance, ksession); assertEquals("hello john!", processInstance.getVariable("s")); }
assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState()); Collection<NodeInstance> nodeInstances = processInstance.getNodeInstances(); assertEquals(1, nodeInstances.size()); StateNodeInstance stateInstance = (StateNodeInstance) nodeInstances.iterator().next(); assertEquals("StateA", stateInstance.getNodeName()); processInstance.signalEvent("signal", "toB"); nodeInstances = processInstance.getNodeInstances(); assertEquals(1, nodeInstances.size()); stateInstance = (StateNodeInstance) nodeInstances.iterator().next(); processInstance.signalEvent("signal", "StateA"); nodeInstances = processInstance.getNodeInstances(); assertEquals(1, nodeInstances.size()); stateInstance = (StateNodeInstance) nodeInstances.iterator().next(); assertEquals("StateA", stateInstance.getNodeName()); processInstance.signalEvent("signal", "toC"); nodeInstances = processInstance.getNodeInstances(); assertEquals(1, nodeInstances.size()); stateInstance = (StateNodeInstance) nodeInstances.iterator().next(); assertEquals("StateC", stateInstance.getNodeName()); processInstance.signalEvent("signal", "Invalid"); nodeInstances = processInstance.getNodeInstances(); assertEquals(1, nodeInstances.size()); stateInstance = (StateNodeInstance) nodeInstances.iterator().next(); assertEquals("StateC", stateInstance.getNodeName());
ksession.getWorkItemManager().registerWorkItemHandler( "Human Task", handler ); Map<String, Object> parameters = new HashMap<String, Object>(); parameters ); assertEquals( ProcessInstance.STATE_ACTIVE, processInstance.getState() ); WorkItem workItem = handler.getWorkItem(); assertNotNull( workItem ); workItem.getState() ); Long.toString( workItem.getId() ) ); workItem.getState() );