Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
13.11.2014, 13:04
|
|||
---|---|---|---|
|
|||
Помогите с примером по Ensemble? |
|||
#18+
Пытаюсь сделать простенький пример.Задача состоит в том, чтобы забрать файл из указанной директории, создать его копию и поместить в заданную директорию. Как это можно реализовать, используя входящий файловый адаптер? Подскажите, в верном направлении иду или это вообще не то? Создал класс бизнес-службы. Создал класс сообщения-запроса к бизнес-операции, у класса сообщения создал свойство FileContent для хранения содержимого файла. В методе OnProcessInput посылаю запрос бизнес-операции. В бизнес операции есть метод, который должен записывать файл в указанную директорию.Class Test.BusinessService1 Extends Ens.BusinessService { Parameter ADAPTER = "EnsLib.File.InboundAdapter"; Method OnProcessInput(pInput As %FileBinaryStream, Output pOutput As %RegisteredObject) As %Status { ///Создаём сообщение: set msg=##class(BusinessOperation1RequestMessage).%New() //Записываем в поле FileContent, полученный из pInput поток файла set msg.FileContent=..Adapter.GetStream("C:\Users\User\Desktop\TestDirectory\",pInput) ///Отправляем сообщение-запрос бизнес-операции set st=..SendRequestAsync(Test.BusinessOperation1,msg) Quit $$$OK } } Class Test.BusinessOperation1RequestMessage Extends Ens.Request { /// Поле для хранения содержимого файла Property FileContent As %FileBinaryStream; Property FilePath As %String <Storage name="Default"> <Type>%Library.CacheStorage</Type> </Storage> } Class Test.BusinessOperation1 Extends Ens.BusinessOperation { Parameter ADAPTER = "EnsLib.File.OutboundAdapter"; Property Adapter As EnsLib.File.OutboundAdapter; Parameter INVOCATION = "Queue"; /// Помещает файл в заданную папку Method PutFile(pReq As BusinessOperation1RequestMessage, Output pResp As BusinessOperation1ResponseMessage) As %Status { set stream=pReq.FileContent set newFile= ..Adapter.PutStream("C:\Users\User\Desktop\TestDirectory\NewFile.txt",stream,-1) } } ... |
|||
:
Нравится:
Не нравится:
|
|||
|
13.11.2014, 16:46
|
|||
---|---|---|---|
Помогите с примером по Ensemble? |
|||
#18+
Mikhail27, направление правильное. ps: в исходящем файловом адаптере есть настройка пути, куда сохранять. её можно оттуда брать, а не хардкодить. pps: название файла можно брать при чтении файла во входящем адаптере, и сохранять его в передаваемом сообщении, чтобы "что прочитал, то и записал". pps: в бизнес-операции не хватает callback метода (не помню как он назывался). ... |
|||
:
Нравится:
Не нравится:
|
|||
|
18.11.2014, 09:48
|
|||
---|---|---|---|
Помогите с примером по Ensemble? |
|||
#18+
Mikhail27, В класс операции добавьте вот такую фигню: Код: plaintext 1. 2. 3. 4. 5. 6. 7.
Это позволит операции запускать различные методы, в зависимости от типа входящего объекта ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/search_topic.php?author=%D0%93%D0%BE%D1%81%D1%82%D1%8C12345345345&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
14ms |
get forum list: |
19ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 437ms |
total: | 606ms |
0 / 0 |