protected void registerQueriesWithRetry(String serverTemplateId, String serverInstanceId, Set<QueryDefinition> queryDefinitions) throws Exception{ long waitLimit = 5 * 60 * 1000; // default 5 min long elapsed = 0; QueryServicesClient queryClient = kieServerIntegration.getAdminServerClient(serverTemplateId).getServicesClient(QueryServicesClient.class); while (elapsed < waitLimit) { try { Iterator<QueryDefinition> definitionIt = queryDefinitions.iterator(); while (definitionIt.hasNext()) { QueryDefinition definition = definitionIt.next(); queryClient.replaceQuery(definition); LOGGER.info("Query definition {} (type {}) successfully registered on kie server '{}'", definition.getName(), definition.getTarget(), serverInstanceId); // remove successfully stored definition to avoid duplicated reads in case of intermediate error definitionIt.remove(); } event.fire(new KieServerDataSetRegistered(serverInstanceId, serverTemplateId)); return; } catch (KieServicesException | KieServerHttpRequestException e) { // unable to register, might still be booting Thread.sleep(500); elapsed += 500; // get admin client with forced check of endpoints as they might have been banned (marked as failed) queryClient = kieServerIntegration.getAdminServerClientCheckEndpoints(serverTemplateId).getServicesClient(QueryServicesClient.class); LOGGER.debug("Cannot reach KIE Server, elapsed time while waiting '{}', max time '{}' error {}", elapsed, waitLimit, e.getMessage()); } } }
private void assertKjarOneQuery(QueryDefinition registeredQuery) { Assertions.assertThat(registeredQuery).isNotNull(); Assertions.assertThat(registeredQuery.getName()).isEqualTo(KJAR_ONE_REGISTERED_QUERY); Assertions.assertThat(registeredQuery.getSource()).isEqualTo("${org.kie.server.persistence.ds}"); Assertions.assertThat(registeredQuery.getExpression()).isEqualTo("select * from ProcessInstanceLog"); Assertions.assertThat(registeredQuery.getTarget()).isEqualTo("PROCESS"); }
private void assertKjarOneUpdatedQuery(QueryDefinition registeredQuery) { Assertions.assertThat(registeredQuery).isNotNull(); Assertions.assertThat(registeredQuery.getName()).isEqualTo(KJAR_ONE_UPDATED_FIRST_REGISTERED_QUERY); Assertions.assertThat(registeredQuery.getSource()).isEqualTo("${org.kie.server.persistence.ds}"); Assertions.assertThat(registeredQuery.getExpression()).isEqualTo("select * from NodeInstanceLog"); Assertions.assertThat(registeredQuery.getTarget()).isEqualTo("CUSTOM"); }
private void assertKjarWithDuplicateQueriesResultQuery(QueryDefinition registeredQuery) { Assertions.assertThat(registeredQuery).isNotNull(); Assertions.assertThat(registeredQuery.getName()).isEqualTo(KJAR_DUPLICATE_QUERIES_REGISTERED_QUERY); Assertions.assertThat(registeredQuery.getSource()).isEqualTo("${org.kie.server.persistence.ds}"); Assertions.assertThat(registeredQuery.getExpression()).isEqualTo("select * from AuditTaskImpl where status = 'InProgress'"); Assertions.assertThat(registeredQuery.getTarget()).isEqualTo("CUSTOM"); }
private void assertKjarTwoQuery(QueryDefinition registeredQuery) { Assertions.assertThat(registeredQuery).isNotNull(); Assertions.assertThat(registeredQuery.getName()).isEqualTo(KJAR_TWO_REGISTERED_QUERY); Assertions.assertThat(registeredQuery.getSource()).isEqualTo("${org.kie.server.persistence.ds}"); Assertions.assertThat(registeredQuery.getExpression()).isEqualTo("select * from VariableInstanceLog"); Assertions.assertThat(registeredQuery.getTarget()).isEqualTo("CUSTOM"); }
LOGGER.info("Query definition {} (type {}) successfully registered on kie server '{}'", definition.getName(), definition.getTarget(), serverInstanceId);
protected void registerDataSetDefinition(final QueryDefinition queryDefinition, final Consumer<RemoteDataSetDefBuilder> consumer) { RemoteDataSetDefBuilder builder = RemoteDataSetDefBuilder.get() .uuid(queryDefinition.getName()) .name(queryDefinition.getTarget() + "-" + queryDefinition.getName()) .queryTarget(queryDefinition.getTarget()) .dataSource(queryDefinition.getSource()) .dbSQL(queryDefinition.getExpression(), false); consumer.accept(builder); DataSetDef dataSetDef = builder.buildDef(); dataSetDef.setPublic(false); dataSetDef.setProvider(KieServerDataSetProvider.TYPE); dataSetDefRegistry.registerDataSetDef(dataSetDef); LOGGER.info("Data Set registered {}", dataSetDef); } }
protected static SqlQueryDefinition build(KieServerRegistry context, QueryDefinition queryDefinition) { SqlQueryDefinition actualDefinition = new SqlQueryDefinition(queryDefinition.getName(), queryDefinition.getSource()); actualDefinition.setExpression(queryDefinition.getExpression()); actualDefinition.setTarget(org.jbpm.services.api.query.model.QueryDefinition.Target.valueOf(queryDefinition.getTarget())); return actualDefinition; } }
assertEquals(query.getSource(), registeredQuery.getSource()); assertEquals(query.getExpression(), registeredQuery.getExpression()); assertEquals(query.getTarget(), registeredQuery.getTarget()); assertEquals(query.getSource(), registeredQuery.getSource()); assertEquals(query.getExpression(), registeredQuery.getExpression()); assertEquals(query.getTarget(), registeredQuery.getTarget());
assertEquals(query.getSource(), registered.getSource()); assertEquals(query.getExpression(), registered.getExpression()); assertEquals(query.getTarget(), registered.getTarget()); assertNotNull(registered.getColumns()); assertEquals(registered.getColumns().size(), 18); assertEquals(query.getSource(), registeredQuery.getSource()); assertEquals(query.getExpression(), registeredQuery.getExpression()); assertEquals(query.getTarget(), registeredQuery.getTarget()); assertEquals(query.getSource(), registeredQuery.getSource()); assertEquals(query.getExpression(), registeredQuery.getExpression()); assertEquals(query.getTarget(), registeredQuery.getTarget());
@Test public void testQueryDefinitionsFromKjar() throws Exception { String expectedResolvedDS = System.getProperty("org.kie.server.persistence.ds", "jdbc/jbpm-ds"); QueryDefinition registeredQuery = queryClient.getQuery("first-query"); assertNotNull(registeredQuery); assertEquals("first-query", registeredQuery.getName()); assertEquals(expectedResolvedDS, registeredQuery.getSource()); assertEquals("select * from ProcessInstanceLog", registeredQuery.getExpression()); assertEquals("PROCESS", registeredQuery.getTarget()); registeredQuery = queryClient.getQuery("second-query"); assertNotNull(registeredQuery); assertEquals("second-query", registeredQuery.getName()); assertEquals(expectedResolvedDS, registeredQuery.getSource()); assertEquals("select * from NodeInstanceLog", registeredQuery.getExpression()); assertEquals("CUSTOM", registeredQuery.getTarget()); }