public async Task ProcessActiveWorksAsync(IServiceProvider serviceProvider, CancellationToken cancellationToken)
        {
            var depended = _workService.GetWorksWithTypeTypeDependency().ToList();

            if (depended.Any())
            {
                await ProcessWorksAsync(depended, serviceProvider, cancellationToken);

                return;
            }

            var children = _workService.GetChildrenForCompletedWorks().ToList();

            if (children.Any())
            {
                await ProcessWorksAsync(children, serviceProvider, cancellationToken);

                return;
            }

            var rootWorks = _workService.GetRootWorks().ToList();

            if (!rootWorks.Any())
            {
                Events.WorksForWorkerNotFound(_logger);
                return;
            }

            await ProcessWorksAsync(rootWorks, serviceProvider, cancellationToken);
        }