/* * Copyright 2015 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.kie.server.integrationtests.router; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.junit.BeforeClass; import org.junit.Test; import org.kie.api.KieServices; import org.kie.server.api.model.KieContainerResource; import org.kie.server.api.model.KieContainerResourceList; import org.kie.server.api.model.ReleaseId; import org.kie.server.api.model.ServiceResponse; import org.kie.server.api.model.definition.QueryDefinition; import org.kie.server.api.model.definition.QueryFilterSpec; import org.kie.server.api.model.instance.ProcessInstance; import org.kie.server.api.model.instance.TaskSummary; import org.kie.server.api.util.QueryFilterSpecBuilder; import org.kie.server.client.QueryServicesClient; import org.kie.server.integrationtests.shared.KieServerAssert; import org.kie.server.integrationtests.shared.KieServerDeployer; import static org.junit.Assert.*; public class KieServerRouterJbpmIntegrationTest extends KieServerRouterBaseIntegrationTest { private static ReleaseId releaseId = new ReleaseId("org.kie.server.testing", "definition-project", "1.0.0.Final"); protected static final String CONTAINER_ALIAS = "project"; @BeforeClass public static void buildAndDeployArtifacts() { KieServerDeployer.buildAndDeployCommonMavenParent(); KieServerDeployer.buildAndDeployMavenProject(ClassLoader.class.getResource("/kjars-sources/definition-project").getFile()); kieContainer = KieServices.Factory.get().newKieContainer(releaseId); createContainer(CONTAINER_ID, releaseId, CONTAINER_ALIAS); } @Override protected void addExtraCustomClasses(Map<String, Class<?>> extraClasses) throws Exception { extraClasses.put(PERSON_CLASS_NAME, Class.forName(PERSON_CLASS_NAME, true, kieContainer.getClassLoader())); } @Test public void testStartProcessWithContainerAlias() throws Exception { Object person = createPersonInstance(USER_JOHN); Map<String, Object> parameters = new HashMap<String, Object>(); parameters.put("test", USER_MARY); parameters.put("number", new Integer(12345)); List<Object> list = new ArrayList<Object>(); list.add("item"); parameters.put("list", list); parameters.put("person", person); Long processInstanceIdV1 = processClient.startProcess(CONTAINER_ALIAS, PROCESS_ID_EVALUATION, parameters); assertNotNull(processInstanceIdV1); assertTrue(processInstanceIdV1.longValue() > 0); ProcessInstance processInstance = processClient.getProcessInstance(CONTAINER_ALIAS, processInstanceIdV1); assertNotNull(processInstance); assertEquals(CONTAINER_ID, processInstance.getContainerId()); List<TaskSummary> tasks = taskClient.findTasksAssignedAsPotentialOwner(USER_YODA, 0, 10); assertEquals(1, tasks.size()); ServiceResponse<KieContainerResourceList> containersResponse = client.listContainers(); KieServerAssert.assertSuccess(containersResponse); List<KieContainerResource> containerResources = containersResponse.getResult().getContainers(); assertEquals(1, containerResources.size()); } @Test public void testStartProcessWithContainerId() throws Exception { Object person = createPersonInstance(USER_JOHN); Map<String, Object> parameters = new HashMap<String, Object>(); parameters.put("test", USER_MARY); parameters.put("number", new Integer(12345)); List<Object> list = new ArrayList<Object>(); list.add("item"); parameters.put("list", list); parameters.put("person", person); Long processInstanceIdV1 = processClient.startProcess(CONTAINER_ID, PROCESS_ID_EVALUATION, parameters); assertNotNull(processInstanceIdV1); assertTrue(processInstanceIdV1.longValue() > 0); ProcessInstance processInstance = processClient.getProcessInstance(CONTAINER_ID, processInstanceIdV1); assertNotNull(processInstance); assertEquals(CONTAINER_ID, processInstance.getContainerId()); List<TaskSummary> tasks = taskClient.findTasksAssignedAsPotentialOwner(USER_YODA, 0, 10); assertEquals(1, tasks.size()); processClient.abortProcessInstance(CONTAINER_ID, processInstanceIdV1); } @Test public void testStartProcessAndQueryViaAdvancedQueries() throws Exception { QueryDefinition query = new QueryDefinition(); query.setName("allProcessInstances"); query.setSource(System.getProperty("org.kie.server.persistence.ds", "jdbc/jbpm-ds")); query.setExpression("select * from ProcessInstanceLog where status = 1"); query.setTarget("PROCESS"); queryClient.registerQuery(query); try { Object person = createPersonInstance(USER_JOHN); Map<String, Object> parameters = new HashMap<String, Object>(); parameters.put("test", USER_MARY); parameters.put("number", new Integer(12345)); List<Object> list = new ArrayList<Object>(); list.add("item"); parameters.put("list", list); parameters.put("person", person); Long processInstanceIdV1 = processClient.startProcess(CONTAINER_ID, PROCESS_ID_EVALUATION, parameters); assertNotNull(processInstanceIdV1); assertTrue(processInstanceIdV1.longValue() > 0); List<ProcessInstance> instances = queryClient.query(query.getName(), QueryServicesClient.QUERY_MAP_PI, 0, 10, ProcessInstance.class); assertNotNull(instances); assertEquals(1, instances.size()); queryClient.replaceQuery(query); QueryFilterSpec filterSpec = new QueryFilterSpecBuilder() .greaterThan("processinstanceid", 0) .get(); instances = queryClient.query(query.getName(), QueryServicesClient.QUERY_MAP_PI, filterSpec, 0, 10, ProcessInstance.class); assertNotNull(instances); assertEquals(1, instances.size()); processClient.abortProcessInstance(CONTAINER_ID, processInstanceIdV1); } catch (Exception e){ e.printStackTrace(); fail(e.getMessage()); } finally { queryClient.unregisterQuery(query.getName()); } } @Test public void testStartProcessAndQueryViaAdvancedQueriesRawContent() throws Exception { QueryDefinition query = new QueryDefinition(); query.setName("allProcessInstances"); query.setSource(System.getProperty("org.kie.server.persistence.ds", "jdbc/jbpm-ds")); query.setExpression("select * from ProcessInstanceLog where status = 1"); query.setTarget("PROCESS"); queryClient.registerQuery(query); try { Object person = createPersonInstance(USER_JOHN); Map<String, Object> parameters = new HashMap<String, Object>(); parameters.put("test", USER_MARY); parameters.put("number", new Integer(12345)); List<Object> list = new ArrayList<Object>(); list.add("item"); parameters.put("list", list); parameters.put("person", person); Long processInstanceIdV1 = processClient.startProcess(CONTAINER_ID, PROCESS_ID_EVALUATION, parameters); assertNotNull(processInstanceIdV1); assertTrue(processInstanceIdV1.longValue() > 0); List<List> instances = queryClient.query(query.getName(), QueryServicesClient.QUERY_MAP_RAW, 0, 10, List.class); assertNotNull(instances); assertEquals(1, instances.size()); for (List row : instances) { assertEquals(16, row.size()); } processClient.abortProcessInstance(CONTAINER_ID, processInstanceIdV1); } catch (Exception e){ e.printStackTrace(); fail(e.getMessage()); } finally { queryClient.unregisterQuery(query.getName()); } } }