1616package io .serverlessworkflow .impl ;
1717
1818import com .github .f4b6a3 .ulid .UlidCreator ;
19- import io .serverlessworkflow .api .types .Document ;
2019import io .serverlessworkflow .api .types .SchemaInline ;
2120import io .serverlessworkflow .api .types .Workflow ;
2221import io .serverlessworkflow .impl .events .EventConsumer ;
3635import java .util .Collection ;
3736import java .util .Collections ;
3837import java .util .Map ;
38+ import java .util .Optional ;
3939import java .util .ServiceLoader ;
4040import java .util .ServiceLoader .Provider ;
4141import java .util .concurrent .ConcurrentHashMap ;
@@ -52,9 +52,9 @@ public class WorkflowApplication implements AutoCloseable {
5252 private final ExpressionFactory exprFactory ;
5353 private final ResourceLoaderFactory resourceLoaderFactory ;
5454 private final SchemaValidatorFactory schemaValidatorFactory ;
55- private final WorkflowIdFactory idFactory ;
55+ private final WorkflowInstanceIdFactory idFactory ;
5656 private final Collection <WorkflowExecutionListener > listeners ;
57- private final Map <WorkflowId , WorkflowDefinition > definitions ;
57+ private final Map <WorkflowDefinitionId , WorkflowDefinition > definitions ;
5858 private final WorkflowPositionFactory positionFactory ;
5959 private final ExecutorServiceFactory executorFactory ;
6060 private final RuntimeDescriptorFactory runtimeDescriptorFactory ;
@@ -106,7 +106,7 @@ public Collection<EventPublisher> eventPublishers() {
106106 return eventPublishers ;
107107 }
108108
109- public WorkflowIdFactory idFactory () {
109+ public WorkflowInstanceIdFactory idFactory () {
110110 return idFactory ;
111111 }
112112
@@ -142,7 +142,7 @@ public SchemaValidator getValidator(SchemaInline inline) {
142142 private ResourceLoaderFactory resourceLoaderFactory = DefaultResourceLoaderFactory .get ();
143143 private SchemaValidatorFactory schemaValidatorFactory ;
144144 private WorkflowPositionFactory positionFactory = () -> new QueueWorkflowPosition ();
145- private WorkflowIdFactory idFactory = () -> UlidCreator .getMonotonicUlid ().toString ();
145+ private WorkflowInstanceIdFactory idFactory = () -> UlidCreator .getMonotonicUlid ().toString ();
146146 private ExecutorServiceFactory executorFactory = new DefaultExecutorServiceFactory ();
147147 private EventConsumer <?, ?> eventConsumer ;
148148 private Collection <EventPublisher > eventPublishers = new ArrayList <>();
@@ -192,7 +192,7 @@ public Builder withSchemaValidatorFactory(SchemaValidatorFactory factory) {
192192 return this ;
193193 }
194194
195- public Builder withIdFactory (WorkflowIdFactory factory ) {
195+ public Builder withIdFactory (WorkflowInstanceIdFactory factory ) {
196196 this .idFactory = factory ;
197197 return this ;
198198 }
@@ -249,15 +249,13 @@ public WorkflowApplication build() {
249249 }
250250 }
251251
252- private static record WorkflowId (String namespace , String name , String version ) {
253- static WorkflowId of (Document document ) {
254- return new WorkflowId (document .getNamespace (), document .getName (), document .getVersion ());
255- }
252+ public Optional <WorkflowDefinition > workflowDefinition (WorkflowDefinitionId workflowId ) {
253+ return Optional .ofNullable (definitions .get (workflowId ));
256254 }
257255
258256 public WorkflowDefinition workflowDefinition (Workflow workflow ) {
259257 return definitions .computeIfAbsent (
260- WorkflowId .of (workflow . getDocument () ), k -> WorkflowDefinition .of (this , workflow ));
258+ WorkflowDefinitionId .of (workflow ), k -> WorkflowDefinition .of (this , workflow ));
261259 }
262260
263261 @ Override
0 commit comments