public FileResult GetProcessDomain(string processName, string instanceName, DateTime?instanceDate) { using (var activity = new RFEngineActivity(Context, EngineConfig)) { RFGraphProcessorDomain domain = null; var engineConfig = activity.GetEngineConfig(); var graphInstance = new RFGraphInstance { Name = string.IsNullOrWhiteSpace(instanceName) ? null : instanceName, ValueDate = instanceDate.HasValue ? new RFDate(instanceDate.Value.Date) : RFDate.NullDate }; foreach (var graph in engineConfig.Graphs.Values) { var process = graph.Processes.Values.FirstOrDefault(p => RFGraphDefinition.GetFullName(graph.GraphName, p.Name) == processName); if (process != null) { var processor = process.Processor(); domain = processor.CreateDomain(); if (domain != null) { foreach (var propertyInfo in domain.GetType().GetProperties()) { var ioBehaviourAttribute = (propertyInfo.GetCustomAttributes(typeof(RFIOBehaviourAttribute), true).FirstOrDefault() as RFIOBehaviourAttribute); RFCatalogKey ioKey = null; if (ioBehaviourAttribute != null) { var ioBehaviour = ioBehaviourAttribute.IOBehaviour; var ioMapping = process.IOMappings.FirstOrDefault(m => m.PropertyName == propertyInfo.Name); if (ioMapping != null) { ioKey = ioMapping.Key.CreateForInstance(graphInstance); var options = RFGraphInstance.ImplyOptions(ioMapping); var entry = Context.LoadEntry(ioKey, options) as RFDocument; if (entry != null) { propertyInfo.SetValue(domain, entry.Content); } } } } } break; } } if (domain != null) { var xmlString = RFXMLSerializer.PrettySerializeContract(domain); return(File( Encoding.UTF8.GetBytes(xmlString), "text/xml", String.Format("{0}_{1}_{2}.xml", processName, instanceName ?? String.Empty, instanceDate.Value.ToString("yyyy-MM-dd")) )); } } return(null); }
public JsonResult GetTasks(string instanceName, DateTime?instanceDate) { try { using (var activity = new RFEngineActivity(Context, EngineConfig)) { var engineConfig = activity.GetEngineConfig(); var graphInstance = new RFGraphInstance { Name = string.IsNullOrWhiteSpace(instanceName) ? RFGraphInstance.DEFAULT_INSTANCE : instanceName, ValueDate = instanceDate.HasValue ? new RFDate(instanceDate.Value.Date) : RFDate.NullDate }; var engineStats = activity.GetEngineStats(graphInstance); var errors = _systemContext.DispatchStore.GetErrorQueue(0); var tasks = new List <object>(); foreach (var t in EngineConfig.Tasks) { var stat = engineStats?.GetStat(t.ProcessName); var dispatchKey = new RFParamProcessInstruction(t.ProcessName, null).DispatchKey(); var error = dispatchKey.NotBlank() ? errors.Where(e => e.DispatchKey == dispatchKey).FirstOrDefault() : null; var schedule = t.SchedulerConfig(Context); tasks.Add(new { t.TaskName, t.Description, t.GraphName, Schedule = String.Join(", ", new string[] { t.Trigger, schedule?.SchedulerScheduleString, schedule?.SchedulerRangeString }.Where(s => s.NotBlank())), IsEnabled = schedule?.IsEnabled ?? true, t.IsSystem, Status = error?.DispatchState.ToString() ?? "OK", Message = error?.Message, LastRun = stat?.LastRun ?? error?.LastStart, LastDuration = stat?.LastDuration, IsGraph = false, FullName = t.ProcessName }); } foreach (var g in EngineConfig.Graphs.Where(g => g.Value.GraphTasks.Any())) { var graphStats = activity.GetGraphStats(g.Value.GraphName, graphInstance); foreach (var t in g.Value.GraphTasks) { var processName = RFGraphDefinition.GetFullName(t.GraphName, t.ProcessName); var stat = graphStats?.GetStat(t.ProcessName); var dispatchKey = new RFGraphProcessInstruction(graphInstance, processName)?.DispatchKey(); var error = dispatchKey.NotBlank() ? errors.Where(e => e.DispatchKey == dispatchKey).FirstOrDefault() : null; var schedule = t.SchedulerConfig(Context); tasks.Add(new { t.TaskName, t.Description, t.GraphName, Schedule = String.Join(", ", new string[] { t.Trigger, schedule?.SchedulerScheduleString, schedule?.SchedulerRangeString }.Where(s => s.NotBlank())), //t.SchedulerRange, //t.SchedulerSchedule, //t.Trigger, IsEnabled = schedule?.IsEnabled ?? true, t.IsSystem, Status = error?.DispatchState.ToString() ?? ((stat?.CalculationOK ?? false) ? "OK" : String.Empty), Message = error?.Message ?? stat?.Message, LastRun = stat?.LastRun ?? error?.LastStart, IsGraph = true, FullName = processName }); } } return(Json(tasks)); } } catch (Exception ex) { return(Json(JsonError.Throw("GetTasks", ex))); } }
public JsonResult GetProcesses(string instanceName, DateTime?instanceDate) { using (var activity = new RFEngineActivity(Context, EngineConfig)) { var engineConfig = activity.GetEngineConfig(); var graphInstance = new RFGraphInstance { Name = string.IsNullOrWhiteSpace(instanceName) ? RFGraphInstance.DEFAULT_INSTANCE : instanceName, ValueDate = instanceDate.HasValue ? new RFDate(instanceDate.Value.Date) : RFDate.NullDate }; var stats = activity.GetEngineStats(graphInstance); var allProcesses = new List <object>(); foreach (var process in engineConfig.Processes.Values) { var processor = process.Processor(); var stat = stats.GetStat(process.Name); allProcesses.Add(new { Graph = "(none)", Name = process.Name, FullName = process.Name, Description = process.Description, Type = processor.GetType().FullName, RequiresIdle = false, IsGraph = false, LastRun = stat != null ? (DateTimeOffset?)stat.LastRun : null, LastDuration = stat != null ? (long?)stat.LastDuration : null, }); } foreach (var graph in engineConfig.Graphs.Values) { foreach (var process in graph.Processes.Values) { var fullName = RFGraphDefinition.GetFullName(graph.GraphName, process.Name); var stat = stats.GetStat(fullName); var processor = process.Processor(); var domain = processor.CreateDomain(); var io = new List <object>(); if (domain != null) { foreach (var propertyInfo in domain.GetType().GetProperties()) { var ioBehaviourAttribute = (propertyInfo.GetCustomAttributes(typeof(RFIOBehaviourAttribute), true).FirstOrDefault() as RFIOBehaviourAttribute); string direction = "-"; string dateType = "-"; RFCatalogKey ioKey = null; if (ioBehaviourAttribute != null) { var ioBehaviour = ioBehaviourAttribute.IOBehaviour; direction = ioBehaviour.ToString(); var ioMapping = process.IOMappings.FirstOrDefault(m => m.PropertyName == propertyInfo.Name); if (ioMapping != null) { ioKey = ioMapping.Key.CreateForInstance(graphInstance); var options = RFGraphInstance.ImplyOptions(ioMapping); dateType = options.DateBehaviour.ToString(); } } io.Add(new { Field = propertyInfo.Name, Direction = direction, DateType = dateType, DataType = propertyInfo.PropertyType.Name, KeyType = ioKey != null ? ioKey.GetType().Name : null, ShortKey = ioKey != null ? ioKey.FriendlyString() : null, FullKey = ioKey != null ? RFXMLSerializer.SerializeContract(ioKey) : null }); } } allProcesses.Add(new { Graph = graph.GraphName, Name = process.Name, FullName = fullName, IsGraph = true, Description = process.Description, Type = processor.GetType().FullName, IO = io, LastRun = stat != null ? (DateTimeOffset?)stat.LastRun : null, LastDuration = stat != null ? (long?)stat.LastDuration : null }); } } return(Json(allProcesses)); } }