update to propagate default values into state before frontend steps

This commit is contained in:
2023-01-19 16:11:45 -06:00
parent 396f02265b
commit f9408716ac

View File

@ -49,6 +49,7 @@ import com.kingsrook.qqq.backend.core.model.actions.tables.query.QueryInput;
import com.kingsrook.qqq.backend.core.model.actions.tables.query.QueryOutput; import com.kingsrook.qqq.backend.core.model.actions.tables.query.QueryOutput;
import com.kingsrook.qqq.backend.core.model.actions.tables.update.UpdateInput; import com.kingsrook.qqq.backend.core.model.actions.tables.update.UpdateInput;
import com.kingsrook.qqq.backend.core.model.data.QRecord; import com.kingsrook.qqq.backend.core.model.data.QRecord;
import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData;
import com.kingsrook.qqq.backend.core.model.metadata.processes.QBackendStepMetaData; import com.kingsrook.qqq.backend.core.model.metadata.processes.QBackendStepMetaData;
import com.kingsrook.qqq.backend.core.model.metadata.processes.QFrontendStepMetaData; import com.kingsrook.qqq.backend.core.model.metadata.processes.QFrontendStepMetaData;
import com.kingsrook.qqq.backend.core.model.metadata.processes.QProcessMetaData; import com.kingsrook.qqq.backend.core.model.metadata.processes.QProcessMetaData;
@ -142,7 +143,7 @@ public class RunProcessAction
QStepMetaData step = stepList.get(0); QStepMetaData step = stepList.get(0);
lastStepName = step.getName(); lastStepName = step.getName();
if(step instanceof QFrontendStepMetaData) if(step instanceof QFrontendStepMetaData frontendStep)
{ {
//////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////
// Handle what to do with frontend steps, per request setting // // Handle what to do with frontend steps, per request setting //
@ -152,6 +153,7 @@ public class RunProcessAction
case BREAK -> case BREAK ->
{ {
LOG.trace("Breaking process [" + process.getName() + "] at frontend step (as requested by caller): " + step.getName()); LOG.trace("Breaking process [" + process.getName() + "] at frontend step (as requested by caller): " + step.getName());
processFrontendStepFieldDefaultValues(processState, frontendStep);
processState.setNextStepName(step.getName()); processState.setNextStepName(step.getName());
break STEP_LOOP; break STEP_LOOP;
} }
@ -229,6 +231,22 @@ public class RunProcessAction
/*******************************************************************************
**
*******************************************************************************/
private void processFrontendStepFieldDefaultValues(ProcessState processState, QFrontendStepMetaData step)
{
for(QFieldMetaData formField : CollectionUtils.mergeLists(step.getFormFields(), step.getInputFields(), step.getViewFields(), step.getOutputFields()))
{
if(formField.getDefaultValue() != null && processState.getValues().get(formField.getName()) == null)
{
processState.getValues().put(formField.getName(), formField.getDefaultValue());
}
}
}
/******************************************************************************* /*******************************************************************************
** When we start running a process (or resuming it), get data in the RunProcessRequest ** When we start running a process (or resuming it), get data in the RunProcessRequest
** either from the state provider (if they're found, for a resume). ** either from the state provider (if they're found, for a resume).