@@ -70,6 +70,7 @@ public class WorkflowApplication implements AutoCloseable {
7070 private final Collection <EventPublisher > eventPublishers ;
7171 private final boolean lifeCycleCEPublishingEnabled ;
7272 private final WorkflowModelFactory modelFactory ;
73+ private final WorkflowModelFactory contextFactory ;
7374 private final WorkflowScheduler scheduler ;
7475 private final Map <String , WorkflowAdditionalObject <?>> additionalObjects ;
7576 private final ConfigManager configManager ;
@@ -93,6 +94,7 @@ private WorkflowApplication(Builder builder) {
9394 this .eventPublishers = builder .eventPublishers ;
9495 this .lifeCycleCEPublishingEnabled = builder .lifeCycleCEPublishingEnabled ;
9596 this .modelFactory = builder .modelFactory ;
97+ this .contextFactory = builder .contextFactory ;
9698 this .scheduler = builder .scheduler ;
9799 this .schedulerListener = builder .schedulerListener ;
98100 this .additionalObjects = builder .additionalObjects ;
@@ -175,6 +177,7 @@ public SchemaValidator getValidator(SchemaInline inline) {
175177 () -> new RuntimeDescriptor ("reference impl" , "1.0.0_alpha" , Collections .emptyMap ());
176178 private boolean lifeCycleCEPublishingEnabled = true ;
177179 private WorkflowModelFactory modelFactory ;
180+ private WorkflowModelFactory contextFactory ;
178181 private Map <String , WorkflowAdditionalObject <?>> additionalObjects = new HashMap <>();
179182 private SecretManager secretManager ;
180183 private ConfigManager configManager ;
@@ -273,6 +276,11 @@ public Builder withModelFactory(WorkflowModelFactory modelFactory) {
273276 return this ;
274277 }
275278
279+ public Builder withContextFactory (WorkflowModelFactory contextFactory ) {
280+ this .contextFactory = contextFactory ;
281+ return this ;
282+ }
283+
276284 public WorkflowApplication build () {
277285 if (modelFactory == null ) {
278286 modelFactory =
@@ -283,6 +291,9 @@ public WorkflowApplication build() {
283291 new IllegalStateException (
284292 "WorkflowModelFactory instance has to be set in WorkflowApplication or present in the classpath" ));
285293 }
294+ if (contextFactory == null ) {
295+ contextFactory = modelFactory ;
296+ }
286297 ServiceLoader .load (ExpressionFactory .class ).forEach (exprFactories ::add );
287298 if (schemaValidatorFactory == null ) {
288299 schemaValidatorFactory =
@@ -373,6 +384,10 @@ public WorkflowModelFactory modelFactory() {
373384 return modelFactory ;
374385 }
375386
387+ public WorkflowModelFactory contextFactory () {
388+ return contextFactory ;
389+ }
390+
376391 public RuntimeDescriptorFactory runtimeDescriptorFactory () {
377392 return runtimeDescriptorFactory ;
378393 }
0 commit comments