FSGate — класс
Содержит методы и свойства шлюза к файловой системе.
-
Пространство имён:
DocsVision.Workflow.Gates
-
Сборка:
DocsVision.Workflow.Gates.dll
Свойства
Имя | Описание |
---|---|
Задаёт или возвращает конфигурацию шлюза. |
|
Возвращает поддерживаемый режим исполнения процесса. |
|
Возвращает уникальный идентификатор шлюза. |
|
Возвращает канал подписки на события шлюза. |
Методы
Имя | Описание |
---|---|
Создаёт новый файл или папку в указанном каталоге. |
|
|
Создаёт новый файл или папку в указанном каталоге. |
Сравнивает пути к двум файлам или папкам. |
|
|
Сравнивает пути к двум файлам или папкам. |
|
Копирование не поддерживается. |
|
Копирование не поддерживается. |
Создаёт в файловой системе новый файл. |
|
Создаёт в файловой системе новую папку. |
|
Удаляет указанный файл или папку. |
|
|
Удаляет указанный файл или папку. |
Возвращает сущность указанного файла или папки. |
|
|
Возвращает сущность указанного файла или папки. |
|
Возвращает сущность указанного файла или папки. |
Возвращает ссылку на переменную шлюза во внутреннем формате. |
|
Возвращает внешнюю ссылку на заданную переменную шлюза. |
|
Инициализирует механизм подписки на события шлюза. |
Примечание
При работе с файловой системой из бизнес-процесса (особенно) в кластере СУБП необходимо учитывать, что конкретная функция может обрабатываться на любом из серверов СУБП, работающих в кластере, т.е. список файлов локального диска для одной функции может отличаться от списка файлов, полученного другой функцией.
Примеры
Ниже приведён пример простого скрипта бизнес-процесса, который получает из шлюза список файлов определённой папки, содержащей новые приказы, и на их основе создаёт документы.
public void Execute (ProcessInfo process, PassState passInfo, ObjectContext context) (1)
{
try
{
FSGate fsGate = (FSGate)process.Gates[FSGate.GateID]; (2)
IDocumentService documentService = context.GetService<IDocumentService>(); (3)
string newOrderFolder = (string)process.Variables.GetVariableByName("newOrderFolder").Value;
string processedOrderFolder = (string)process.Variables.GetVariableByName("processedOrderFolder").Value; (4)
FSFileFolder folder = fsGate.GetVariable(0, newOrderFolder) as FSFileFolder; (5)
string[] orders = folder.GetFiles("*.docx"); (6)
for(int i =0; i<orders.Length; i++)
{
FSFile currentFile = (FSFile)fsGate.GetVariable(1, orders[i]); (7)
if(currentFile.CreationTime < DateTime.Today) (8)
{
try{
Document document = documentService.CreateDocument(currentFile.ID);
context.SaveObject(document); (9)
currentFile.Move(System.IO.Path.Combine(processedOrderFolder, currentFile.Name));
process.LogMessage ("Создан документ по файлу: " + currentFile.Name); (10)
} catch
{
throw;
}
}
}
} catch (Exception ex)
{
process.LogMessage("Ошибка выполнения скрипта:" + ex.Message); (11)
}
return;
}
1 | Стандартная точка входа функции БП, дополненная параметром context . |
2 | Получаем шлюз к файловой системе. |
3 | Получаем сервис для работы с документами для создания документов. |
4 | Получаем из настроек БП папки: с новыми приказами и для обработанных БП приказов. |
5 | Получаем объект-папку из шлюза. |
6 | Получаем список файлов (.docx ) из папки. |
7 | Получаем объект-файл. |
8 | Обрабатываем только приказы, выпущенные вчера (или ранее). |
9 | Создаем документ. |
10 | Убираем обработанный файл. |
11 | Записываем в журнал ошибки исполнения. |