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;
}