in jobs-service/jobs-service-internal-api/src/main/java/org/kie/kogito/jobs/service/adapter/ScheduledJobAdapter.java [55:100]
public static ScheduledJob of(JobDetails jobDetails) {
//using headers (the new API approach)
final ProcessPayload payload = Optional.ofNullable(jobDetails.getRecipient())
.map(Recipient::getRecipient)
.filter(HttpRecipient.class::isInstance)
.map(HttpRecipient.class::cast)
.map(httpRecipient -> {
String processInstanceId = httpRecipient.getHeader("processInstanceId");
String rootProcessInstanceId = httpRecipient.getHeader("rootProcessInstanceId");
String processId = httpRecipient.getHeader("processId");
String rootProcessId = httpRecipient.getHeader("rootProcessId");
String nodeInstanceId = httpRecipient.getHeader("nodeInstanceId");
return new ProcessPayload(processInstanceId, rootProcessInstanceId, processId, rootProcessId, nodeInstanceId);
})
.filter(processPayload -> Objects.nonNull(processPayload.processInstanceId))//just to guarantee headers were present
.orElse(new ProcessPayload());
return ScheduledJob.builder()
.job(new JobBuilder()
.id(jobDetails.getId())
.priority(jobDetails.getPriority())
.expirationTime(Optional.ofNullable(jobDetails.getTrigger())
.map(Trigger::hasNextFireTime)
.map(DateUtil::fromDate)
.orElse(null))
.callbackEndpoint(Optional.ofNullable(jobDetails.getRecipient())
.map(Recipient::getRecipient)
.filter(HttpRecipient.class::isInstance)
.map(HttpRecipient.class::cast)
.map(HttpRecipient::getUrl)
.orElse(null))
.repeatLimit(extractRepeatLimit(jobDetails.getTrigger()))
.repeatInterval(extractRepeatInterval(jobDetails.getTrigger()))
.rootProcessId(payload.getRootProcessId())
.rootProcessInstanceId(payload.getRootProcessInstanceId())
.processId(payload.getProcessId())
.processInstanceId(payload.getProcessInstanceId())
.nodeInstanceId(payload.getNodeInstanceId())
.build())
.scheduledId(jobDetails.getScheduledId())
.status(jobDetails.getStatus())
.executionCounter(jobDetails.getExecutionCounter())
.retries(jobDetails.getRetries())
.lastUpdate(jobDetails.getLastUpdate())
.build();
}