-
Notifications
You must be signed in to change notification settings - Fork 0
EdifactParserCLI ru
Заготовка приложения командной строки для трансляции из 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
следует использовать, если требуется какая-то дополнительная настройка добавленной фабрики с использованием внедрённых ранее зависимостей.
При запуске скомпилированного приложения без параметров получим краткую инструкцию:
Все параметры так или иначе соответствуют свойствам в классе EdifactParserOptions, так что подробности опустим.
Выполним трансляцию одной сессии:
XML-файлы сообщений появились.