updates from code review feedback

This commit is contained in:
Tim Chamberlain committed 2025-10-29 12:37:53 -05:00
1 parent 20f0d38dd1
commit 4f115e53c6
5 files changed
+37 -55

No files matched your search

+1 -1
View File
@@ -23,7 +23,7 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<properties>
<revision>0.3.0-SNAPSHOT</revision>
<revision>0.113.0</revision>
</properties>
<parent>
@@ -34,9 +34,9 @@ import com.kingsrook.qbits.workflows.execution.WorkflowTypeTesterInterface;
import com.kingsrook.qqq.backend.core.instances.QInstanceEnricher;
import com.kingsrook.qqq.backend.core.instances.QInstanceValidator;
import com.kingsrook.qqq.backend.core.model.data.QRecord;
import com.kingsrook.qqq.backend.core.model.helpcontent.HelpContent;
import com.kingsrook.qqq.backend.core.model.metadata.QInstance;
import com.kingsrook.qqq.backend.core.model.metadata.code.QCodeReference;
import com.kingsrook.qqq.backend.core.model.metadata.help.QHelpContent;
import com.kingsrook.qqq.backend.core.utils.CollectionUtils;
import com.kingsrook.qqq.backend.core.utils.StringUtils;
@@ -54,7 +54,7 @@ public class WorkflowType implements Serializable
private QCodeReference executor;
private QCodeReference tester;
protected Map<String, List<HelpContent>> helpContent;
protected Map<String, List<QHelpContent>> helpContent;
private ArrayList<WorkflowStepTypeCategory> stepTypeCategories;
@@ -312,7 +312,7 @@ public class WorkflowType implements Serializable
/*******************************************************************************
** Getter for helpContent
*******************************************************************************/
public Map<String, List<HelpContent>> getHelpContent()
public Map<String, List<QHelpContent>> getHelpContent()
{
return (this.helpContent);
}
@@ -322,7 +322,7 @@ public class WorkflowType implements Serializable
/*******************************************************************************
** Setter for helpContent
*******************************************************************************/
public void setHelpContent(Map<String, List<HelpContent>> helpContent)
public void setHelpContent(Map<String, List<QHelpContent>> helpContent)
{
this.helpContent = helpContent;
}
@@ -332,7 +332,7 @@ public class WorkflowType implements Serializable
/*******************************************************************************
** Fluent setter for helpContent
*******************************************************************************/
public WorkflowType withHelpContent(Map<String, List<HelpContent>> helpContent)
public WorkflowType withHelpContent(Map<String, List<QHelpContent>> helpContent)
{
this.helpContent = helpContent;
return (this);
@@ -343,7 +343,7 @@ public class WorkflowType implements Serializable
/*******************************************************************************
** Fluent setter for helpContent
*******************************************************************************/
public WorkflowType withHelpContent(String key, HelpContent helpContent)
public WorkflowType withHelpContent(String key, QHelpContent helpContent)
{
if(this.helpContent == null)
{
@@ -259,6 +259,17 @@ public class WorkflowsRegistry implements QSupplementalInstanceMetaData, QHelpCo
}
}
}
else if(nameValuePairs.containsKey("workflow") && nameValuePairs.containsKey("field"))
{
if(workflowTypes != null)
{
for(String workflowTypeName : workflowTypes.keySet())
{
String key = "workflow:" + nameValuePairs.get("workflow") + ";field:" + nameValuePairs.get("field");
workflowTypes.get(workflowTypeName).withHelpContent(key, helpContent);
}
}
}
}
}
@@ -23,7 +23,6 @@ package com.kingsrook.qbits.workflows.implementations.recordworkflows;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.ListIterator;
@@ -31,20 +30,18 @@ import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import com.kingsrook.qbits.workflows.definition.WorkflowStepType;
import com.kingsrook.qbits.workflows.definition.WorkflowsRegistry;
import com.kingsrook.qbits.workflows.implementations.WorkflowStepUtils;
import com.kingsrook.qbits.workflows.model.WorkflowRevision;
import com.kingsrook.qqq.backend.core.actions.tables.QueryAction;
import com.kingsrook.qqq.backend.core.actions.values.SearchPossibleValueSourceAction;
import com.kingsrook.qqq.backend.core.context.QContext;
import com.kingsrook.qqq.backend.core.exceptions.QException;
import com.kingsrook.qqq.backend.core.logging.QLogger;
import com.kingsrook.qqq.backend.core.model.actions.tables.query.QCriteriaOperator;
import com.kingsrook.qqq.backend.core.model.actions.tables.query.QFilterCriteria;
import com.kingsrook.qqq.backend.core.model.actions.tables.query.QQueryFilter;
import com.kingsrook.qqq.backend.core.model.actions.values.SearchPossibleValueSourceInput;
import com.kingsrook.qqq.backend.core.model.actions.values.SearchPossibleValueSourceOutput;
import com.kingsrook.qqq.backend.core.model.data.QRecord;
import com.kingsrook.qqq.backend.core.model.helpcontent.HelpContent;
import com.kingsrook.qqq.backend.core.model.metadata.code.InitializableViaCodeReference;
import com.kingsrook.qqq.backend.core.model.metadata.code.QCodeReference;
import com.kingsrook.qqq.backend.core.model.metadata.code.QCodeReferenceWithProperties;
@@ -52,9 +49,6 @@ import com.kingsrook.qqq.backend.core.model.metadata.fields.FieldAndJoinTable;
import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData;
import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldType;
import com.kingsrook.qqq.backend.core.model.metadata.frontend.QFrontendFieldMetaData;
import com.kingsrook.qqq.backend.core.model.metadata.help.HelpFormat;
import com.kingsrook.qqq.backend.core.model.metadata.help.QHelpContent;
import com.kingsrook.qqq.backend.core.model.metadata.help.QHelpRole;
import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData;
import com.kingsrook.qqq.backend.core.utils.CollectionUtils;
import com.kingsrook.qqq.backend.core.utils.StringUtils;
@@ -144,23 +138,20 @@ public class UpdateInputRecordFieldMetaDataAdjuster implements FormAdjusterInter
updatedField.setLabel("Value (" + fieldAndJoinTable.field().getLabel() + ")");
}
/////////////////////////////////////
// check for any help help content //
/////////////////////////////////////
String helpKey = "workflowStepType:updateInputRecordField;field:value";
List<QRecord> helpContentRecords = QueryAction.execute(HelpContent.TABLE_NAME, new QQueryFilter(new QFilterCriteria("key", QCriteriaOperator.EQUALS, helpKey)));
if(CollectionUtils.nullSafeHasContents(helpContentRecords))
////////////////////////////////////////////////////////////////////////////////
// check the workflow registry to see if there is help content for this field //
////////////////////////////////////////////////////////////////////////////////
WorkflowsRegistry workflowsRegistry = WorkflowsRegistry.of(QContext.getQInstance());
WorkflowStepType workflowStepType = workflowsRegistry.getWorkflowStepType(UpdateInputRecordFieldStep.NAME);
if(workflowStepType != null)
{
List<QHelpContent> helpContents = new ArrayList<>();
for(QRecord record : helpContentRecords)
for(QFieldMetaData fieldMetaData : CollectionUtils.nonNullList(workflowStepType.getInputFields()))
{
HelpContent helpContent = new HelpContent(record);
helpContents.add(new QHelpContent(helpKey)
.withFormat(HelpFormat.valueOf(helpContent.getFormat()))
.withContent(helpContent.getContent())
.withRole(QHelpRole.valueOf(helpContent.getRole())));
if(fieldMetaData.getName().equals("value"))
{
updatedField.setHelpContents(fieldMetaData.getHelpContents());
}
}
updatedField.setHelpContents(helpContents);
}
}
catch(Exception e)
@@ -28,7 +28,6 @@ import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.fasterxml.jackson.core.type.TypeReference;
import com.kingsrook.qbits.workflows.definition.WorkflowStepType;
import com.kingsrook.qbits.workflows.definition.WorkflowStepTypeCategory;
@@ -37,14 +36,10 @@ import com.kingsrook.qbits.workflows.definition.WorkflowsRegistry;
import com.kingsrook.qbits.workflows.model.Workflow;
import com.kingsrook.qqq.backend.core.actions.processes.BackendStep;
import com.kingsrook.qqq.backend.core.actions.tables.GetAction;
import com.kingsrook.qqq.backend.core.actions.tables.QueryAction;
import com.kingsrook.qqq.backend.core.context.QContext;
import com.kingsrook.qqq.backend.core.exceptions.QException;
import com.kingsrook.qqq.backend.core.model.actions.processes.RunBackendStepInput;
import com.kingsrook.qqq.backend.core.model.actions.processes.RunBackendStepOutput;
import com.kingsrook.qqq.backend.core.model.actions.tables.query.QCriteriaOperator;
import com.kingsrook.qqq.backend.core.model.actions.tables.query.QFilterCriteria;
import com.kingsrook.qqq.backend.core.model.actions.tables.query.QQueryFilter;
import com.kingsrook.qqq.backend.core.model.data.QRecord;
import com.kingsrook.qqq.backend.core.model.helpcontent.HelpContent;
import com.kingsrook.qqq.backend.core.model.metadata.MetaDataProducerInterface;
@@ -53,6 +48,7 @@ import com.kingsrook.qqq.backend.core.model.metadata.code.QCodeReference;
import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldMetaData;
import com.kingsrook.qqq.backend.core.model.metadata.fields.QFieldType;
import com.kingsrook.qqq.backend.core.model.metadata.frontend.QFrontendFieldMetaData;
import com.kingsrook.qqq.backend.core.model.metadata.help.QHelpContent;
import com.kingsrook.qqq.backend.core.model.metadata.permissions.PermissionLevel;
import com.kingsrook.qqq.backend.core.model.metadata.permissions.QPermissionRules;
import com.kingsrook.qqq.backend.core.model.metadata.processes.QBackendStepMetaData;
@@ -122,28 +118,12 @@ public class GetWorkflowTypeDefinitionProcess implements BackendStep, MetaDataPr
throw new QException("Workflow type not found: " + workflowTypeName);
}
////////////////////////////////////////////////////////////////////////////////
// save any help content on current workflow and put back after customization //
////////////////////////////////////////////////////////////////////////////////
Map<String, List<QHelpContent>> helpContent = workflowType.getHelpContent();
workflowType = workflowType.customizeBasedOnWorkflow(workflowRecord);
/////////////////////////////////////////////////////////
// look for any 'top level' help content for workflows //
/////////////////////////////////////////////////////////
QQueryFilter filter = new QQueryFilter(new QFilterCriteria("key", QCriteriaOperator.STARTS_WITH, "workflow:"));
List<HelpContent> helpContents = QueryAction.execute(HelpContent.TABLE_NAME, HelpContent.class, filter);
/////////////////////////////////////////////////////
// add these helps to the workflow type if present //
/////////////////////////////////////////////////////
if(CollectionUtils.nullSafeHasContents(helpContents))
{
Map<String, HelpContent> helpContentMap = helpContents.stream().collect(Collectors.toMap(h -> h.getKey(), h -> h));
Map<String, List<HelpContent>> workflowTypeHelpContent = getWorkflowTypeHelpContent(helpContentMap);
workflowType.setHelpContent(workflowTypeHelpContent);
///////////////////////////////////////////
// reregister with the workflow registry //
///////////////////////////////////////////
WorkflowsRegistry.of(QContext.getQInstance()).registerWorkflowType(workflowType);
}
workflowType.setHelpContent(helpContent);
runBackendStepOutput.addValue("workflowType", workflowType);
////////////////////////////////////////////////////////////////////////////////