private async Task <IWorkflowBlueprint> GetWorkflowBlueprintAsync(WorkflowDefinition workflowDefinition) { var json = _serializer.Serialize(workflowDefinition); var deserializedWorkflowDefinition = _serializer.Deserialize <WorkflowDefinition>(json); return(await _materializer.CreateWorkflowBlueprintAsync(deserializedWorkflowDefinition)); }
private async Task <IWorkflowBlueprint?> TryMaterializeBlueprintAsync(WorkflowDefinition workflowDefinition, CancellationToken cancellationToken) { try { return(await _workflowBlueprintMaterializer.CreateWorkflowBlueprintAsync(workflowDefinition, cancellationToken)); } catch (Exception e) { _logger.LogWarning(e, "Failed to materialize workflow definition {WorkflowDefinitionId} with version {WorkflowDefinitionVersion}", workflowDefinition.DefinitionId, workflowDefinition.Version); } return(null); }
public override async IAsyncEnumerable <IWorkflowBlueprint> GetWorkflowsAsync([EnumeratorCancellation] CancellationToken cancellationToken) { var blobs = await _storage.ListFilesAsync(new ListOptions(), cancellationToken); foreach (var blob in blobs) { var json = await _storage.ReadTextAsync(blob.FullPath, Encoding.UTF8, cancellationToken); var model = _contentSerializer.Deserialize <WorkflowDefinition>(json); var blueprint = await _workflowBlueprintMaterializer.CreateWorkflowBlueprintAsync(model, cancellationToken); yield return(blueprint); } }
protected override async ValueTask <IEnumerable <IWorkflowBlueprint> > OnGetWorkflowsAsync(CancellationToken cancellationToken) { var workflowDefinitions = await _workflowDefinitionStore.FindManyAsync(Specification <WorkflowDefinition> .Identity, cancellationToken : cancellationToken); return(await Task.WhenAll(workflowDefinitions.Select(async x => await _workflowBlueprintMaterializer.CreateWorkflowBlueprintAsync(x, cancellationToken)))); }