private RuleFlowProcessInstance buildWorkflow()

in jbpm/process-serialization-protobuf/src/main/java/org/jbpm/flow/serialization/impl/ProtobufProcessInstanceReader.java [95:188]


    private RuleFlowProcessInstance buildWorkflow(KogitoProcessInstanceProtobuf.ProcessInstance processInstanceProtobuf) {

        RuleFlowProcessInstance processInstance = ruleFlowProcessInstance;
        processInstance.setProcessId(processInstanceProtobuf.getProcessId());
        processInstance.setProcessVersion(processInstanceProtobuf.getProcessVersion());

        processInstance.setInternalProcess(((AbstractProcess<?>) context.get(MarshallerContextName.MARSHALLER_PROCESS)).get());

        processInstance.setId(processInstanceProtobuf.getId());
        processInstance.setState(processInstanceProtobuf.getState());
        processInstance.setSignalCompletion(processInstanceProtobuf.getSignalCompletion());

        if (processInstanceProtobuf.hasStartDate()) {
            processInstance.setStartDate(new Date(processInstanceProtobuf.getStartDate()));
        }

        if (processInstanceProtobuf.hasDescription()) {
            processInstance.setDescription(processInstanceProtobuf.getDescription());
        }

        if (processInstanceProtobuf.hasDeploymentId()) {
            processInstance.setDeploymentId(processInstanceProtobuf.getDeploymentId());
        }

        for (String completedNodeId : processInstanceProtobuf.getCompletedNodeIdsList()) {
            processInstance.addCompletedNodeId(completedNodeId);
        }

        if (processInstanceProtobuf.hasBusinessKey()) {
            processInstance.setCorrelationKey(processInstanceProtobuf.getBusinessKey());
        }

        if (processInstanceProtobuf.hasSla()) {
            SLAContext slaContext = processInstanceProtobuf.getSla();
            if (slaContext.getSlaDueDate() > 0) {
                processInstance.internalSetSlaDueDate(new Date(slaContext.getSlaDueDate()));
            }

            if (slaContext.hasSlaTimerId()) {
                processInstance.internalSetSlaTimerId(slaContext.getSlaTimerId());
            }
            if (slaContext.hasSlaCompliance()) {
                processInstance.internalSetSlaCompliance(slaContext.getSlaCompliance());
            }
        }

        if (processInstanceProtobuf.hasCancelTimerId()) {
            processInstance.internalSetCancelTimerId(processInstanceProtobuf.getCancelTimerId());
        }

        if (processInstanceProtobuf.hasParentProcessInstanceId()) {
            processInstance.setParentProcessInstanceId(processInstanceProtobuf.getParentProcessInstanceId());
        }
        if (processInstanceProtobuf.hasRootProcessInstanceId()) {
            processInstance.setRootProcessInstanceId(processInstanceProtobuf.getRootProcessInstanceId());
        }
        if (processInstanceProtobuf.hasRootProcessId()) {
            processInstance.setRootProcessId(processInstanceProtobuf.getRootProcessId());
        }

        if (processInstanceProtobuf.hasErrorNodeId()) {
            processInstance.internalSetErrorNodeId(processInstanceProtobuf.getErrorNodeId());
        }

        if (processInstanceProtobuf.hasErrorNodeInstanceId()) {
            processInstance.internalSetErrorNodeInstanceId(processInstanceProtobuf.getErrorNodeInstanceId());
        }

        if (processInstanceProtobuf.hasErrorMessage()) {
            processInstance.internalSetErrorMessage(processInstanceProtobuf.getErrorMessage());
        }

        if (processInstanceProtobuf.hasReferenceId()) {
            processInstance.setReferenceId(processInstanceProtobuf.getReferenceId());
        }

        if (processInstanceProtobuf.getSwimlaneContextCount() > 0) {
            SwimlaneContextInstance swimlaneContextInstance = (SwimlaneContextInstance) processInstance.getContextInstance(SwimlaneContext.SWIMLANE_SCOPE);
            for (KogitoTypesProtobuf.SwimlaneContext _swimlane : processInstanceProtobuf.getSwimlaneContextList()) {
                swimlaneContextInstance.setActorId(_swimlane.getSwimlane(), _swimlane.getActorId());
            }
        }

        if (processInstanceProtobuf.getHeadersList() != null) {
            processInstance.setHeaders(processInstanceProtobuf.getHeadersList().stream().collect(Collectors.toMap(HeaderEntry::getKey, HeaderEntry::getValueList)));
        }

        WorkflowContext workflowContext = processInstanceProtobuf.getContext();
        buildWorkflowContext(processInstance, workflowContext);

        KogitoProcessRuntime runtime = ((AbstractProcess<?>) context.get(MarshallerContextName.MARSHALLER_PROCESS)).getProcessRuntime();
        Arrays.stream(listeners).forEach(e -> e.afterUnmarshallProcess(runtime, processInstance));
        return processInstance;
    }