mirror of
https://github.com/Kingsrook/qqq.git
synced 2025-07-18 05:01:07 +00:00
Merge remote-tracking branch 'origin/0.7.0-12-hotfix' into dev
This commit is contained in:
@ -52,6 +52,7 @@ import com.kingsrook.qqq.backend.core.model.data.QRecord;
|
|||||||
import com.kingsrook.qqq.backend.core.model.metadata.QInstance;
|
import com.kingsrook.qqq.backend.core.model.metadata.QInstance;
|
||||||
import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData;
|
import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData;
|
||||||
import com.kingsrook.qqq.backend.core.model.metadata.tables.automation.AutomationStatusTrackingType;
|
import com.kingsrook.qqq.backend.core.model.metadata.tables.automation.AutomationStatusTrackingType;
|
||||||
|
import com.kingsrook.qqq.backend.core.model.metadata.tables.automation.QTableAutomationDetails;
|
||||||
import com.kingsrook.qqq.backend.core.model.metadata.tables.automation.TableAutomationAction;
|
import com.kingsrook.qqq.backend.core.model.metadata.tables.automation.TableAutomationAction;
|
||||||
import com.kingsrook.qqq.backend.core.model.metadata.tables.automation.TriggerEvent;
|
import com.kingsrook.qqq.backend.core.model.metadata.tables.automation.TriggerEvent;
|
||||||
import com.kingsrook.qqq.backend.core.model.session.QSession;
|
import com.kingsrook.qqq.backend.core.model.session.QSession;
|
||||||
@ -210,18 +211,22 @@ public class PollingAutomationPerTableRunner implements Runnable
|
|||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
// run an async-pipe loop - that will query for records in PENDING - put them in a pipe - then apply actions to them //
|
// run an async-pipe loop - that will query for records in PENDING - put them in a pipe - then apply actions to them //
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
RecordPipe recordPipe = new RecordPipe();
|
QTableAutomationDetails automationDetails = table.getAutomationDetails();
|
||||||
AsyncRecordPipeLoop asyncRecordPipeLoop = new AsyncRecordPipeLoop();
|
AsyncRecordPipeLoop asyncRecordPipeLoop = new AsyncRecordPipeLoop();
|
||||||
|
|
||||||
|
RecordPipe recordPipe = automationDetails.getOverrideBatchSize() == null
|
||||||
|
? new RecordPipe() : new RecordPipe(automationDetails.getOverrideBatchSize());
|
||||||
|
|
||||||
asyncRecordPipeLoop.run("PollingAutomationRunner>Query>" + automationStatus + ">" + table.getName(), null, recordPipe, (status) ->
|
asyncRecordPipeLoop.run("PollingAutomationRunner>Query>" + automationStatus + ">" + table.getName(), null, recordPipe, (status) ->
|
||||||
{
|
{
|
||||||
QueryInput queryInput = new QueryInput(instance);
|
QueryInput queryInput = new QueryInput(instance);
|
||||||
queryInput.setSession(session);
|
queryInput.setSession(session);
|
||||||
queryInput.setTableName(table.getName());
|
queryInput.setTableName(table.getName());
|
||||||
|
|
||||||
AutomationStatusTrackingType statusTrackingType = table.getAutomationDetails().getStatusTracking().getType();
|
AutomationStatusTrackingType statusTrackingType = automationDetails.getStatusTracking().getType();
|
||||||
if(AutomationStatusTrackingType.FIELD_IN_TABLE.equals(statusTrackingType))
|
if(AutomationStatusTrackingType.FIELD_IN_TABLE.equals(statusTrackingType))
|
||||||
{
|
{
|
||||||
queryInput.setFilter(new QQueryFilter().withCriteria(new QFilterCriteria(table.getAutomationDetails().getStatusTracking().getFieldName(), QCriteriaOperator.EQUALS, List.of(automationStatus.getId()))));
|
queryInput.setFilter(new QQueryFilter().withCriteria(new QFilterCriteria(automationDetails.getStatusTracking().getFieldName(), QCriteriaOperator.EQUALS, List.of(automationStatus.getId()))));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -274,7 +279,7 @@ public class PollingAutomationPerTableRunner implements Runnable
|
|||||||
if(CollectionUtils.nullSafeHasContents(matchingQRecords))
|
if(CollectionUtils.nullSafeHasContents(matchingQRecords))
|
||||||
{
|
{
|
||||||
LOG.debug(" Processing " + matchingQRecords.size() + " records in " + table + " for action " + action);
|
LOG.debug(" Processing " + matchingQRecords.size() + " records in " + table + " for action " + action);
|
||||||
applyActionToMatchingRecords(session, table, matchingQRecords, action);
|
applyActionToMatchingRecords(instance, session, table, matchingQRecords, action);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch(Exception e)
|
catch(Exception e)
|
||||||
@ -352,8 +357,9 @@ public class PollingAutomationPerTableRunner implements Runnable
|
|||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
** Finally, actually run action code against a list of known matching records.
|
** Finally, actually run action code against a list of known matching records.
|
||||||
|
** todo not commit - move to somewhere genericer
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
private void applyActionToMatchingRecords(QSession session, QTableMetaData table, List<QRecord> records, TableAutomationAction action) throws Exception
|
public static void applyActionToMatchingRecords(QInstance instance, QSession session, QTableMetaData table, List<QRecord> records, TableAutomationAction action) throws Exception
|
||||||
{
|
{
|
||||||
if(StringUtils.hasContent(action.getProcessName()))
|
if(StringUtils.hasContent(action.getProcessName()))
|
||||||
{
|
{
|
||||||
|
@ -35,6 +35,8 @@ public class QTableAutomationDetails
|
|||||||
private String providerName;
|
private String providerName;
|
||||||
private List<TableAutomationAction> actions;
|
private List<TableAutomationAction> actions;
|
||||||
|
|
||||||
|
private Integer overrideBatchSize;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
@ -151,4 +153,39 @@ public class QTableAutomationDetails
|
|||||||
this.actions.add(action);
|
this.actions.add(action);
|
||||||
return (this);
|
return (this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
** Getter for overrideBatchSize
|
||||||
|
**
|
||||||
|
*******************************************************************************/
|
||||||
|
public Integer getOverrideBatchSize()
|
||||||
|
{
|
||||||
|
return overrideBatchSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
** Setter for overrideBatchSize
|
||||||
|
**
|
||||||
|
*******************************************************************************/
|
||||||
|
public void setOverrideBatchSize(Integer overrideBatchSize)
|
||||||
|
{
|
||||||
|
this.overrideBatchSize = overrideBatchSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
** Fluent setter for overrideBatchSize
|
||||||
|
**
|
||||||
|
*******************************************************************************/
|
||||||
|
public QTableAutomationDetails withOverrideBatchSize(Integer overrideBatchSize)
|
||||||
|
{
|
||||||
|
this.overrideBatchSize = overrideBatchSize;
|
||||||
|
return (this);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user