|
Помогите с примером по 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, 13:04 |
|
Помогите с примером по Ensemble?
|
|||
---|---|---|---|
#18+
Mikhail27, направление правильное. ps: в исходящем файловом адаптере есть настройка пути, куда сохранять. её можно оттуда брать, а не хардкодить. pps: название файла можно брать при чтении файла во входящем адаптере, и сохранять его в передаваемом сообщении, чтобы "что прочитал, то и записал". pps: в бизнес-операции не хватает callback метода (не помню как он назывался). ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2014, 16:46 |
|
Помогите с примером по Ensemble?
|
|||
---|---|---|---|
#18+
Mikhail27, В класс операции добавьте вот такую фигню: Код: plaintext 1. 2. 3. 4. 5. 6. 7.
Это позволит операции запускать различные методы, в зависимости от типа входящего объекта ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2014, 09:48 |
|
|
start [/forum/topic.php?fid=39&msg=38804758&tid=1556769]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
61ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
others: | 237ms |
total: | 404ms |
0 / 0 |