public ProcessInstance merge()

in data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/merger/ProcessInstanceStateDataEventMerger.java [41:71]


    public ProcessInstance merge(ProcessInstance pi, ProcessInstanceDataEvent<?> data) {
        ProcessInstanceStateDataEvent event = (ProcessInstanceStateDataEvent) data;
        pi = getOrNew(pi, data, event.getData().getEventDate());
        LOGGER.debug("Value before merging: {}", pi);
        pi.setId(event.getData().getProcessInstanceId());
        pi.setVersion(event.getData().getProcessVersion());
        pi.setProcessId(event.getData().getProcessId());
        pi.setProcessName(event.getData().getProcessName());
        pi.setRootProcessInstanceId(event.getData().getRootProcessInstanceId());
        pi.setRootProcessId(event.getData().getRootProcessId());
        pi.setParentProcessInstanceId(event.getData().getParentInstanceId());
        pi.setRoles(event.getData().getRoles());
        pi.setState(event.getData().getState());
        if (event.getData().getEventType() == null || event.getData().getEventType() == ProcessInstanceStateEventBody.EVENT_TYPE_STARTED) {
            pi.setStart(toZonedDateTime(event.getData().getEventDate()));
            pi.setCreatedBy(event.getData().getEventUser());
        } else if (event.getData().getEventType() == ProcessInstanceStateEventBody.EVENT_TYPE_STARTED) {
            pi.setEnd(toZonedDateTime(event.getData().getEventDate()));
        } else if (event.getData().getEventType() == ProcessInstanceStateEventBody.EVENT_TYPE_RETRIGGERED) {
            pi.setError(null);
        }
        pi.setBusinessKey(event.getData().getBusinessKey());
        pi.setAddons(isNullOrEmpty(event.getKogitoAddons()) ? null : Set.of(event.getKogitoAddons().split(",")));
        pi.setEndpoint(event.getSource() == null ? null : event.getSource().toString());
        pi.setLastUpdate(toZonedDateTime(event.getTime()));
        pi.setDefinition(definitions(event));
        pi.setUpdatedBy(event.getData().getEventUser());
        pi.setSlaDueDate(toZonedDateTime(event.getData().getSlaDueDate()));
        LOGGER.debug("Value after merging: {}", pi);
        return pi;
    }