Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ public class WorkflowApplication implements AutoCloseable {
private final Collection<EventPublisher> eventPublishers;
private final boolean lifeCycleCEPublishingEnabled;
private final WorkflowModelFactory modelFactory;
private final WorkflowModelFactory contextFactory;
private final WorkflowScheduler scheduler;
private final Map<String, WorkflowAdditionalObject<?>> additionalObjects;
private final ConfigManager configManager;
Expand All @@ -93,6 +94,7 @@ private WorkflowApplication(Builder builder) {
this.eventPublishers = builder.eventPublishers;
this.lifeCycleCEPublishingEnabled = builder.lifeCycleCEPublishingEnabled;
this.modelFactory = builder.modelFactory;
this.contextFactory = builder.contextFactory;
this.scheduler = builder.scheduler;
this.schedulerListener = builder.schedulerListener;
this.additionalObjects = builder.additionalObjects;
Expand Down Expand Up @@ -175,6 +177,7 @@ public SchemaValidator getValidator(SchemaInline inline) {
() -> new RuntimeDescriptor("reference impl", "1.0.0_alpha", Collections.emptyMap());
private boolean lifeCycleCEPublishingEnabled = true;
private WorkflowModelFactory modelFactory;
private WorkflowModelFactory contextFactory;
private Map<String, WorkflowAdditionalObject<?>> additionalObjects = new HashMap<>();
private SecretManager secretManager;
private ConfigManager configManager;
Expand Down Expand Up @@ -273,6 +276,11 @@ public Builder withModelFactory(WorkflowModelFactory modelFactory) {
return this;
}

public Builder withContextFactory(WorkflowModelFactory contextFactory) {
this.contextFactory = contextFactory;
return this;
}

public WorkflowApplication build() {
if (modelFactory == null) {
modelFactory =
Expand All @@ -283,6 +291,9 @@ public WorkflowApplication build() {
new IllegalStateException(
"WorkflowModelFactory instance has to be set in WorkflowApplication or present in the classpath"));
}
if (contextFactory == null) {
contextFactory = modelFactory;
}
ServiceLoader.load(ExpressionFactory.class).forEach(exprFactories::add);
if (schemaValidatorFactory == null) {
schemaValidatorFactory =
Expand Down Expand Up @@ -373,6 +384,10 @@ public WorkflowModelFactory modelFactory() {
return modelFactory;
}

public WorkflowModelFactory contextFactory() {
return contextFactory;
}

public RuntimeDescriptorFactory runtimeDescriptorFactory() {
return runtimeDescriptorFactory;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public class WorkflowContext implements WorkflowContextData {
WorkflowContext(WorkflowDefinition definition, WorkflowMutableInstance instance) {
this.definition = definition;
this.instance = instance;
this.context = definition.application().modelFactory().fromNull();
this.context = definition.application().contextFactory().fromNull();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import io.serverlessworkflow.api.types.UriTemplate;
import io.serverlessworkflow.api.types.Workflow;
import io.serverlessworkflow.impl.expressions.ExpressionDescriptor;
import io.serverlessworkflow.impl.expressions.ExpressionFactory;
import io.serverlessworkflow.impl.expressions.ExpressionUtils;
import io.serverlessworkflow.impl.resources.ResourceLoader;
import io.serverlessworkflow.impl.schema.SchemaValidator;
Expand Down Expand Up @@ -77,7 +78,9 @@ public static Optional<WorkflowFilter> buildWorkflowFilter(WorkflowApplication a

public static Optional<WorkflowFilter> buildWorkflowFilter(WorkflowApplication app, ExportAs as) {
return as != null
? Optional.of(buildFilterFromStrObject(app, as.getString(), as.getObject()))
? Optional.of(
buildFilterFromStrObject(
app.expressionFactory(), app.contextFactory(), as.getString(), as.getObject()))
: Optional.empty();
}

Expand Down Expand Up @@ -118,8 +121,12 @@ private static WorkflowValueResolver<String> toString(String literal) {

private static WorkflowFilter buildFilterFromStrObject(
WorkflowApplication app, String str, Object object) {
return app.expressionFactory()
.buildFilter(new ExpressionDescriptor(str, object), app.modelFactory());
return buildFilterFromStrObject(app.expressionFactory(), app.modelFactory(), str, object);
}

private static WorkflowFilter buildFilterFromStrObject(
ExpressionFactory exprFactory, WorkflowModelFactory modelFactory, String str, Object object) {
return exprFactory.buildFilter(new ExpressionDescriptor(str, object), modelFactory);
}

public static WorkflowValueResolver<Map<String, Object>> buildMapResolver(
Expand Down