CE-936 - Move process variant info from schedule to process meta data

This commit is contained in:
2024-03-18 10:53:05 -05:00
parent c093c680c0
commit 1bffd4d46e
8 changed files with 209 additions and 74 deletions

View File

@ -497,10 +497,10 @@ public class RunProcessAction
////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// if backend specifies that it uses variants, look for that data in the session and append to our basepull key // // if backend specifies that it uses variants, look for that data in the session and append to our basepull key //
////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(process.getSchedule() != null && process.getSchedule().getVariantBackend() != null) if(process.getSchedule() != null && process.getVariantBackend() != null)
{ {
QSession session = QContext.getQSession(); QSession session = QContext.getQSession();
QBackendMetaData backendMetaData = QContext.getQInstance().getBackend(process.getSchedule().getVariantBackend()); QBackendMetaData backendMetaData = QContext.getQInstance().getBackend(process.getVariantBackend());
if(session.getBackendVariants() == null || !session.getBackendVariants().containsKey(backendMetaData.getVariantOptionsTableTypeValue())) if(session.getBackendVariants() == null || !session.getBackendVariants().containsKey(backendMetaData.getVariantOptionsTableTypeValue()))
{ {
LOG.info("Could not find Backend Variant information for Backend '" + backendMetaData.getName() + "'"); LOG.info("Could not find Backend Variant information for Backend '" + backendMetaData.getName() + "'");

View File

@ -1417,12 +1417,16 @@ public class QInstanceValidator
{ {
QScheduleMetaData schedule = process.getSchedule(); QScheduleMetaData schedule = process.getSchedule();
validateScheduleMetaData(schedule, qInstance, "Process " + processName + ", schedule: "); validateScheduleMetaData(schedule, qInstance, "Process " + processName + ", schedule: ");
if(schedule.getVariantBackend() != null)
{
assertCondition(qInstance.getBackend(schedule.getVariantBackend()) != null, "A variant backend was not found for " + schedule.getVariantBackend());
assertCondition(schedule.getVariantRunStrategy() != null, "A variant run strategy was not set for " + schedule.getVariantBackend() + " on schedule in process " + processName);
} }
if(process.getVariantBackend() != null)
{
assertCondition(qInstance.getBackend(process.getVariantBackend()) != null, "Process " + processName + ", a variant backend was not found named " + process.getVariantBackend());
assertCondition(process.getVariantRunStrategy() != null, "A variant run strategy was not set for process " + processName + " (which does specify a variant backend)");
}
else
{
assertCondition(process.getVariantRunStrategy() == null, "A variant run strategy was set for process " + processName + " (which isn't allowed, since it does not specify a variant backend)");
} }
for(QSupplementalProcessMetaData supplementalProcessMetaData : CollectionUtils.nonNullMap(process.getSupplementalMetaData()).values()) for(QSupplementalProcessMetaData supplementalProcessMetaData : CollectionUtils.nonNullMap(process.getSupplementalMetaData()).values())

View File

@ -155,4 +155,26 @@ public class AbstractProcessMetaDataBuilder
return (this); return (this);
} }
/*******************************************************************************
**
*******************************************************************************/
public AbstractProcessMetaDataBuilder withVariantRunStrategy(VariantRunStrategy variantRunStrategy)
{
processMetaData.setVariantRunStrategy(variantRunStrategy);
return (this);
}
/*******************************************************************************
**
*******************************************************************************/
public AbstractProcessMetaDataBuilder withVariantBackend(String variantBackend)
{
processMetaData.setVariantBackend(variantBackend);
return (this);
}
} }

View File

