Определение типа данных на основе имени файла
Назначить тип данных сообщению, формируемому при выгрузке файла из каталога, в зависимости от имени файла можно с помощью входящего процесса трансформации.
Например, файл с именем ЕдиницыИзменения.xml поступает в платформу. Необходимо присвоить ему тип данных ЕдиницыИзмерения:
Порядок действий
Создать Входящий процесс трансформации:
На вкладке Параметры можно задать условия её применения:
Система: если указать систему-источник, трансформация будет запускаться только для тех данных, которые поступили из этой системы.
Входящие данные: если указать конкретный тип данных, трансформация сработает только для него.
Если эти параметры оставить пустыми, трансформация будет применяться ко всем данным, поступающим в платформу.
В разделе Схема необходимо добавить шаг Алгоритм. В этот шаг необходимо добавить следующий код:
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; } }
Работа кода заключается в следующем:
Извлекается оригинальное имя файла.
Имя очищается от спецсимволов и разбивается на отдельные слова.
Каждое слово проверяется на соответствие существующим в системе типам данных.
При первом совпадении найденный тип присваивается сообщению, и цикл завершается.
Таким образом, платформа анализирует название файла и типизирует сообщение.