From cf4c6d2144adfda50554633ec5887d3727e8bb03 Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Fri, 20 Sep 2024 09:44:37 -0500 Subject: [PATCH] CE-1727 - migrating from updatedFrontendStepList to processMetaDataAdjustment - so one can update fields in a process (original intent for inline PVS's) --- .../actions/processes/RunProcessAction.java | 12 ++++---- .../model/actions/processes/ProcessState.java | 27 ++++++++--------- .../processes/RunBackendStepOutput.java | 20 ++++++++----- .../actions/processes/RunProcessOutput.java | 30 +++++++++++++++++-- .../StreamedETLExecuteStep.java | 12 ++++---- .../StreamedETLPreviewStep.java | 9 +++--- .../StreamedETLValidateStep.java | 9 +++--- .../javalin/QJavalinProcessHandler.java | 8 +++++ 8 files changed, 82 insertions(+), 45 deletions(-) diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/processes/RunProcessAction.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/processes/RunProcessAction.java index 03ee26aa..704e2313 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/processes/RunProcessAction.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/actions/processes/RunProcessAction.java @@ -335,12 +335,12 @@ public class RunProcessAction /////////////////////////////////////////////////// runProcessInput.seedFromProcessState(optionalProcessState.get()); - /////////////////////////////////////////////////////////////////////////////////////////////////// - // if we're restoring an old state, we can discard a previously stored updatedFrontendStepList - // - // it is only needed on the transitional edge from a backend-step to a frontend step, but not // - // in the other directly // - /////////////////////////////////////////////////////////////////////////////////////////////////// - optionalProcessState.get().setUpdatedFrontendStepList(null); + ///////////////////////////////////////////////////////////////////////////////////////////////////// + // if we're restoring an old state, we can discard a previously stored processMetaDataAdjustment - // + // it is only needed on the transitional edge from a backend-step to a frontend step, but not // + // in the other directly // + ///////////////////////////////////////////////////////////////////////////////////////////////////// + optionalProcessState.get().setProcessMetaDataAdjustment(null); /////////////////////////////////////////////////////////////////////////// // if there were values from the caller, put those (back) in the request // diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/processes/ProcessState.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/processes/ProcessState.java index c418bd07..ad7a0827 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/processes/ProcessState.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/processes/ProcessState.java @@ -29,7 +29,6 @@ import java.util.List; import java.util.Map; import java.util.Optional; import com.kingsrook.qqq.backend.core.model.data.QRecord; -import com.kingsrook.qqq.backend.core.model.metadata.processes.QFrontendStepMetaData; /******************************************************************************* @@ -42,10 +41,7 @@ public class ProcessState implements Serializable private List stepList = new ArrayList<>(); private Optional nextStepName = Optional.empty(); - ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - // maybe, remove this altogether - just let the frontend compute & send if needed... but how does it know last version...? // - ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - private List updatedFrontendStepList = null; + private ProcessMetaDataAdjustment processMetaDataAdjustment = null; @@ -148,33 +144,36 @@ public class ProcessState implements Serializable + + /******************************************************************************* - ** Getter for updatedFrontendStepList + ** Getter for processMetaDataAdjustment *******************************************************************************/ - public List getUpdatedFrontendStepList() + public ProcessMetaDataAdjustment getProcessMetaDataAdjustment() { - return (this.updatedFrontendStepList); + return (this.processMetaDataAdjustment); } /******************************************************************************* - ** Setter for updatedFrontendStepList + ** Setter for processMetaDataAdjustment *******************************************************************************/ - public void setUpdatedFrontendStepList(List updatedFrontendStepList) + public void setProcessMetaDataAdjustment(ProcessMetaDataAdjustment processMetaDataAdjustment) { - this.updatedFrontendStepList = updatedFrontendStepList; + this.processMetaDataAdjustment = processMetaDataAdjustment; } /******************************************************************************* - ** Fluent setter for updatedFrontendStepList + ** Fluent setter for processMetaDataAdjustment *******************************************************************************/ - public ProcessState withUpdatedFrontendStepList(List updatedFrontendStepList) + public ProcessState withProcessMetaDataAdjustment(ProcessMetaDataAdjustment processMetaDataAdjustment) { - this.updatedFrontendStepList = updatedFrontendStepList; + this.processMetaDataAdjustment = processMetaDataAdjustment; return (this); } + } diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/processes/RunBackendStepOutput.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/processes/RunBackendStepOutput.java index 4754fcaa..7c89b98a 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/processes/RunBackendStepOutput.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/processes/RunBackendStepOutput.java @@ -374,7 +374,13 @@ public class RunBackendStepOutput extends AbstractActionOutput implements Serial .map(step -> (QFrontendStepMetaData) step) .toList()); - setUpdatedFrontendStepList(updatedFrontendStepList); + ProcessMetaDataAdjustment processMetaDataAdjustment = getProcessMetaDataAdjustment(); + if(processMetaDataAdjustment == null) + { + processMetaDataAdjustment = new ProcessMetaDataAdjustment(); + } + processMetaDataAdjustment.setUpdatedFrontendStepList(updatedFrontendStepList); + setProcessMetaDataAdjustment(processMetaDataAdjustment); } @@ -411,21 +417,21 @@ public class RunBackendStepOutput extends AbstractActionOutput implements Serial /******************************************************************************* - ** Getter for updatedFrontendStepList + ** Getter for ProcessMetaDataAdjustment (pass-through to processState) *******************************************************************************/ - public List getUpdatedFrontendStepList() + public ProcessMetaDataAdjustment getProcessMetaDataAdjustment() { - return (this.processState.getUpdatedFrontendStepList()); + return (this.processState.getProcessMetaDataAdjustment()); } /******************************************************************************* - ** Setter for updatedFrontendStepList + ** Setter for updatedFrontendStepList (pass-through to processState) *******************************************************************************/ - public void setUpdatedFrontendStepList(List updatedFrontendStepList) + public void setProcessMetaDataAdjustment(ProcessMetaDataAdjustment processMetaDataAdjustment) { - this.processState.setUpdatedFrontendStepList(updatedFrontendStepList); + this.processState.setProcessMetaDataAdjustment(processMetaDataAdjustment); } } diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/processes/RunProcessOutput.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/processes/RunProcessOutput.java index 30a5642a..f71a7137 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/processes/RunProcessOutput.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/actions/processes/RunProcessOutput.java @@ -33,6 +33,7 @@ import java.util.Optional; import com.kingsrook.qqq.backend.core.model.actions.AbstractActionOutput; import com.kingsrook.qqq.backend.core.model.data.QRecord; import com.kingsrook.qqq.backend.core.model.metadata.processes.QFrontendStepMetaData; +import com.kingsrook.qqq.backend.core.utils.ObjectUtils; import com.kingsrook.qqq.backend.core.utils.ValueUtils; @@ -336,7 +337,12 @@ public class RunProcessOutput extends AbstractActionOutput implements Serializab *******************************************************************************/ public void setUpdatedFrontendStepList(List updatedFrontendStepList) { - this.processState.setUpdatedFrontendStepList(updatedFrontendStepList); + if(this.processState.getProcessMetaDataAdjustment() == null) + { + this.processState.setProcessMetaDataAdjustment(new ProcessMetaDataAdjustment()); + } + + this.processState.getProcessMetaDataAdjustment().setUpdatedFrontendStepList(updatedFrontendStepList); } @@ -346,7 +352,27 @@ public class RunProcessOutput extends AbstractActionOutput implements Serializab *******************************************************************************/ public List getUpdatedFrontendStepList() { - return this.processState.getUpdatedFrontendStepList(); + return ObjectUtils.tryElse(() -> this.processState.getProcessMetaDataAdjustment().getUpdatedFrontendStepList(), null); + } + + + + /******************************************************************************* + ** Getter for processMetaDataAdjustment + *******************************************************************************/ + public ProcessMetaDataAdjustment getProcessMetaDataAdjustment() + { + return (this.processState.getProcessMetaDataAdjustment()); + } + + + + /******************************************************************************* + ** Setter for processMetaDataAdjustment + *******************************************************************************/ + public void setProcessMetaDataAdjustment(ProcessMetaDataAdjustment processMetaDataAdjustment) + { + this.processState.setProcessMetaDataAdjustment(processMetaDataAdjustment); } } diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/StreamedETLExecuteStep.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/StreamedETLExecuteStep.java index 5c7cc6b0..4dc9d6d3 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/StreamedETLExecuteStep.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/StreamedETLExecuteStep.java @@ -176,9 +176,9 @@ public class StreamedETLExecuteStep extends BaseStreamedETLStep implements Backe ////////////////////////////////////////////////////////////////////// // propagate data from inner-step state to process-level step state // ////////////////////////////////////////////////////////////////////// - if(postRunOutput.getUpdatedFrontendStepList() != null) + if(postRunOutput.getProcessMetaDataAdjustment() != null) { - runBackendStepOutput.setUpdatedFrontendStepList(postRunOutput.getUpdatedFrontendStepList()); + runBackendStepOutput.setProcessMetaDataAdjustment(postRunOutput.getProcessMetaDataAdjustment()); } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -281,10 +281,10 @@ public class StreamedETLExecuteStep extends BaseStreamedETLStep implements Backe ////////////////////////////////////////////////////////////////////// // propagate data from inner-step state to process-level step state // ////////////////////////////////////////////////////////////////////// - if(streamedBackendStepOutput.getUpdatedFrontendStepList() != null) + if(streamedBackendStepOutput.getProcessMetaDataAdjustment() != null) { runBackendStepOutput.getProcessState().setStepList(streamedBackendStepOutput.getProcessState().getStepList()); - runBackendStepOutput.setUpdatedFrontendStepList(streamedBackendStepOutput.getUpdatedFrontendStepList()); + runBackendStepOutput.getProcessState().setProcessMetaDataAdjustment(streamedBackendStepOutput.getProcessMetaDataAdjustment()); } //////////////////////////////////////////////// @@ -299,10 +299,10 @@ public class StreamedETLExecuteStep extends BaseStreamedETLStep implements Backe ////////////////////////////////////////////////////////////////////// // propagate data from inner-step state to process-level step state // ////////////////////////////////////////////////////////////////////// - if(streamedBackendStepOutput.getUpdatedFrontendStepList() != null) + if(streamedBackendStepOutput.getProcessMetaDataAdjustment() != null) { runBackendStepOutput.getProcessState().setStepList(streamedBackendStepOutput.getProcessState().getStepList()); - runBackendStepOutput.setUpdatedFrontendStepList(streamedBackendStepOutput.getUpdatedFrontendStepList()); + runBackendStepOutput.getProcessState().setProcessMetaDataAdjustment(streamedBackendStepOutput.getProcessMetaDataAdjustment()); } /////////////////////////////////////////////////////// diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/StreamedETLPreviewStep.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/StreamedETLPreviewStep.java index 1111a705..aab7331b 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/StreamedETLPreviewStep.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/StreamedETLPreviewStep.java @@ -148,9 +148,9 @@ public class StreamedETLPreviewStep extends BaseStreamedETLStep implements Backe ////////////////////////////////////////////////////////////////////// // propagate data from inner-step state to process-level step state // ////////////////////////////////////////////////////////////////////// - if(postRunOutput.getUpdatedFrontendStepList() != null) + if(postRunOutput.getProcessMetaDataAdjustment() != null) { - runBackendStepOutput.setUpdatedFrontendStepList(postRunOutput.getUpdatedFrontendStepList()); + runBackendStepOutput.setProcessMetaDataAdjustment(postRunOutput.getProcessMetaDataAdjustment()); } } @@ -219,10 +219,9 @@ public class StreamedETLPreviewStep extends BaseStreamedETLStep implements Backe ////////////////////////////////////////////////////////////////////// // propagate data from inner-step state to process-level step state // ////////////////////////////////////////////////////////////////////// - if(streamedBackendStepOutput.getUpdatedFrontendStepList() != null) + if(streamedBackendStepOutput.getProcessMetaDataAdjustment() != null) { - runBackendStepOutput.getProcessState().setStepList(streamedBackendStepOutput.getProcessState().getStepList()); - runBackendStepOutput.setUpdatedFrontendStepList(streamedBackendStepOutput.getUpdatedFrontendStepList()); + runBackendStepOutput.getProcessState().setProcessMetaDataAdjustment(streamedBackendStepOutput.getProcessMetaDataAdjustment()); } //////////////////////////////////////////////////// diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/StreamedETLValidateStep.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/StreamedETLValidateStep.java index c9addb97..6dc65081 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/StreamedETLValidateStep.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/StreamedETLValidateStep.java @@ -145,9 +145,9 @@ public class StreamedETLValidateStep extends BaseStreamedETLStep implements Back ////////////////////////////////////////////////////////////////////// // propagate data from inner-step state to process-level step state // ////////////////////////////////////////////////////////////////////// - if(postRunOutput.getUpdatedFrontendStepList() != null) + if(postRunOutput.getProcessMetaDataAdjustment() != null) { - runBackendStepOutput.setUpdatedFrontendStepList(postRunOutput.getUpdatedFrontendStepList()); + runBackendStepOutput.setProcessMetaDataAdjustment(postRunOutput.getProcessMetaDataAdjustment()); } } @@ -183,10 +183,9 @@ public class StreamedETLValidateStep extends BaseStreamedETLStep implements Back ////////////////////////////////////////////////////////////////////// // propagate data from inner-step state to process-level step state // ////////////////////////////////////////////////////////////////////// - if(streamedBackendStepOutput.getUpdatedFrontendStepList() != null) + if(streamedBackendStepOutput.getProcessMetaDataAdjustment() != null) { - runBackendStepOutput.getProcessState().setStepList(streamedBackendStepOutput.getProcessState().getStepList()); - runBackendStepOutput.setUpdatedFrontendStepList(streamedBackendStepOutput.getUpdatedFrontendStepList()); + runBackendStepOutput.setProcessMetaDataAdjustment(streamedBackendStepOutput.getProcessMetaDataAdjustment()); } /////////////////////////////////////////////////////// diff --git a/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/backend/javalin/QJavalinProcessHandler.java b/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/backend/javalin/QJavalinProcessHandler.java index 48dfef38..88d0f1de 100644 --- a/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/backend/javalin/QJavalinProcessHandler.java +++ b/qqq-middleware-javalin/src/main/java/com/kingsrook/qqq/backend/javalin/QJavalinProcessHandler.java @@ -453,11 +453,19 @@ public class QJavalinProcessHandler resultForCaller.put("values", runProcessOutput.getValues()); runProcessOutput.getProcessState().getNextStepName().ifPresent(nextStep -> resultForCaller.put("nextStep", nextStep)); + ///////////////////////////////////////////////////////////////////////////////////////////////////////////// + // todo - delete after all frontends look for processMetaDataAdjustment instead of updatedFrontendStepList // + ///////////////////////////////////////////////////////////////////////////////////////////////////////////// List updatedFrontendStepList = runProcessOutput.getUpdatedFrontendStepList(); if(updatedFrontendStepList != null) { resultForCaller.put("updatedFrontendStepList", updatedFrontendStepList); } + + if(runProcessOutput.getProcessMetaDataAdjustment() != null) + { + resultForCaller.put("processMetaDataAdjustment", runProcessOutput.getProcessMetaDataAdjustment()); + } }