public async Task <ActionResult <PagedList <WorkflowDefinitionSummaryModel> > > Handle( [FromQuery] string?ids, [FromQuery] string?searchTerm = default, int?page = default, int?pageSize = default, VersionOptions?version = default, CancellationToken cancellationToken = default) { var tenantId = await _tenantAccessor.GetTenantIdAsync(cancellationToken); version ??= VersionOptions.Latest; var specification = GetSpecification(ids, version.Value).And(new TenantSpecification <WorkflowDefinition>(tenantId)); if (!string.IsNullOrWhiteSpace(searchTerm)) { specification = specification.And(new WorkflowDefinitionSearchTermSpecification(searchTerm)); } var totalCount = await _workflowDefinitionStore.CountAsync(specification, cancellationToken); var paging = page == null || pageSize == null ? default : Paging.Page(page.Value, pageSize.Value); var items = await _workflowDefinitionStore.FindManyAsync(specification, new OrderBy <WorkflowDefinition>(x => x.Name !, SortDirection.Ascending), paging, cancellationToken); var summaries = _mapper.Map <IList <WorkflowDefinitionSummaryModel> >(items); var pagedList = new PagedList <WorkflowDefinitionSummaryModel>(summaries, page, pageSize, totalCount); return(Json(pagedList, SerializationHelper.GetSettingsForWorkflowDefinition())); }
public static bool WithVersion(this WorkflowDefinition workflowDefinition, VersionOptions?version = default) { var versionOption = version ?? VersionOptions.Latest; if (versionOption.IsDraft) { return(!workflowDefinition.IsPublished); } if (versionOption.IsLatest) { return(workflowDefinition.IsLatest); } if (versionOption.IsPublished) { return(workflowDefinition.IsPublished); } if (versionOption.IsLatestOrPublished) { return(workflowDefinition.IsPublished || workflowDefinition.IsLatest); } if (versionOption.Version > 0) { return(workflowDefinition.Version == versionOption.Version); } return(true); }
public async Task <IActionResult> Handle(VersionOptions?version = default, CancellationToken cancellationToken = default) { version ??= VersionOptions.Latest; var tenantId = await _tenantAccessor.GetTenantIdAsync(cancellationToken); var workflowBlueprints = await ListAllAsync(tenantId, version.Value, cancellationToken).OrderBy(x => x.DisplayName ?? x.Name ?? "(Untitled)").ToListAsync(cancellationToken); var model = _mapper.Map <IEnumerable <WorkflowBlueprintSummaryModel> >(workflowBlueprints).ToList(); return(Ok(model).ConfigureForWorkflowDefinition()); }
public async Task <ActionResult <WorkflowBlueprintModel> > Handle(string id, VersionOptions?versionOptions = default, CancellationToken cancellationToken = default) { versionOptions ??= VersionOptions.Latest; var workflowBlueprint = await _workflowRegistry.GetAsync(id, null, versionOptions.Value, cancellationToken, true); if (workflowBlueprint == null) { return(NotFound()); } var model = await _workflowBlueprintMapper.MapAsync(workflowBlueprint, cancellationToken); return(Json(model, _contentSerializer.GetSettings())); }
internal override int CalculateVersionHeight(VersionOptions?committedVersion, VersionOptions?workingVersion) { var headCommitVersion = committedVersion?.Version ?? SemVer0; if (IsVersionFileChangedInWorkingTree(committedVersion, workingVersion)) { var workingCopyVersion = workingVersion?.Version?.Version; if (workingCopyVersion is null || !workingCopyVersion.Equals(headCommitVersion)) { // The working copy has changed the major.minor version. // So by definition the version height is 0, since no commit represents it yet. return(0); } } return(LibGit2GitExtensions.GetVersionHeight(this)); }
internal static Version GetIdAsVersionHelper(this Commit?commit, VersionOptions?versionOptions, int versionHeight) { var baseVersion = versionOptions?.Version?.Version ?? Version0; int buildNumber = baseVersion.Build; int revision = baseVersion.Revision; // Don't use the ?? coalescing operator here because the position property getters themselves can return null, which should NOT be overridden with our default. // The default value is only appropriate if versionOptions itself is null. var versionHeightPosition = versionOptions is not null ? versionOptions.VersionHeightPosition : SemanticVersion.Position.Build; var commitIdPosition = versionOptions is not null ? versionOptions.GitCommitIdPosition : SemanticVersion.Position.Revision; // The compiler (due to WinPE header requirements) only allows 16-bit version components, // and forbids 0xffff as a value. if (versionHeightPosition.HasValue) { int adjustedVersionHeight = versionHeight == 0 ? 0 : versionHeight + (versionOptions?.VersionHeightOffset ?? 0); Verify.Operation(adjustedVersionHeight <= MaximumBuildNumberOrRevisionComponent, "Git height is {0}, which is greater than the maximum allowed {0}.", adjustedVersionHeight, MaximumBuildNumberOrRevisionComponent); switch (versionHeightPosition.Value) { case SemanticVersion.Position.Build: buildNumber = adjustedVersionHeight; break; case SemanticVersion.Position.Revision: revision = adjustedVersionHeight; break; } } if (commitIdPosition.HasValue) { switch (commitIdPosition.Value) { case SemanticVersion.Position.Revision: revision = commit is object ?Math.Min(MaximumBuildNumberOrRevisionComponent, commit.GetTruncatedCommitIdAsUInt16()) : 0; break; } } return(VersionExtensions.Create(baseVersion.Major, baseVersion.Minor, buildNumber, revision)); }
public async Task <WorkflowDefinition?> GetDraftAsync(string workflowDefinitionId, VersionOptions?versionOptions = default, CancellationToken cancellationToken = default) { var definition = await _workflowDefinitionStore.FindByDefinitionIdAsync( workflowDefinitionId, versionOptions ?? VersionOptions.Latest, cancellationToken); if (definition == null) { return(null); } if (definition.IsLatest && !definition.IsPublished) { return(definition); } var latest = definition.IsLatest ? definition : (await _workflowDefinitionStore.FindByDefinitionIdAsync(workflowDefinitionId, VersionOptions.Latest, cancellationToken)); if (latest == null) { latest = (await _workflowDefinitionStore.FindManyAsync(new Persistence.Specifications.WorkflowDefinitions.WorkflowDefinitionIdSpecification(workflowDefinitionId, VersionOptions.All), new OrderBy <WorkflowDefinition>(x => x.Version, SortDirection.Descending), new Paging(0, 1), cancellationToken)).FirstOrDefault(); if (latest != null) { latest.IsLatest = true; return(latest); } } var draft = _cloner.Clone(definition); draft.Id = _idGenerator.Generate(); draft.IsPublished = false; draft.IsLatest = true; draft.CreatedAt = _clock.GetCurrentInstant(); draft.Version = latest != null ? latest.Version + 1 : 1; return(draft); }
public static Task <PagedList <WorkflowBlueprintSummary> > ListAsync(this IWorkflowRegistryService service, int?page = default, int?pageSize = default, VersionOptions?versionOptions = default) => service.ListAsync(new ListWorkflowBlueprintsRequest(page, pageSize, versionOptions));
internal override Version GetIdAsVersion(VersionOptions?committedVersion, VersionOptions?workingVersion, int versionHeight) => throw new NotImplementedException();
public async Task <IActionResult> Handle(string providerName, int?page = default, int?pageSize = default, VersionOptions?version = default, CancellationToken cancellationToken = default) { var workflowProvider = _workflowProviders.FirstOrDefault(x => x.GetType().Name == providerName); if (workflowProvider == null) { return(BadRequest(new { Error = $"Unknown workflow provider: {providerName}" })); } version ??= VersionOptions.Latest; var tenantId = await _tenantAccessor.GetTenantIdAsync(cancellationToken); var skip = page * pageSize; var workflowBlueprints = await workflowProvider.ListAsync(version.Value, skip, pageSize, tenantId, cancellationToken).ToListAsync(cancellationToken); var totalCount = await workflowProvider.CountAsync(version.Value, tenantId, cancellationToken); var mappedItems = _mapper.Map <IEnumerable <WorkflowBlueprintSummaryModel> >(workflowBlueprints).ToList(); var model = new PagedList <WorkflowBlueprintSummaryModel>(mappedItems, page, pageSize, totalCount); return(Ok(model).ConfigureForWorkflowDefinition()); }
public async Task <ActionResult <PagedList <WorkflowDefinitionSummaryModel> > > Handle(int?page = default, int?pageSize = default, VersionOptions?version = default, CancellationToken cancellationToken = default) { version ??= VersionOptions.Latest; var specification = new VersionOptionsSpecification(version.Value); var totalCount = await _workflowDefinitionStore.CountAsync(specification, cancellationToken); var paging = page == null || pageSize == null ? default : Paging.Page(page.Value, pageSize.Value); var items = await _workflowDefinitionStore.FindManyAsync(specification, paging: paging, cancellationToken : cancellationToken); var summaries = _mapper.Map <IList <WorkflowDefinitionSummaryModel> >(items); var pagedList = new PagedList <WorkflowDefinitionSummaryModel>(summaries, page, pageSize, totalCount); return(Json(pagedList, _serializer.GetSettings())); }
internal override int CalculateVersionHeight(VersionOptions?committedVersion, VersionOptions?workingVersion) => 0;
public static async Task <WorkflowDefinition> GetByIdAsync(this IWorkflowDefinitionService service, string workflowDefinitionId, VersionOptions?versionOptions = default) => await service.GetByIdAsync(new GetWorkflowDefinitionByIdRequest(workflowDefinitionId, versionOptions));
public async Task <ActionResult <WorkflowBlueprintModel> > Handle(string id, VersionOptions?versionOptions = default, CancellationToken cancellationToken = default) { versionOptions ??= VersionOptions.Latest; var workflowBlueprint = await _workflowRegistry.FindAsync(id, versionOptions.Value, default, cancellationToken);
public ManyWorkflowDefinitionIdsSpecification(IEnumerable <string> ids, VersionOptions?versionOptions = default) { Ids = ids; VersionOptions = versionOptions; }
internal override System.Version GetIdAsVersion(VersionOptions?committedVersion, VersionOptions?workingVersion, int versionHeight) { VersionOptions?version = IsVersionFileChangedInWorkingTree(committedVersion, workingVersion) ? workingVersion : committedVersion; return(this.Commit.GetIdAsVersionHelper(version, versionHeight)); }
public WorkflowDefinitionTagSpecification(string tag, VersionOptions?versionOptions = default, string?tenantId = default) { Tag = tag; VersionOptions = versionOptions; }
public async Task <IActionResult> Handle(string workflowDefinitionId, string?context = default, VersionOptions?version = default, CancellationToken cancellationToken = default) { version ??= VersionOptions.Latest; var workflowDefinition = await _workflowDefinitionStore.FindByDefinitionIdAsync(workflowDefinitionId, version.Value, cancellationToken); var typeDefinitions = await _typeScriptDefinitionService.GenerateTypeScriptDefinitionsAsync(workflowDefinition, context, cancellationToken); var fileName = $"elsa.{workflowDefinitionId}.d.ts"; var data = Encoding.UTF8.GetBytes(typeDefinitions); return(File(data, "application/x-typescript", fileName)); }
public ListWorkflowBlueprintsRequest(int?page, int?pageSize, VersionOptions?versionOptions) { Page = page; PageSize = pageSize; VersionOptions = versionOptions; }
public static async Task <PagedList <WorkflowDefinition> > ListAsync(this IWorkflowDefinitionService service, int?page = default, int?pageSize = default, VersionOptions?versionOptions = default) => await service.ListAsync(new ListWorkflowDefinitionsRequest(page, pageSize, versionOptions));
public async Task <ActionResult <PagedList <WorkflowBlueprintSummaryModel> > > Handle(int?page = default, int?pageSize = default, VersionOptions?version = default, CancellationToken cancellationToken = default) { version ??= VersionOptions.LatestOrPublished; var workflowBlueprints = await _workflowRegistry.FindManyAsync(x => x.WithVersion(version.Value), cancellationToken).ToList(); var totalCount = workflowBlueprints.Count; var skip = page * pageSize; var items = workflowBlueprints.AsEnumerable(); if (skip != null) { items = items.Skip(skip.Value); } if (pageSize != null) { items = items.Take(pageSize.Value); } using var scope = _serviceProvider.CreateScope(); var mappedItems = _mapper.Map <IEnumerable <WorkflowBlueprintSummaryModel> >(items).ToList(); return(new PagedList <WorkflowBlueprintSummaryModel>(mappedItems, page, pageSize, totalCount)); }
public WorkflowDefinitionNameSpecification(string name, VersionOptions?versionOptions = default, string?tenantId = default) { Name = name; VersionOptions = versionOptions; }
public static IQueryable <WorkflowDefinition> WithVersion(this IQueryable <WorkflowDefinition> query, VersionOptions?version = default) { var versionOption = version ?? VersionOptions.Latest; if (versionOption.IsDraft) { return(query.Where(x => !x.IsPublished)); } if (versionOption.IsLatest) { return(query.Where(x => x.IsLatest)); } if (versionOption.IsPublished) { return(query.Where(x => x.IsPublished)); } if (versionOption.IsLatestOrPublished) { return(query.Where(x => x.IsPublished || x.IsLatest)); } if (versionOption.Version > 0) { return(query.Where(x => x.Version == versionOption.Version)); } return(query); }
public WorkflowDefinitionIdSpecification(string id, VersionOptions?versionOptions = default) { Id = id; VersionOptions = versionOptions; }
public GetWorkflowDefinitionByIdRequest(string workflowDefinitionId, VersionOptions?versionOptions) { WorkflowDefinitionId = workflowDefinitionId; VersionOptions = versionOptions; }
public static Expression <Func <WorkflowDefinition, bool> > WithVersion(this Expression <Func <WorkflowDefinition, bool> > predicate, VersionOptions?version = default) { var versionOption = version ?? VersionOptions.Latest; if (versionOption.IsDraft) { return(predicate.And(x => !x.IsPublished)); } if (versionOption.IsLatest) { return(predicate.And(x => x.IsLatest)); } if (versionOption.IsPublished) { return(predicate.And(x => x.IsPublished)); } if (versionOption.IsLatestOrPublished) { return(predicate.And(x => x.IsPublished || x.IsLatest)); } if (versionOption.Version > 0) { return(predicate.And(x => x.Version == versionOption.Version)); } return(predicate); }
public async Task <ActionResult <WorkflowDefinitionSummaryModel[]> > Handle([RequiredFromQuery] string?ids, VersionOptions?version = default, CancellationToken cancellationToken = default) { IList <WorkflowDefinitionSummaryModel> summaries = new List <WorkflowDefinitionSummaryModel>(); if (!string.IsNullOrWhiteSpace(ids)) { version ??= VersionOptions.Latest; var splitIds = ids.Split(',', StringSplitOptions.RemoveEmptyEntries); var specification = new VersionOptionsSpecification(version.Value).And(new ManyWorkflowDefinitionIdsSpecification(splitIds)); var items = await _workflowDefinitionStore.FindManyAsync(specification, cancellationToken : cancellationToken); summaries = _mapper.Map <IList <WorkflowDefinitionSummaryModel> >(items); } return(Json(new ListModel <WorkflowDefinitionSummaryModel>(summaries), _serializer.GetSettings())); }