Exemplo n.º 1
0
        public async Task <WorkflowDefinition> PublishAsync(WorkflowDefinition workflowDefinition, CancellationToken cancellationToken = default)
        {
            var publishedDefinition = await _workflowDefinitionStore.FindByDefinitionIdAsync(
                workflowDefinition.DefinitionId,
                VersionOptions.Published,
                cancellationToken);

            if (publishedDefinition != null)
            {
                publishedDefinition.IsPublished = false;
                publishedDefinition.IsLatest    = false;
                await _workflowDefinitionStore.SaveAsync(publishedDefinition, cancellationToken);
            }

            if (workflowDefinition.IsPublished)
            {
                workflowDefinition.Version++;
            }
            else
            {
                workflowDefinition.IsPublished = true;
            }

            workflowDefinition.IsLatest = true;
            workflowDefinition          = Initialize(workflowDefinition);

            await _mediator.Publish(new WorkflowDefinitionPublishing(workflowDefinition), cancellationToken);

            await _workflowDefinitionStore.SaveAsync(workflowDefinition, cancellationToken);

            await _mediator.Publish(new WorkflowDefinitionPublished(workflowDefinition), cancellationToken);

            return(workflowDefinition);
        }
Exemplo n.º 2
0
        public async Task <WorkflowDefinition> PublishAsync(WorkflowDefinition workflowDefinition, CancellationToken cancellationToken = default)
        {
            var definitionId = workflowDefinition.DefinitionId;

            // Reset current latest and published definitions.
            var publishedAndOrLatestDefinitions = await _workflowDefinitionStore.FindManyAsync(new LatestOrPublishedWorkflowDefinitionIdSpecification(definitionId), cancellationToken : cancellationToken).ToList();

            foreach (var publishedAndOrLatestDefinition in publishedAndOrLatestDefinitions)
            {
                publishedAndOrLatestDefinition.IsPublished = false;
                publishedAndOrLatestDefinition.IsLatest    = false;
                await _workflowDefinitionStore.SaveAsync(publishedAndOrLatestDefinition, cancellationToken);
            }

            if (workflowDefinition.IsPublished)
            {
                workflowDefinition.Version++;
            }
            else
            {
                workflowDefinition.IsPublished = true;
            }

            workflowDefinition.IsLatest = true;
            workflowDefinition          = Initialize(workflowDefinition);

            await _mediator.Publish(new WorkflowDefinitionPublishing(workflowDefinition), cancellationToken);

            await _workflowDefinitionStore.SaveAsync(workflowDefinition, cancellationToken);

            await _mediator.Publish(new WorkflowDefinitionPublished(workflowDefinition), cancellationToken);

            return(workflowDefinition);
        }
Exemplo n.º 3
0
        public async Task <WorkflowDefinitionVersion> PublishAsync(
            WorkflowDefinitionVersion workflowDefinition,
            CancellationToken cancellationToken)
        {
            var definition = mapper.Map <WorkflowDefinitionVersion>(workflowDefinition);

            var publishedDefinition = await store.GetByIdAsync(
                definition.DefinitionId,
                VersionOptions.Published,
                cancellationToken);

            if (publishedDefinition != null)
            {
                publishedDefinition.IsPublished = false;
                publishedDefinition.IsLatest    = false;
                await store.UpdateAsync(publishedDefinition, cancellationToken);
            }

            if (definition.IsPublished)
            {
                definition.Id = idGenerator.Generate();
                definition.Version++;
            }
            else
            {
                definition.IsPublished = true;
            }

            definition.IsLatest = true;
            definition          = Initialize(definition);

            await store.SaveAsync(definition, cancellationToken);

            return(definition);
        }
        public async Task <WorkflowDefinitionVersion> SaveAsync(WorkflowDefinitionVersion definition, CancellationToken cancellationToken = default)
        {
            var savedDefinition = await decoratedStore.SaveAsync(definition, cancellationToken);

            await PublishUpdateEventAsync(cancellationToken);

            return(savedDefinition);
        }
Exemplo n.º 5
0
        public async Task SaveAsync(WorkflowDefinition entity, CancellationToken cancellationToken = default)
        {
            await _mediator.Publish(new WorkflowDefinitionSaving(entity), cancellationToken);

            await _store.SaveAsync(entity, cancellationToken);

            await _mediator.Publish(new WorkflowDefinitionSaved(entity), cancellationToken);
        }
Exemplo n.º 6
0
 public async Task SaveAsync(WorkflowDefinition entity, CancellationToken cancellationToken)
 {
     entity = Initialize(entity);
     await _store.SaveAsync(entity, cancellationToken);
 }