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); }
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); }
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); }
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); }
public async Task SaveAsync(WorkflowDefinition entity, CancellationToken cancellationToken) { entity = Initialize(entity); await _store.SaveAsync(entity, cancellationToken); }