Определение типа данных на основе имени файла

Назначить тип данных сообщению, формируемому при выгрузке файла из каталога, в зависимости от имени файла можно с помощью входящего процесса трансформации.

Например, файл с именем ЕдиницыИзменения.xml поступает в платформу. Необходимо присвоить ему тип данных ЕдиницыИзмерения:

../../_images/image612.png

Порядок действий

  1. Создать Входящий процесс трансформации:

../../_images/image75.png

На вкладке Параметры можно задать условия её применения:

  • Система: если указать систему-источник, трансформация будет запускаться только для тех данных, которые поступили из этой системы.

  • Входящие данные: если указать конкретный тип данных, трансформация сработает только для него.

Если эти параметры оставить пустыми, трансформация будет применяться ко всем данным, поступающим в платформу.

  1. В разделе Схема необходимо добавить шаг Алгоритм. В этот шаг необходимо добавить следующий код:

    string filename = InitProperties.GetProperty(MessageProperties.OriginalFileName).GetValue().ToString();
    Message message = new Message();
    var words = Regex.Replace(Regex.Replace(filename, "\\W", " "), "\\s+", " ").Split(" ");
    foreach(var word in words) {
      Metadata.DataTypes dt = MetadataInfo.SearchDataType(word);
      if (dt != Metadata.DataTypes.Empty)
      {
        message.SetDataType(dt);
        InitMessage.SetDataType(dt);
        Logger.Info($ "Для файла {filename} установлен тип сообщения {dt}");
        break;
      }
      Metadata.SM sdt = MetadataInfo.SearchSM(word);
      if (sdt != Metadata.SM.Empty)
      {
        message.SetSystemDataType(sdt);
        InitMessage.SetSystemDataType(sdt);
        Logger.Info($ "Для файла {filename} установлен внешний тип сообщения {sdt}");
        break;
      }
    }
    

Работа кода заключается в следующем:

  1. Извлекается оригинальное имя файла.

  2. Имя очищается от спецсимволов и разбивается на отдельные слова.

  3. Каждое слово проверяется на соответствие существующим в системе типам данных.

  4. При первом совпадении найденный тип присваивается сообщению, и цикл завершается.

Таким образом, платформа анализирует название файла и типизирует сообщение.