private async Task <IWorkflowBlueprint> GetWorkflowBlueprintAsync(WorkflowDefinition workflowDefinition)
            {
                var json = _serializer.Serialize(workflowDefinition);
                var deserializedWorkflowDefinition = _serializer.Deserialize <WorkflowDefinition>(json);

                return(await _materializer.CreateWorkflowBlueprintAsync(deserializedWorkflowDefinition));
            }
Пример #2
0
    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);
    }
Пример #3
0
        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))));
        }