@ -64,6 +64,9 @@ public class QProcessMetaData implements QAppChildMetaData, MetaDataWithPermissi
private QScheduleMetaData schedule; private QScheduleMetaData schedule;
private VariantRunStrategy variantRunStrategy;
private String variantBackend;
private Map<String, QSupplementalProcessMetaData> supplementalMetaData; private Map<String, QSupplementalProcessMetaData> supplementalMetaData;
@ -671,4 +674,66 @@ public class QProcessMetaData implements QAppChildMetaData, MetaDataWithPermissi
return (this); return (this);
} }
/*******************************************************************************
** Getter for variantRunStrategy
*******************************************************************************/
public VariantRunStrategy getVariantRunStrategy()
{
return (this.variantRunStrategy);
}
/*******************************************************************************
** Setter for variantRunStrategy
*******************************************************************************/
public void setVariantRunStrategy(VariantRunStrategy variantRunStrategy)
{
this.variantRunStrategy = variantRunStrategy;
}
/*******************************************************************************
** Fluent setter for variantRunStrategy
*******************************************************************************/
public QProcessMetaData withVariantRunStrategy(VariantRunStrategy variantRunStrategy)
{
this.variantRunStrategy = variantRunStrategy;
return (this);
}
/*******************************************************************************
** Getter for variantBackend
*******************************************************************************/
public String getVariantBackend()
{
return (this.variantBackend);
}
/*******************************************************************************
** Setter for variantBackend
*******************************************************************************/
public void setVariantBackend(String variantBackend)
{
this.variantBackend = variantBackend;
}
/*******************************************************************************
** Fluent setter for variantBackend
*******************************************************************************/
public QProcessMetaData withVariantBackend(String variantBackend)
{
this.variantBackend = variantBackend;
return (this);
}
} }

View File

@ -0,0 +1,32 @@
/*
* QQQ - Low-code Application Framework for Engineers.
* Copyright (C) 2021-2024. Kingsrook, LLC
* 651 N Broad St Ste 205 # 6917 | Middletown DE 19709 | United States
* contact@kingsrook.com
* https://github.com/Kingsrook/
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.kingsrook.qqq.backend.core.model.metadata.processes;
/*******************************************************************************
**
*******************************************************************************/
public enum VariantRunStrategy
{
PARALLEL,
SERIAL
}

View File

@ -37,11 +37,8 @@ import com.kingsrook.qqq.backend.core.utils.StringUtils;
*******************************************************************************/ *******************************************************************************/
public class QScheduleMetaData public class QScheduleMetaData
{ {
public enum RunStrategy
{PARALLEL, SERIAL}
private String schedulerName; private String schedulerName;
private String description;
private Integer repeatSeconds; private Integer repeatSeconds;
private Integer repeatMillis; private Integer repeatMillis;
@ -51,8 +48,6 @@ public class QScheduleMetaData
private String cronExpression; private String cronExpression;
private String cronTimeZoneId; private String cronTimeZoneId;
private RunStrategy variantRunStrategy;
private String variantBackend;
/******************************************************************************* /*******************************************************************************
@ -201,67 +196,6 @@ public class QScheduleMetaData
/*******************************************************************************
** Getter for variantBackend
*******************************************************************************/
public String getVariantBackend()
{
return (this.variantBackend);
}
/*******************************************************************************
** Setter for variantBackend
*******************************************************************************/
public void setVariantBackend(String variantBackend)
{
this.variantBackend = variantBackend;
}
/*******************************************************************************
** Fluent setter for variantBackend
*******************************************************************************/
public QScheduleMetaData withBackendVariant(String backendVariant)
{
this.variantBackend = backendVariant;
return (this);
}
/*******************************************************************************
** Getter for variantRunStrategy
*******************************************************************************/
public RunStrategy getVariantRunStrategy()
{
return (this.variantRunStrategy);
}
/*******************************************************************************
** Setter for variantRunStrategy
*******************************************************************************/
public void setVariantRunStrategy(RunStrategy variantRunStrategy)
{
this.variantRunStrategy = variantRunStrategy;
}
/*******************************************************************************
** Fluent setter for variantRunStrategy
*******************************************************************************/
public QScheduleMetaData withVariantRunStrategy(RunStrategy variantRunStrategy)
{
this.variantRunStrategy = variantRunStrategy;
return (this);
}
/******************************************************************************* /*******************************************************************************
** Getter for cronExpression ** Getter for cronExpression
*******************************************************************************/ *******************************************************************************/
@ -354,4 +288,34 @@ public class QScheduleMetaData
} }
/*******************************************************************************
** Getter for description
*******************************************************************************/
public String getDescription()
{
return (this.description);
}
/*******************************************************************************
** Setter for description
*******************************************************************************/
public void setDescription(String description)
{
this.description = description;
}
/*******************************************************************************
** Fluent setter for description
*******************************************************************************/
public QScheduleMetaData withDescription(String description)
{
this.description = description;
return (this);
}
} }

