PageRenderTime 24ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 0ms

/kie-server-parent/kie-server-tests/kie-server-integ-tests-router/src/test/java/org/kie/server/integrationtests/router/KieServerRouterJbpmIntegrationTest.java

https://github.com/etirelli/droolsjbpm-integration
Java | 271 lines | 196 code | 61 blank | 14 comment | 1 complexity | adb3c3a3cc57cc98a45da42a76fdb6de MD5 | raw file
  1. /*
  2. * Copyright 2015 Red Hat, Inc. and/or its affiliates.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. *
  7. * http://www.apache.org/licenses/LICENSE-2.0
  8. *
  9. * Unless required by applicable law or agreed to in writing, software
  10. * distributed under the License is distributed on an "AS IS" BASIS,
  11. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. * See the License for the specific language governing permissions and
  13. * limitations under the License.
  14. */
  15. package org.kie.server.integrationtests.router;
  16. import java.util.ArrayList;
  17. import java.util.Calendar;
  18. import java.util.HashMap;
  19. import java.util.List;
  20. import java.util.Map;
  21. import java.util.UUID;
  22. import org.junit.BeforeClass;
  23. import org.junit.Test;
  24. import org.kie.api.KieServices;
  25. import org.kie.internal.executor.api.STATUS;
  26. import org.kie.server.api.model.KieContainerResource;
  27. import org.kie.server.api.model.KieContainerResourceList;
  28. import org.kie.server.api.model.ReleaseId;
  29. import org.kie.server.api.model.ServiceResponse;
  30. import org.kie.server.api.model.definition.QueryDefinition;
  31. import org.kie.server.api.model.definition.QueryFilterSpec;
  32. import org.kie.server.api.model.instance.JobRequestInstance;
  33. import org.kie.server.api.model.instance.ProcessInstance;
  34. import org.kie.server.api.model.instance.RequestInfoInstance;
  35. import org.kie.server.api.model.instance.TaskSummary;
  36. import org.kie.server.api.util.QueryFilterSpecBuilder;
  37. import org.kie.server.client.QueryServicesClient;
  38. import org.kie.server.integrationtests.shared.KieServerAssert;
  39. import org.kie.server.integrationtests.shared.KieServerDeployer;
  40. import static org.junit.Assert.*;
  41. public class KieServerRouterJbpmIntegrationTest extends KieServerRouterBaseIntegrationTest {
  42. private static ReleaseId releaseId = new ReleaseId("org.kie.server.testing", "definition-project",
  43. "1.0.0.Final");
  44. protected static final String CONTAINER_ALIAS = "project";
  45. protected static final String BUSINESS_KEY = "test key";
  46. protected static final String PRINT_OUT_COMMAND = "org.jbpm.executor.commands.PrintOutCommand";
  47. @BeforeClass
  48. public static void buildAndDeployArtifacts() {
  49. KieServerDeployer.buildAndDeployCommonMavenParent();
  50. KieServerDeployer.buildAndDeployMavenProject(ClassLoader.class.getResource("/kjars-sources/definition-project").getFile());
  51. kieContainer = KieServices.Factory.get().newKieContainer(releaseId);
  52. createContainer(CONTAINER_ID, releaseId, CONTAINER_ALIAS);
  53. }
  54. @Override
  55. protected void addExtraCustomClasses(Map<String, Class<?>> extraClasses) throws Exception {
  56. extraClasses.put(PERSON_CLASS_NAME, Class.forName(PERSON_CLASS_NAME, true, kieContainer.getClassLoader()));
  57. }
  58. @Test
  59. public void testStartProcessWithContainerAlias() throws Exception {
  60. Object person = createPersonInstance(USER_JOHN);
  61. Map<String, Object> parameters = new HashMap<String, Object>();
  62. parameters.put("test", USER_MARY);
  63. parameters.put("number", new Integer(12345));
  64. List<Object> list = new ArrayList<Object>();
  65. list.add("item");
  66. parameters.put("list", list);
  67. parameters.put("person", person);
  68. Long processInstanceIdV1 = processClient.startProcess(CONTAINER_ALIAS, PROCESS_ID_EVALUATION, parameters);
  69. assertNotNull(processInstanceIdV1);
  70. assertTrue(processInstanceIdV1.longValue() > 0);
  71. ProcessInstance processInstance = processClient.getProcessInstance(CONTAINER_ALIAS, processInstanceIdV1);
  72. assertNotNull(processInstance);
  73. assertEquals(CONTAINER_ID, processInstance.getContainerId());
  74. List<TaskSummary> tasks = taskClient.findTasksAssignedAsPotentialOwner(USER_YODA, 0, 10);
  75. assertEquals(1, tasks.size());
  76. ServiceResponse<KieContainerResourceList> containersResponse = client.listContainers();
  77. KieServerAssert.assertSuccess(containersResponse);
  78. List<KieContainerResource> containerResources = containersResponse.getResult().getContainers();
  79. assertEquals(1, containerResources.size());
  80. }
  81. @Test
  82. public void testStartProcessWithContainerId() throws Exception {
  83. Object person = createPersonInstance(USER_JOHN);
  84. Map<String, Object> parameters = new HashMap<String, Object>();
  85. parameters.put("test", USER_MARY);
  86. parameters.put("number", new Integer(12345));
  87. List<Object> list = new ArrayList<Object>();
  88. list.add("item");
  89. parameters.put("list", list);
  90. parameters.put("person", person);
  91. Long processInstanceIdV1 = processClient.startProcess(CONTAINER_ID, PROCESS_ID_EVALUATION, parameters);
  92. assertNotNull(processInstanceIdV1);
  93. assertTrue(processInstanceIdV1.longValue() > 0);
  94. ProcessInstance processInstance = processClient.getProcessInstance(CONTAINER_ID, processInstanceIdV1);
  95. assertNotNull(processInstance);
  96. assertEquals(CONTAINER_ID, processInstance.getContainerId());
  97. List<TaskSummary> tasks = taskClient.findTasksAssignedAsPotentialOwner(USER_YODA, 0, 10);
  98. assertEquals(1, tasks.size());
  99. processClient.abortProcessInstance(CONTAINER_ID, processInstanceIdV1);
  100. }
  101. @Test
  102. public void testStartProcessAndQueryViaAdvancedQueries() throws Exception {
  103. QueryDefinition query = new QueryDefinition();
  104. query.setName("allProcessInstances");
  105. query.setSource(System.getProperty("org.kie.server.persistence.ds", "jdbc/jbpm-ds"));
  106. query.setExpression("select * from ProcessInstanceLog where status = 1");
  107. query.setTarget("PROCESS");
  108. queryClient.registerQuery(query);
  109. try {
  110. Object person = createPersonInstance(USER_JOHN);
  111. Map<String, Object> parameters = new HashMap<String, Object>();
  112. parameters.put("test", USER_MARY);
  113. parameters.put("number", new Integer(12345));
  114. List<Object> list = new ArrayList<Object>();
  115. list.add("item");
  116. parameters.put("list", list);
  117. parameters.put("person", person);
  118. Long processInstanceIdV1 = processClient.startProcess(CONTAINER_ID, PROCESS_ID_EVALUATION, parameters);
  119. assertNotNull(processInstanceIdV1);
  120. assertTrue(processInstanceIdV1.longValue() > 0);
  121. List<ProcessInstance> instances = queryClient.query(query.getName(), QueryServicesClient.QUERY_MAP_PI, 0, 10, ProcessInstance.class);
  122. assertNotNull(instances);
  123. assertEquals(1, instances.size());
  124. queryClient.replaceQuery(query);
  125. QueryFilterSpec filterSpec = new QueryFilterSpecBuilder()
  126. .greaterThan("processinstanceid", 0)
  127. .get();
  128. instances = queryClient.query(query.getName(), QueryServicesClient.QUERY_MAP_PI, filterSpec, 0, 10, ProcessInstance.class);
  129. assertNotNull(instances);
  130. assertEquals(1, instances.size());
  131. processClient.abortProcessInstance(CONTAINER_ID, processInstanceIdV1);
  132. } catch (Exception e){
  133. e.printStackTrace();
  134. fail(e.getMessage());
  135. } finally {
  136. queryClient.unregisterQuery(query.getName());
  137. }
  138. }
  139. @Test
  140. public void testStartProcessAndQueryViaAdvancedQueriesRawContent() throws Exception {
  141. QueryDefinition query = new QueryDefinition();
  142. query.setName("allProcessInstances");
  143. query.setSource(System.getProperty("org.kie.server.persistence.ds", "jdbc/jbpm-ds"));
  144. query.setExpression("select * from ProcessInstanceLog where status = 1");
  145. query.setTarget("PROCESS");
  146. queryClient.registerQuery(query);
  147. try {
  148. Object person = createPersonInstance(USER_JOHN);
  149. Map<String, Object> parameters = new HashMap<String, Object>();
  150. parameters.put("test", USER_MARY);
  151. parameters.put("number", new Integer(12345));
  152. List<Object> list = new ArrayList<Object>();
  153. list.add("item");
  154. parameters.put("list", list);
  155. parameters.put("person", person);
  156. Long processInstanceIdV1 = processClient.startProcess(CONTAINER_ID, PROCESS_ID_EVALUATION, parameters);
  157. assertNotNull(processInstanceIdV1);
  158. assertTrue(processInstanceIdV1.longValue() > 0);
  159. List<List> instances = queryClient.query(query.getName(), QueryServicesClient.QUERY_MAP_RAW, 0, 10, List.class);
  160. assertNotNull(instances);
  161. assertEquals(1, instances.size());
  162. for (List row : instances) {
  163. assertEquals(18, row.size());
  164. }
  165. processClient.abortProcessInstance(CONTAINER_ID, processInstanceIdV1);
  166. } catch (Exception e){
  167. e.printStackTrace();
  168. fail(e.getMessage());
  169. } finally {
  170. queryClient.unregisterQuery(query.getName());
  171. }
  172. }
  173. @Test
  174. public void testScheduleViewAndCancelJob() {
  175. Calendar tomorrow = Calendar.getInstance();
  176. tomorrow.add(Calendar.DATE, 1);
  177. Map<String, Object> data = new HashMap<>();
  178. data.put("businessKey", BUSINESS_KEY);
  179. JobRequestInstance jobRequestInstance = new JobRequestInstance();
  180. jobRequestInstance.setCommand(PRINT_OUT_COMMAND);
  181. jobRequestInstance.setData(data);
  182. jobRequestInstance.setScheduledDate(tomorrow.getTime());
  183. Long jobId = jobServicesClient.scheduleRequest(CONTAINER_ID, jobRequestInstance);
  184. assertNotNull(jobId);
  185. assertTrue( jobId.longValue() > 0);
  186. RequestInfoInstance jobRequest = jobServicesClient.getRequestById(CONTAINER_ID, jobId, false, false);
  187. RequestInfoInstance expected = createExpectedRequestInfoInstance(jobId, STATUS.QUEUED);
  188. assertRequestInfoInstance(expected, jobRequest);
  189. assertNotNull(jobRequest.getScheduledDate());
  190. jobServicesClient.cancelRequest(CONTAINER_ID, jobId);
  191. jobRequest = jobServicesClient.getRequestById(CONTAINER_ID, jobId, false, false);
  192. expected.setStatus(STATUS.CANCELLED.toString());
  193. assertRequestInfoInstance(expected, jobRequest);
  194. }
  195. private void assertRequestInfoInstance(RequestInfoInstance expected, RequestInfoInstance actual) {
  196. assertNotNull(actual);
  197. assertEquals(expected.getId(), actual.getId());
  198. assertEquals(expected.getBusinessKey(), actual.getBusinessKey());
  199. assertEquals(expected.getStatus(), actual.getStatus());
  200. assertEquals(expected.getCommandName(), actual.getCommandName());
  201. }
  202. private RequestInfoInstance createExpectedRequestInfoInstance(Long jobId, STATUS expected) {
  203. return RequestInfoInstance.builder()
  204. .id(jobId)
  205. .businessKey(BUSINESS_KEY)
  206. .status(expected.toString())
  207. .command(PRINT_OUT_COMMAND)
  208. .build();
  209. }
  210. }