Example #1
0
        public async Task ExecuteAsync(BlobDetails blobInfo)
        {
            // Read status info
            var job = await statusStore.ReadStatusAsync(blobInfo.JobId);

            // Retreive blob
            job.Message      = "Reading file data...";
            job.JobStartTime = DateTime.UtcNow;
            await statusStore.UpdateStatusAsync(job);

            var fileData = await blobReader.ReadFileDataAsync(blobInfo.FullBlobPath);

            // Extract contents
            job.Message = "Extracting contents...";
            await statusStore.UpdateStatusAsync(job);

            var content = extractor.ExtractTextContents(fileData);

            // Push into search indexer
            job.Message = "Pushing contents into search index...";
            await statusStore.UpdateStatusAsync(job);

            await searchIndex.IndexTextContentAsync(blobInfo.DocumentId, content);

            // Ensure the document is availbale before attempting to run scoring
            var doesExist = await searchIndex.VerifyDocumentAvailable(blobInfo.DocumentId, 5);

            if (doesExist)
            {
                // Score document
                job.Message = "Scoring document...";
                await statusStore.UpdateStatusAsync(job);

                var categories = await docScorer.CategorizeDocument(blobInfo.DocumentId);

                // Mark workflow complete
                job.Categories = categories;
                job.IsComplete = true;
                job.JobEndTime = DateTime.UtcNow;
                job.Message    = "Workflow complete!!!";
                await statusStore.UpdateStatusAsync(job);
            }
        }