Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
a100b4f
Add new ActionType enum values
labkey-susanh Feb 19, 2026
2964087
update messaging (though it won't be used currently)
labkey-susanh Feb 19, 2026
e603534
Merge remote-tracking branch 'origin/develop' into fb_deriveActions
labkey-susanh Feb 24, 2026
0ab1cc5
Merge remote-tracking branch 'origin/develop' into fb_deriveActions
labkey-susanh Feb 25, 2026
e279f3f
Merge remote-tracking branch 'origin/develop' into fb_deriveActions
labkey-susanh Feb 26, 2026
f738772
Merge remote-tracking branch 'origin/develop' into fb_deriveActions
labkey-susanh Mar 2, 2026
b801f07
Merge remote-tracking branch 'origin/develop' into fb_deriveActions
labkey-susanh Mar 4, 2026
383bca5
Merge remote-tracking branch 'origin/develop' into fb_deriveActions
labkey-susanh Mar 4, 2026
bf10a8f
Add samples to jobs if created from job action (and use more streams)
labkey-susanh Mar 4, 2026
6789313
Updates for passing action and job ids to server side through extraCo…
labkey-susanh Mar 5, 2026
9c111b6
Config parameters for file import
labkey-susanh Mar 5, 2026
c77302d
Merge remote-tracking branch 'origin/develop' into fb_deriveActions
labkey-susanh Mar 5, 2026
7ad3364
Remove obsolete check for extraContext
labkey-susanh Mar 9, 2026
469150b
Merge remote-tracking branch 'origin/develop' into fb_deriveActions
labkey-susanh Mar 10, 2026
b352b5f
Merge remote-tracking branch 'origin/develop' into fb_deriveActions
labkey-susanh Mar 10, 2026
4945193
Merge remote-tracking branch 'origin/develop' into fb_deriveActions
labkey-susanh Mar 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 23 additions & 2 deletions api/src/org/labkey/api/workflow/WorkflowService.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,27 @@
package org.labkey.api.workflow;

import jakarta.servlet.http.HttpServletRequest;
import org.jetbrains.annotations.NotNull;
import org.labkey.api.data.Container;import org.labkey.api.security.User;import org.labkey.api.services.ServiceRegistry;
import org.labkey.api.data.Container;
import org.labkey.api.dataiterator.DataIteratorBuilder;
import org.labkey.api.security.User;import org.labkey.api.services.ServiceRegistry;

import java.util.Map;

public interface WorkflowService
{
enum WorkflowConfigs
{
ActionId,
JobId,
}

enum ActionType
{
AssayImport("assay types", "Imported assay data");
AssayImport("assay types", "Imported assay data"),
DeriveSamples("derivation sample type parameters", "Derived samples"),
AliquotSamples("aliquot sample type parameters", "Aliquot samples"),
PoolSamples("pooling sample type parameters", "Pooled samples");

private final String _inputDescription;
private final String _auditMessage;
Expand Down Expand Up @@ -39,6 +53,13 @@ static WorkflowService get()
return ServiceRegistry.get().getService(WorkflowService.class);
}

void populateConfigParams(Map<String, Object> provided, Map<Enum, Object> configParameters);

void populateConfigParams(HttpServletRequest request, Map<Enum, Object> configParameters);
void onActionComplete(@NotNull Container container, @NotNull User user, @NotNull Long actionId);
void onActionComplete(@NotNull Container container, @NotNull User user, @NotNull Long taskId, @NotNull ActionType actionType);

DataIteratorBuilder getSampleCreationDataIteratorBuilder(DataIteratorBuilder data, Container container, User user);

DataIteratorBuilder getActionAuditDataIteratorBuilder(DataIteratorBuilder data, Container container, User user);
}
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@
import org.labkey.api.util.StringUtilsLabKey;
import org.labkey.api.util.logging.LogHelper;
import org.labkey.api.view.UnauthorizedException;
import org.labkey.api.workflow.WorkflowService;
import org.labkey.experiment.ExpDataIterators;
import org.labkey.experiment.SampleTypeAuditProvider;

Expand Down Expand Up @@ -416,6 +417,14 @@ public DataIteratorBuilder createImportDIB(User user, Container container, DataI

if (sampleType.getAutoLinkTargetContainer() != null && StudyPublishService.get() != null && !context.getInsertOption().updateOnly/* TODO support link to study on update? */)
dib = LoggingDataIterator.wrap(new ExpDataIterators.AutoLinkToStudyDataIteratorBuilder(dib, getSchema(), userSchema.getContainer(), userSchema.getUser(), sampleType));
if (WorkflowService.get() != null)
{
if (context.getConfigParameter(WorkflowService.WorkflowConfigs.ActionId) != null)
{
dib = WorkflowService.get().getSampleCreationDataIteratorBuilder(dib, userSchema.getContainer(), userSchema.getUser());
dib = WorkflowService.get().getActionAuditDataIteratorBuilder(dib, userSchema.getContainer(), userSchema.getUser());
}
}
}
return dib;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,7 @@
import org.labkey.api.view.WebPartView;
import org.labkey.api.view.template.ClientDependency;
import org.labkey.api.view.template.PageConfig;
import org.labkey.api.workflow.WorkflowService;
import org.labkey.experiment.ChooseExperimentTypeBean;
import org.labkey.experiment.ConfirmDeleteView;
import org.labkey.experiment.CustomPropertiesView;
Expand Down Expand Up @@ -4448,6 +4449,8 @@ protected int importData(
tInfo = ExperimentService.get().createMaterialTable(new SamplesSchema(getUser(), getContainer()), ContainerFilter.current(this), null);
updateService = tInfo.getUpdateService();
}
if (WorkflowService.get() != null)
WorkflowService.get().populateConfigParams(getViewContext().getRequest(), _context.getConfigParameters());

int count = importData(dl, tInfo, updateService, _context, auditEvent, getUser(), getContainer());

Expand Down
5 changes: 4 additions & 1 deletion query/src/org/labkey/query/controllers/QueryController.java
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,7 @@
import org.labkey.api.view.ViewServlet;
import org.labkey.api.view.WebPartView;
import org.labkey.api.view.template.PageConfig;
import org.labkey.api.workflow.WorkflowService;
import org.labkey.api.writer.HtmlWriter;
import org.labkey.api.writer.ZipFile;
import org.labkey.data.xml.ColumnType;
Expand Down Expand Up @@ -4659,11 +4660,13 @@ protected JSONObject executeJson(JSONObject json, CommandType commandType, boole
}
}

Map<String, Object> extraContext = json.has("extraContext") ? json.getJSONObject("extraContext").toMap() : new CaseInsensitiveHashMap<>();
Map<String, Object> extraContext = json.has("extraContext") ? new CaseInsensitiveHashMap(json.getJSONObject("extraContext").toMap()) : new CaseInsensitiveHashMap<>();

Map<String, Object> auditDetails = json.has("auditDetails") ? json.getJSONObject("auditDetails").toMap() : new CaseInsensitiveHashMap<>();

Map<Enum, Object> configParameters = new HashMap<>();
if (WorkflowService.get() != null)
WorkflowService.get().populateConfigParams(extraContext, configParameters);

// Check first if the audit behavior has been defined for the table either in code or through XML.
// If not defined there, check for the audit behavior defined in the action form (json).
Expand Down
Loading