Example #1
0
        private static void OnRecordChanged(object source, PollingFileSystemEventArgs e)
        {
            foreach (var change in e.Changes)
            {
                var path = Path.Combine(change.Directory, change.Name);
                if (change.ChangeType == WatcherChangeTypes.Created)
                {
                    Logger.Info("Record.PollingFileSystemWatcher.OnCreated");
                    try
                    {
                        Thread.Sleep(1000);
                        var recordId = WexflowEngine.SaveRecordFromFile(path, superAdminUsername);

                        if (recordId != "-1")
                        {
                            Logger.Info($"Record inserted from file {path}. RecordId: {recordId}");
                        }
                        else
                        {
                            Logger.Error($"An error occured while inserting a record from the file {path}.");
                        }
                    }
                    catch (Exception ex)
                    {
                        Logger.ErrorFormat("Error while creating the record {0}", ex, path);
                    }
                }
            }
        }
Example #2
0
        private static void OnChanged(object source, PollingFileSystemEventArgs e)
        {
            foreach (var change in e.Changes)
            {
                var path = Path.Combine(change.Directory, change.Name);
                switch (change.ChangeType)
                {
                case WatcherChangeTypes.Created:
                    Logger.Info("PollingFileSystemWatcher.OnCreated");
                    try
                    {
                        var admin = WexflowEngine.GetUser(superAdminUsername);
                        WexflowEngine.SaveWorkflowFromFile(admin.GetId(), Core.Db.UserProfile.SuperAdministrator, path, true);
                    }
                    catch (Exception ex)
                    {
                        Logger.ErrorFormat("Error while creating the workflow {0}", ex, path);
                    }
                    break;

                case WatcherChangeTypes.Changed:
                    Logger.Info("PollingFileSystemWatcher.OnChanged");
                    try
                    {
                        var admin = WexflowEngine.GetUser(superAdminUsername);
                        WexflowEngine.SaveWorkflowFromFile(admin.GetId(), Core.Db.UserProfile.SuperAdministrator, path, true);
                    }
                    catch (Exception ex)
                    {
                        Logger.ErrorFormat("Error while updating the workflow {0}", ex, path);
                    }
                    break;

                case WatcherChangeTypes.Deleted:
                    Logger.Info("PollingFileSystemWatcher.OnDeleted");
                    try
                    {
                        var removedWorkflow = WexflowEngine.Workflows.SingleOrDefault(wf => wf.FilePath == path);
                        if (removedWorkflow != null)
                        {
                            WexflowEngine.DeleteWorkflow(removedWorkflow.DbId);
                        }
                    }
                    catch (Exception ex)
                    {
                        Logger.ErrorFormat("Error while deleting the workflow {0}", ex, path);
                    }
                    break;
                }
            }
        }
Example #3
0
        private void OnChanged(object source, PollingFileSystemEventArgs e)
        {
            foreach (var change in e.Changes)
            {
                var path = Path.Combine(change.Directory, change.Name);
                if (ContinueDoTasksOnlyOnNotOpenFiles && change.FileLocked)
                {
                    continue;
                }
                switch (change.ChangeType)
                {
                case WatcherChangeTypes.Created:
                    Info("PollingFileSystemWatcher.OnCreated started.");
                    try
                    {
                        ClearFiles();
                        Files.Add(new FileInf(path, Id));
                        var tasks = GetTasks(OnFileCreated);
                        foreach (var task in tasks)
                        {
                            task.Logs.Clear();
                            task.Run();
                            CurrentLogs.AddRange(task.Logs);
                        }
                        Files.RemoveAll(f => f.Path == path);
                    }
                    catch (IOException ex) when((ex.HResult & 0x0000FFFF) == 32)
                    {
                        Logger.InfoFormat("There is a sharing violation for the file {0}.", path);
                    }
                    catch (Exception ex)
                    {
                        ErrorFormat("An error while triggering PollingFileSystemWatcher.OnCreated on the file {0}. Message: {1}", path, ex.Message);
                    }
                    Info("PollingFileSystemWatcher.OnCreated finished.");

                    try
                    {
                        var entry = Workflow.Database.GetEntry(Workflow.Id, Workflow.InstanceId);
                        entry.Logs = string.Join("\r\n", CurrentLogs);
                        Workflow.Database.UpdateEntry(entry.GetDbId(), entry);
                    }
                    catch (Exception ex)
                    {
                        ErrorFormat("An error while updating PollingFileSystemWatcher.OnCreated database entry.", ex);
                    }
                    break;

                case WatcherChangeTypes.Changed:
                    Info("PollingFileSystemWatcher.OnChanged started.");
                    try
                    {
                        ClearFiles();
                        Files.Add(new FileInf(path, Id));
                        var tasks = GetTasks(OnFileChanged);
                        foreach (var task in tasks)
                        {
                            task.Logs.Clear();
                            task.Run();
                            CurrentLogs.AddRange(task.Logs);
                        }
                        Files.RemoveAll(f => f.Path == path);
                    }
                    catch (IOException ex) when((ex.HResult & 0x0000FFFF) == 32)
                    {
                        Logger.InfoFormat("There is a sharing violation for the file {0}.", path);
                    }
                    catch (Exception ex)
                    {
                        ErrorFormat("An error while triggering PollingFileSystemWatcher.OnChanged on the file {0}. Message: {1}", path, ex.Message);
                    }
                    Info("PollingFileSystemWatcher.OnChanged finished.");

                    try
                    {
                        var entry = Workflow.Database.GetEntry(Workflow.Id, Workflow.InstanceId);
                        entry.Logs = string.Join("\r\n", CurrentLogs);
                        Workflow.Database.UpdateEntry(entry.GetDbId(), entry);
                    }
                    catch (Exception ex)
                    {
                        ErrorFormat("An error while updating PollingFileSystemWatcher.OnChanged database entry.", ex);
                    }
                    break;

                case WatcherChangeTypes.Deleted:
                    Info("PollingFileSystemWatcher.OnDeleted started.");
                    try
                    {
                        ClearFiles();
                        Files.Add(new FileInf(path, Id));
                        var tasks = GetTasks(OnFileDeleted);
                        foreach (var task in tasks)
                        {
                            task.Logs.Clear();
                            task.Run();
                            CurrentLogs.AddRange(task.Logs);
                        }
                        Files.RemoveAll(f => f.Path == path);
                    }
                    catch (IOException ex) when((ex.HResult & 0x0000FFFF) == 32)
                    {
                        Logger.InfoFormat("There is a sharing violation for the file {0}.", path);
                    }
                    catch (Exception ex)
                    {
                        ErrorFormat("An error while triggering PollingFileSystemWatcher.OnDeleted on the file {0}. Message: {1}", path, ex.Message);
                    }
                    Info("PollingFileSystemWatcher.OnDeleted finished.");

                    try
                    {
                        var entry = Workflow.Database.GetEntry(Workflow.Id, Workflow.InstanceId);
                        entry.Logs = string.Join("\r\n", CurrentLogs);
                        Workflow.Database.UpdateEntry(entry.GetDbId(), entry);
                    }
                    catch (Exception ex)
                    {
                        ErrorFormat("An error while updating PollingFileSystemWatcher.OnDeleted database entry.", ex);
                    }
                    break;
                }
            }
        }
 private static void FileSystemWatcher_Changed(object sender, PollingFileSystemEventArgs e) =>
 Console.WriteLine($@"File changed: {string.Join(',', e.Changes.Select(x => $"{x.ChangeType}: {x.Name}"))}");