Skip to content

EdifactParserCLI ru

Leksiqq edited this page Apr 5, 2024 · 3 revisions

Класс EdifactParserCLI

Заготовка приложения командной строки для трансляции из EDIFACT в XML. Можно использовать для трансляции из файла в формате EDIFACT в XML-файлы транслированных сообщений (каждое сообщение в отдельном файле), помещаемые в заданный целевой каталог. Имена файлов назначаются из элемента данных 0062 заголовка сообщения UNH. Применяется только для пакетных сессий.

Методы

  • public static async Task RunAsync(string[] args, Action<IHostApplicationBuilder>? configHostBuilder = null, Action<IServiceProvider>? configApp = null) - вызывается при запуске исполняемого файла и выполняет всю работу.

В случае, когда каталог XML-схем EDIFACT, входящий файл и целевой каталог находятся в локальной файловой системе, дополнительных действий не требуется. То есть, при использовании операторов верхнего уровня, весь код приложения выглядит так:

using Net.Leksi.Edifact;

await EdifactParserCLI.RunAsync(args);

Если, например, каталог XML-схем EDIFACT или входящий файл или целевой каталог находятся в облаке, то нужно использовать дополнительные аргументы:

using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Net.Leksi.Edifact;
using Net.Leksi.Streams;

await EdifactParserCLI.RunAsync(args, ConfigHostBuilder);

void ConfigHostBuilder(IHostApplicationBuilder builder)
{
    builder.Services.AddKeyedSingleton<IStreamFactory, S3FileStreamFactory>("s3");
}

После этого можно использовать Uri типа: s3://bucket/path. (Класс S3FileStreamFactory приведён для примера, его следует при необходимости реализовать самостоятельно, либо написать адаптер к какому-то существующему функционалу)

Аргумент configApp следует использовать, если требуется какая-то дополнительная настройка добавленной фабрики с использованием внедрённых ранее зависимостей.

Запуск и параметры командной строки

При запуске скомпилированного приложения без параметров получим краткую инструкцию: 2024-04-05_13-07-21

Все параметры так или иначе соответствуют свойствам в классе EdifactParserOptions, так что подробности опустим.

Выполним трансляцию одной сессии: 2024-04-05_13-19-13

XML-файлы сообщений появились.

Обзор | В начало страницы

Clone this wiki locally