Search in sources :

Example 26 with Job

use of org.kie.kogito.jobs.api.Job in project kogito-runtimes by kiegroup.

the class SpringRestJobsService method scheduleProcessInstanceJob.

@Override
public String scheduleProcessInstanceJob(ProcessInstanceJobDescription description) {
    String callback = getCallbackEndpoint(description);
    LOGGER.debug("Job to be scheduled {} with callback URL {}", description, callback);
    final Job job = buildJob(description, callback);
    ResponseEntity<String> result = restTemplate.postForEntity(getJobsServiceUri(), job, String.class);
    if (result.getStatusCode().ordinal() == 200) {
        LOGGER.debug("Creating of the job {} done with status code {} ", job, result.getStatusCode());
    }
    return job.getId();
}
Also used : Job(org.kie.kogito.jobs.api.Job)

Example 27 with Job

use of org.kie.kogito.jobs.api.Job in project kogito-runtimes by kiegroup.

the class VertxJobsService method scheduleProcessInstanceJob.

@Override
public String scheduleProcessInstanceJob(ProcessInstanceJobDescription description) {
    String callback = getCallbackEndpoint(description);
    LOGGER.debug("Job to be scheduled {} with callback URL {}", description, callback);
    final Job job = buildJob(description, callback);
    client.post(JOBS_PATH).sendJson(job, res -> {
        if (res.succeeded() && res.result().statusCode() == 200) {
            LOGGER.debug("Creating of the job {} done with status code {} ", job, res.result().statusCode());
        } else {
            LOGGER.error("Scheduling of job {} failed with response code {}", job, res.result().statusCode(), res.cause());
        }
    });
    return job.getId();
}
Also used : Job(org.kie.kogito.jobs.api.Job)

Example 28 with Job

use of org.kie.kogito.jobs.api.Job in project kogito-runtimes by kiegroup.

the class VertxJobsServiceTest method testScheduleProcessInstanceJob.

@Test
void testScheduleProcessInstanceJob(@Mock HttpRequest<Buffer> request) {
    when(webClient.post(anyString())).thenReturn(request);
    ProcessInstanceJobDescription processInstanceJobDescription = ProcessInstanceJobDescription.of(new TimerJobId(123l), ExactExpirationTime.now(), "processInstanceId", "processId");
    tested.scheduleProcessInstanceJob(processInstanceJobDescription);
    verify(webClient).post("/jobs");
    ArgumentCaptor<Job> jobArgumentCaptor = forClass(Job.class);
    verify(request).sendJson(jobArgumentCaptor.capture(), any(Handler.class));
    Job job = jobArgumentCaptor.getValue();
    assertThat(job.getId()).isEqualTo(processInstanceJobDescription.id());
    assertThat(job.getExpirationTime()).isEqualTo(processInstanceJobDescription.expirationTime().get());
    assertThat(job.getProcessInstanceId()).isEqualTo(processInstanceJobDescription.processInstanceId());
    assertThat(job.getProcessId()).isEqualTo(processInstanceJobDescription.processId());
}
Also used : ProcessInstanceJobDescription(org.kie.kogito.jobs.ProcessInstanceJobDescription) Handler(io.vertx.core.Handler) TimerJobId(org.kie.kogito.jobs.TimerJobId) Job(org.kie.kogito.jobs.api.Job) Test(org.junit.jupiter.api.Test)

Example 29 with Job

use of org.kie.kogito.jobs.api.Job in project kogito-runtimes by kiegroup.

the class JobCloudEventDeserializerTest method deserializeCreateProcessInstanceJobRequestEvent.

@Test
void deserializeCreateProcessInstanceJobRequestEvent() throws Exception {
    JobCloudEvent<?> result = deserializer.deserialize(readFileContent(CREATE_PROCESS_INSTANCE_JOB_REQUEST_EVENT_RESOURCE));
    assertThat(result).isInstanceOf(CreateProcessInstanceJobRequestEvent.class);
    CreateProcessInstanceJobRequestEvent event = (CreateProcessInstanceJobRequestEvent) result;
    assertBaseFields(event);
    assertProcessContextFields(event);
    Job job = event.getData();
    assertThat(job).isNotNull();
    assertThat(job.getId()).isEqualTo(JOB_ID);
    assertThat(job.getExpirationTime()).isEqualTo(EXPIRATION_TIME);
    assertThat(job.getPriority()).isEqualTo(PRIORITY);
    assertThat(job.getCallbackEndpoint()).isEqualTo(CALLBACK_ENDPOINT);
    assertThat(job.getProcessInstanceId()).isEqualTo(PROCESS_INSTANCE_ID);
    assertThat(job.getProcessId()).isEqualTo(PROCESS_ID);
    assertThat(job.getRootProcessInstanceId()).isEqualTo(ROOT_PROCESS_INSTANCE_ID);
    assertThat(job.getRootProcessId()).isEqualTo(ROOT_PROCESS_ID);
    assertThat(job.getNodeInstanceId()).isEqualTo(NODE_INSTANCE_ID);
    assertThat(job.getRepeatInterval()).isEqualTo(REPEAT_INTERVAL);
    assertThat(job.getRepeatLimit()).isEqualTo(REPEAT_LIMIT);
}
Also used : CreateProcessInstanceJobRequestEvent(org.kie.kogito.jobs.api.event.CreateProcessInstanceJobRequestEvent) Job(org.kie.kogito.jobs.api.Job) Test(org.junit.jupiter.api.Test)