View File

@ -41,6 +41,7 @@ import com.kingsrook.qqq.backend.core.model.metadata.processes.QFunctionInputMet
import com.kingsrook.qqq.backend.core.model.metadata.processes.QFunctionOutputMetaData; import com.kingsrook.qqq.backend.core.model.metadata.processes.QFunctionOutputMetaData;
import com.kingsrook.qqq.backend.core.model.metadata.processes.QProcessMetaData; import com.kingsrook.qqq.backend.core.model.metadata.processes.QProcessMetaData;
import com.kingsrook.qqq.backend.core.model.metadata.processes.QStepMetaData; import com.kingsrook.qqq.backend.core.model.metadata.processes.QStepMetaData;
import com.kingsrook.qqq.backend.core.model.metadata.processes.VariantRunStrategy;
import com.kingsrook.qqq.backend.core.model.metadata.scheduleing.QScheduleMetaData; import com.kingsrook.qqq.backend.core.model.metadata.scheduleing.QScheduleMetaData;
import com.kingsrook.qqq.backend.core.processes.implementations.basepull.BasepullConfiguration; import com.kingsrook.qqq.backend.core.processes.implementations.basepull.BasepullConfiguration;
@ -488,5 +489,28 @@ public class StreamedETLWithFrontendProcess
return (this); return (this);
} }
/*******************************************************************************
**
*******************************************************************************/
@Override
public Builder withVariantRunStrategy(VariantRunStrategy variantRunStrategy)
{
processMetaData.setVariantRunStrategy(variantRunStrategy);
return (this);
}
/*******************************************************************************
**
*******************************************************************************/
@Override
public Builder withVariantBackend(String variantBackend)
{
processMetaData.setVariantBackend(variantBackend);
return (this);
}
} }
} }

View File

@ -31,6 +31,7 @@ import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldType;
import com.kingsrook.qqq.backend.core.model.metadata.layout.QIcon; import com.kingsrook.qqq.backend.core.model.metadata.layout.QIcon;
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;
import com.kingsrook.qqq.backend.core.model.metadata.processes.VariantRunStrategy;
import com.kingsrook.qqq.backend.core.model.metadata.scheduleing.QScheduleMetaData; import com.kingsrook.qqq.backend.core.model.metadata.scheduleing.QScheduleMetaData;
import com.kingsrook.qqq.backend.core.processes.implementations.basepull.BasepullConfiguration; import com.kingsrook.qqq.backend.core.processes.implementations.basepull.BasepullConfiguration;
import com.kingsrook.qqq.backend.core.processes.implementations.basepull.ExtractViaBasepullQueryStep; import com.kingsrook.qqq.backend.core.processes.implementations.basepull.ExtractViaBasepullQueryStep;
@ -248,5 +249,28 @@ public class TableSyncProcess
super.withExtractStepClass(extractStepClass); super.withExtractStepClass(extractStepClass);
return (this); return (this);
} }
/*******************************************************************************
**
*******************************************************************************/
@Override
public Builder withVariantRunStrategy(VariantRunStrategy variantRunStrategy)
{
processMetaData.setVariantRunStrategy(variantRunStrategy);
return (this);
}
/*******************************************************************************
**
*******************************************************************************/
@Override
public Builder withVariantBackend(String variantBackend)
{
processMetaData.setVariantBackend(variantBackend);
return (this);
}
} }
} }