static public ExportProcessDC[] GetExportProcessListByStatus(Guid tenantId, ProcessStatus status) { List <ExportProcessDC> processList = new List <ExportProcessDC>(); SqlTrackingQuery sqlTrackingQuery = new SqlTrackingQuery(ConfigurationManager.ConnectionStrings[Constants.Database.TenantWorkflowStore].ConnectionString); SqlTrackingQueryOptions options = new SqlTrackingQueryOptions(); options.WorkflowStatus = ProcessHelper.ToWorkflowStatus(status); options.TrackingDataItems.Add(new TrackingDataItemValue("ExportProcess", "TenantId", tenantId.ToString())); IList <SqlTrackingWorkflowInstance> workflows = sqlTrackingQuery.GetWorkflows(options); foreach (SqlTrackingWorkflowInstance workflow in workflows) { ExportProcessDC exportProcessDC = new ExportProcessDC(); exportProcessDC.ProcessId = workflow.WorkflowInstanceId; exportProcessDC.Status = ProcessHelper.ToProcessStatus(workflow.Status); int activityEventsCount = workflow.ActivityEvents.Count; if (activityEventsCount > 0) { ActivityTrackingRecord record = (ActivityTrackingRecord)workflow.ActivityEvents[activityEventsCount - 1]; foreach (TrackingDataItem dataItem in record.Body) { switch (dataItem.FieldName) { case "ObjectId": exportProcessDC.ObjectId = (Guid)dataItem.Data; break; case "Number": exportProcessDC.Number = (string)dataItem.Data; break; case "Creator": exportProcessDC.Creator = (string)dataItem.Data; break; case "Amount": exportProcessDC.Amount = dataItem.Data == null ? default(decimal) : (decimal)dataItem.Data; break; } } } processList.Add(exportProcessDC); } return(processList.ToArray()); }
static public ExportProcessDC GetExportProcessbyContractId(Guid contractId) { SqlTrackingQuery sqlTrackingQuery = new SqlTrackingQuery(ConfigurationManager.ConnectionStrings[Constants.Database.TenantWorkflowStore].ConnectionString); SqlTrackingQueryOptions options = new SqlTrackingQueryOptions(); //options.WorkflowStatus = WorkflowStatus.Running; options.TrackingDataItems.Add(new TrackingDataItemValue("ExportProcess", "ObjectId", contractId.ToString())); IList <SqlTrackingWorkflowInstance> workflows = sqlTrackingQuery.GetWorkflows(options); if (workflows.Count == 0) { return(null); } SqlTrackingWorkflowInstance workflow = workflows[workflows.Count - 1]; ExportProcessDC exportProcessDC = new ExportProcessDC(); exportProcessDC.ObjectId = contractId; exportProcessDC.ProcessId = workflow.WorkflowInstanceId; exportProcessDC.Status = ProcessHelper.ToProcessStatus(workflow.Status); int activityEventsCount = workflow.ActivityEvents.Count; if (activityEventsCount > 0) { ActivityTrackingRecord record = (ActivityTrackingRecord)workflow.ActivityEvents[activityEventsCount - 1]; foreach (TrackingDataItem dataItem in record.Body) { switch (dataItem.FieldName) { case "Number": exportProcessDC.Number = (string)dataItem.Data; break; case "Creator": exportProcessDC.Creator = (string)dataItem.Data; break; case "Amount": exportProcessDC.Amount = dataItem.Data == null ? default(decimal) : (decimal)dataItem.Data; break; } } } return(exportProcessDC); }