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(process.getSchedule() != null && process.getSchedule().getVariantBackend() != null)
if(process.getSchedule() != null && process.getVariantBackend() != null)
{
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()))
{
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();
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())

View File

@ -155,4 +155,26 @@ public class AbstractProcessMetaDataBuilder
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 VariantRunStrategy variantRunStrategy;
private String variantBackend;
private Map<String, QSupplementalProcessMetaData> supplementalMetaData;
@ -671,4 +674,66 @@ public class QProcessMetaData implements QAppChildMetaData, MetaDataWithPermissi
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 enum RunStrategy
{PARALLEL, SERIAL}
private String schedulerName;
private String description;
private Integer repeatSeconds;
private Integer repeatMillis;
@ -51,8 +48,6 @@ public class QScheduleMetaData
private String cronExpression;
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
*******************************************************************************/
@ -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.QProcessMetaData;
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.processes.implementations.basepull.BasepullConfiguration;
@ -488,5 +489,28 @@ public class StreamedETLWithFrontendProcess
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.processes.QFrontendStepMetaData;
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.processes.implementations.basepull.BasepullConfiguration;
import com.kingsrook.qqq.backend.core.processes.implementations.basepull.ExtractViaBasepullQueryStep;
@ -248,5 +249,28 @@ public class TableSyncProcess
super.withExtractStepClass(extractStepClass);
return (this);
}
/*******************************************************************************
**
*******************************************************************************/
@Override
public Builder withVariantRunStrategy(VariantRunStrategy variantRunStrategy)
{
processMetaData.setVariantRunStrategy(variantRunStrategy);
return (this);
}
/*******************************************************************************
**
*******************************************************************************/
@Override
public Builder withVariantBackend(String variantBackend)
{
processMetaData.setVariantBackend(variantBackend);
return (this);
}
}
}