Example 30 with Job

use of org.kie.kogito.jobs.api.Job in project kogito-runtimes by kiegroup.

the class JobCloudEventSerializerTest method serializeCreateProcessInstanceJobRequestEvent.

@Test
void serializeCreateProcessInstanceJobRequestEvent() throws Exception {
    CreateProcessInstanceJobRequestEvent event = CreateProcessInstanceJobRequestEvent.builder().id(ID).specVersion(SPEC_VERSION).source(SOURCE).time(TIME).subject(SUBJECT).processInstanceId(PROCESS_INSTANCE_ID).processId(PROCESS_ID).rootProcessInstanceId(ROOT_PROCESS_INSTANCE_ID).rootProcessId(ROOT_PROCESS_ID).kogitoAddons(KOGITO_ADDONS).job(new Job(JOB_ID, EXPIRATION_TIME, SerializationTestConstants.PRIORITY, CALLBACK_ENDPOINT, PROCESS_INSTANCE_ID, ROOT_PROCESS_INSTANCE_ID, PROCESS_ID, ROOT_PROCESS_ID, REPEAT_INTERVAL, REPEAT_LIMIT, NODE_INSTANCE_ID)).build();
    String json = serializer.serialize(event);
    assertThat(json).isNotNull();
    JsonNode jsonNode = OBJECT_MAPPER.readTree(json);
    assertHasTotalFields(jsonNode, 12);
    assertHasFieldWithValue(jsonNode, "type", CREATE_PROCESS_INSTANCE_JOB_REQUEST);
    assertHasBaseFields(jsonNode);
    assertHasProcessContextFields(jsonNode);
    JsonNode dataJsonNode = jsonNode.get("data");
    assertThat(dataJsonNode).isNotNull();
    assertHasTotalFields(dataJsonNode, 11);
    assertHasFieldWithValue(dataJsonNode, "id", JOB_ID);
    assertHasFieldWithValue(dataJsonNode, "expirationTime", EXPIRATION_TIME.toString());
    assertHasFieldWithValue(dataJsonNode, "priority", Integer.toString(PRIORITY));
    assertHasFieldWithValue(dataJsonNode, "callbackEndpoint", CALLBACK_ENDPOINT);
    assertHasFieldWithValue(dataJsonNode, "processInstanceId", PROCESS_INSTANCE_ID);
    assertHasFieldWithValue(dataJsonNode, "rootProcessInstanceId", ROOT_PROCESS_INSTANCE_ID);
    assertHasFieldWithValue(dataJsonNode, "processId", PROCESS_ID);
    assertHasFieldWithValue(dataJsonNode, "rootProcessId", ROOT_PROCESS_ID);
    assertHasFieldWithValue(dataJsonNode, "nodeInstanceId", NODE_INSTANCE_ID);
    assertHasFieldWithValue(dataJsonNode, "repeatInterval", Long.toString(REPEAT_INTERVAL));
    assertHasFieldWithValue(dataJsonNode, "repeatLimit", Integer.toString(REPEAT_LIMIT));
}
Also used : CreateProcessInstanceJobRequestEvent(org.kie.kogito.jobs.api.event.CreateProcessInstanceJobRequestEvent) JsonNode(com.fasterxml.jackson.databind.JsonNode) Job(org.kie.kogito.jobs.api.Job) Test(org.junit.jupiter.api.Test)

Aggregations

Job (org.kie.kogito.jobs.api.Job)30 Test (org.junit.jupiter.api.Test)23 ScheduledJob (org.kie.kogito.jobs.service.model.ScheduledJob)13 CreateProcessInstanceJobRequestEvent (org.kie.kogito.jobs.api.event.CreateProcessInstanceJobRequestEvent)8 ZonedDateTime (java.time.ZonedDateTime)4 JobDetails (org.kie.kogito.jobs.service.model.job.JobDetails)3 Timeout (org.junit.jupiter.api.Timeout)2 ProcessInstanceJobDescription (org.kie.kogito.jobs.ProcessInstanceJobDescription)2 TimerJobId (org.kie.kogito.jobs.TimerJobId)2 JobServiceException (org.kie.kogito.jobs.service.exception.JobServiceException)2 JsonNode (com.fasterxml.jackson.databind.JsonNode)1 CloudEvent (io.cloudevents.CloudEvent)1 CloudEventData (io.cloudevents.CloudEventData)1 AsyncResult (io.vertx.core.AsyncResult)1 Handler (io.vertx.core.Handler)1 Buffer (io.vertx.core.buffer.Buffer)1 HttpResponse (io.vertx.ext.web.client.HttpResponse)1 IOException (java.io.IOException)1 URI (java.net.URI)1 JobCallbackResourceDef.buildCallbackPatternJob (org.kie.kogito.jobs.api.JobCallbackResourceDef.buildCallbackPatternJob)1