FSGate — класс

Содержит методы и свойства шлюза к файловой системе.

Синтаксис

public class FSGate : IGate, IGateMessageSource

Конструкторы

Имя Описание

FSGate()

Инициализирует новый экземпляр класса FSGate.

Свойства

Имя Описание

Data

Задаёт или возвращает конфигурацию шлюза.

ExecutionMode

Возвращает поддерживаемый режим исполнения процесса.

ID

Возвращает уникальный идентификатор шлюза.

SubscriptionChannel

Возвращает канал подписки на события шлюза.

Методы

Имя Описание

AddVariable(Int32, String)

Создаёт новый файл или папку в указанном каталоге.

AddVariable(Int64, String)

Создаёт новый файл или папку в указанном каталоге.

CompareVariables(Int32, String, String)

Сравнивает пути к двум файлам или папкам.

CompareVariables(Int64, String, String)

Сравнивает пути к двум файлам или папкам.

CopyVariable(Int32, String, String)

Копирование не поддерживается.

CopyVariable(Int64, String, String)

Копирование не поддерживается.

CreateFile(String)

Создаёт в файловой системе новый файл.

CreateFolder(String)

Создаёт в файловой системе новую папку.

DeleteVariable(Int32, String)

Удаляет указанный файл или папку.

DeleteVariable(Int64, String)

Удаляет указанный файл или папку.

GetVariable(Int32, String)

Возвращает сущность указанного файла или папки.

GetVariable(Int64, String)

Возвращает сущность указанного файла или папки.

GetVariable(Int32, String, String)

Возвращает сущность указанного файла или папки.

GetVariableInternalReference(Int32, String)

Возвращает ссылку на переменную шлюза во внутреннем формате.

GetVariableReference(Int32, String)

Возвращает внешнюю ссылку на заданную переменную шлюза.

Initialize(Guid, IMessageChannel, ISubscriptionChannel)

Инициализирует механизм подписки на события шлюза.

Поля

Имя Описание

GateID

Предоставляет идентификатор шлюза.

GateName

Предоставляет название шлюза.

Примечание

При работе с файловой системой из бизнес-процесса (особенно) в кластере СУБП необходимо учитывать, что конкретная функция может обрабатываться на любом из серверов СУБП, работающих в кластере, т.е. список файлов локального диска для одной функции может отличаться от списка файлов, полученного другой функцией.

Примеры

Ниже приведён пример простого скрипта бизнес-процесса, который получает из шлюза список файлов определённой папки, содержащей новые приказы, и на их основе создаёт документы.

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 Записываем в журнал ошибки исполнения.