/// <summary> /// Retrieves a batch of records from the manager queue /// </summary> /// <returns></returns> public IEnumerable <ManagerQueueRecord> GetNextBatchOfRecords() { var jobs = new List <ManagerQueueRecord>(); var table = SqlQueryHelper.RetrieveNextBatchInManagerQueue(EddsDbContext, Constant.Sizes.MANAGER_QUEUE_BATCH_SIZE, AgentId); HasRecords = TableHasRows(table); if (HasRecords) { foreach (DataRow row in table.Rows) { // Gives the record a sqlhelper, context and agentID so it may execute on the DB itself var record = new ManagerQueueRecord(SqlQueryHelper, EddsDbContext, row); // Confirm there is a job if (record.Exists) { jobs.Add(record); } } Records = jobs.AsEnumerable(); } else { // Return null if there are no jobs jobs = null; } return(jobs); }
/// <summary> /// Converts the batch of documents and the manager queue into a worker queue data table /// ready for Sql Bulk Insert. /// </summary> /// <param name="results"></param> /// <param name="managerQueueJob"></param> /// <returns></returns> public DataTable ConvertToWorkerQueueTable(QueryResultSet <Document> results, ManagerQueueRecord managerQueueJob) { if (HasNoResults(results)) { return(null); } var batchTable = new DataTable(); batchTable.Columns.Add("TimeStampUTC", typeof(DateTime)); batchTable.Columns.Add("WorkspaceArtifactID", typeof(Int32)); batchTable.Columns.Add("QueueStatus", typeof(Int32)); batchTable.Columns.Add("AgentID", typeof(Int32)); batchTable.Columns.Add("ExtractorSetArtifactID", typeof(Int32)); batchTable.Columns.Add("DocumentArtifactID", typeof(Int32)); batchTable.Columns.Add("ExtractorProfileArtifactID", typeof(Int32)); batchTable.Columns.Add("SourceLongTextFieldArtifactID", typeof(Int32)); foreach (var result in results.Results) { batchTable.Rows.Add( DateTime.UtcNow, // TimeStampUTC managerQueueJob.WorkspaceArtifactId, // WorkspaceArtifactID Constant.QueueStatus.NotStarted, // QueueStatus null, // AgentID managerQueueJob.ExtractorSetArtifactId, // ExtractorSetArtifactID result.Artifact.ArtifactID, // DocumentArtifactID managerQueueJob.ExtractorProfileArtifactId, // ExtractorProfileArtifactID managerQueueJob.SourceLongTextFieldArtifactId // ExtractorProfileArtifactID ); } return(batchTable); }