public async Task <IActionResult> ListInstances(
            string definitionId,
            WorkflowStatus status,
            CancellationToken cancellationToken)
        {
            var definition = await workflowDefinitionStore.GetByIdAsync(
                definitionId,
                VersionOptions.Latest,
                cancellationToken
                );

            if (definition == null)
            {
                return(NotFound());
            }

            var instances = await workflowInstanceStore
                            .ListByDefinitionAsync(definitionId, cancellationToken)
                            .ToListAsync();

            var model = new WorkflowInstanceListViewModel
            {
                WorkflowDefinition = definition,
                ReturnUrl          = Url.Action("Index", new { definitionId, status }),
                WorkflowInstances  = instances.Select(
                    x => new WorkflowInstanceListItemModel
                {
                    WorkflowInstance = x
                }
                    )
                                     .ToList()
            };

            return(PartialView("List", model));
        }
        private async Task <WorkflowDefinitionListDto> CreateWorkflowDefinitionListItemModelAsync(
            ElsaWorkflowDefinitionVersion workflowDefinition)
        {
            var instances = await _workflowInstanceStore
                            .ListByDefinitionAsync(workflowDefinition.DefinitionId)
                            .ToListAsync();

            return(new WorkflowDefinitionListDto
            {
                WorkflowDefinition = workflowDefinition,
                AbortedCount = instances.Count(x => x.Status == WorkflowStatus.Aborted),
                FaultedCount = instances.Count(x => x.Status == WorkflowStatus.Faulted),
                FinishedCount = instances.Count(x => x.Status == WorkflowStatus.Finished),
                ExecutingCount = instances.Count(x => x.Status == WorkflowStatus.Executing),
            });
        }
示例#3
0
        private async Task <WorkflowDefinitionListItemModel> CreateWorkflowDefinitionListItemModelAsync(
            WorkflowDefinitionVersion workflowDefinition, CancellationToken cancellationToken)
        {
            var instances = await _workflowInstanceStore
                            .ListByDefinitionAsync(workflowDefinition.DefinitionId, cancellationToken)
                            .ConfigureAwait(false);

            return(new WorkflowDefinitionListItemModel
            {
                WorkflowDefinition = workflowDefinition,
                AbortedCount = instances.Count(x => x.Status == WorkflowStatus.Aborted),
                FaultedCount = instances.Count(x => x.Status == WorkflowStatus.Faulted),
                FinishedCount = instances.Count(x => x.Status == WorkflowStatus.Finished),

                ExecutingCount = instances.Count(x => x.Status == WorkflowStatus.Executing),
            });
        }