Варианты и сценарии использования FTRF#

Варианты использования#

Варианты использования немного отличаются в зависимости от режимов работы FTRF. Подробнее о режимах изложено в разделе Интерфейсы.

FTRFv1#

@startuml
'https://plantuml.com/use-case-diagram
top to bottom direction
skinparam actorStyle awesome

:Application: as bapp

package "File Transfer" as FTRF {
  usecase "1. Send files" as UC1
  usecase "2. Get files" as UC2
  usecase "3. Notify" as notify
}

notify -> bapp
bapp --> UC1
bapp --> UC2
@enduml

BC/MC#

Данная диаграмма использования подходит для двух режимов работы: BC - BusinessCritical, и MC - MissionCritical.

@startuml
'https://plantuml.com/use-case-diagram
top to bottom direction
skinparam actorStyle awesome
:Application: as bapp

package "File Transfer" as FTRF {
  usecase "1. Send files" as UC1
  usecase "2. Get files" as UC2
  usecase "3. Confirm delivery" as UC3
  usecase "4. Delete received files" as UC4
  usecase "5. Notify" as notify
}


bapp --> UC1
bapp --> UC2
bapp --> UC3
bapp --> UC4
notify --> bapp

@enduml

Сценарии использования#

FTRFv1#

При выключенной интеграции с OTTS#

«Send files» - передача файла#

  1. Application формирует запрос на передачу файла, вместе с самим файлом и передает FTRF в виде потока, вызвав метод sendFiles();

  2. FTRF совершает публикацию файлов в зашифрованном виде в SDS;

  3. FTRF формирует уведомление (TransferDescriptor);

  4. FTRF отправляет уведомление о передаче файлов в FTRF;

«Notify» - получение уведомления о приеме файлов#

  1. FTRF получает уведомление (TransferDescriptor) от внешнего отправителя;

  2. FTRF формирует сообщение FileNotification для уведомления Application о возможности получения файлов;

  3. FTRF получает подтверждение от Application о принятии сообщения FileNotification;

  4. FTRF возвращает подтверждение внешнему отправителю;

Сценарий взаимодействия, при котором недоступно S3 хранилище (исключительный сценарий)#

  1. Application формирует запрос на передачу файла, вместе с самим файлом и передает FTRF в виде потока, вызвав метод sendFiles();

  2. FTRF совершает публикацию файлов в зашифрованном виде в SDS, но SDS не доступен;

  3. Application возвращается ошибка в ответ на сформированный запрос;

Сценарий взаимодействия, при котором недоступен FTRF получателя (исключительный сценарий)#

  1. Application формирует запрос на передачу файла, вместе с самим файлом и передает FTRF в виде потока, вызвав метод sendFiles();

  2. FTRF совершает публикацию файлов в зашифрованном виде в SDS;

  3. FTRF формирует уведомление (TransferDescriptor);

  4. FTRF отправляет запрос в FTRF получателя с нотификацией о готовности файлов, но FTRF получателя недоступен;

  5. Application возвращается ошибка в ответ на сформированный запрос;

Сценарий взаимодействия, при котором недоступна АС получателя (исключительный сценарий)#

  1. Application формирует запрос на передачу файла, вместе с самим файлом и передает FTRF в виде потока, вызвав метод sendFiles();

  2. FTRF совершает публикацию файлов в зашифрованном виде в SDS;

  3. FTRF формирует уведомление (TransferDescriptor);

  4. FTRF отправляет запрос в FTRF получателя с нотификацией о готовности файлов;

  5. FTRF получателя формирует notify сообщение.

  6. FTRF получателя отправляет notify сообщение получателю, получатель недоступен.

  7. Application возвращается ошибка в ответ на сформированный запрос:

Описанные сценарии использования «Notify» и «Get files» связаны: без получения уведомления от внешнего отправителя по сценарию Notify, невозможно получить файлы в сценарии Get files

«Get files» - получение файла#

  1. Application вызывает метод FTRF getFiles(), используя полученное ранее сообщение FileNotification;

  2. FTRF извлекает файлы из SDS;

  3. FTRF передает полученный файлы в дешифрованном виде Application.

При включенной интеграции с OTTS#

«Send files» - передача файла#

  1. Application формирует запрос на передачу файла, вместе с самим файлом и передает FTRF в виде потока, вызвав метод sendFiles();

  2. FTRF совершает обращение к OTTS для получения токена авторизации передачи, опираясь на информацию предоставленную в запросе;

  3. FTRF совершает публикацию файлов в зашифрованном виде в SDS;

  4. FTRF формирует уведомление (TransferDescriptor);

  5. FTRF отправляет уведомление о передаче файлов в FTRF;

«Notify» - получение уведомления о приеме файлов#

  1. FTRF получает уведомление (TransferDescriptor) от внешнего отправителя;

  2. FTRF валидирует полученное уведомление и токен OTT из него;

  3. FTRF формирует сообщение FileNotification для уведомления Application о возможности получения файлов;

  4. FTRF получает подтверждение от Application о принятии сообщения FileNotification;

  5. FTRF возвращает подтверждение внешнему отправителю;

Сценарий взаимодействия, при котором недоступно S3 хранилище (исключительный сценарий)#

  1. Application формирует запрос на передачу файла, вместе с самим файлом и передает FTRF в виде потока, вызвав метод sendFiles();

  2. FTRF совершает обращение к OTTS для получения токена авторизации передачи, опираясь на информацию предоставленную в запросе;

  3. FTRF совершает публикацию файлов в зашифрованном виде в SDS, но SDS не доступен;

  4. Application возвращается ошибка в ответ на сформированный запрос;

Сценарий взаимодействия, при котором недоступен FTRF получателя (исключительный сценарий)#

  1. Application формирует запрос на передачу файла, вместе с самим файлом и передает FTRF в виде потока, вызвав метод sendFiles();

  2. FTRF совершает обращение к OTTS для получения токена авторизации передачи, опираясь на информацию предоставленную в запросе;

  3. FTRF совершает публикацию файлов в зашифрованном виде в SDS;

  4. FTRF формирует уведомление (TransferDescriptor);

  5. FTRF отправляет запрос в FTRF получателя с нотификацией о готовности файлов, но FTRF получателя недоступен;

  6. Application возвращается ошибка в ответ на сформированный запрос;

Сценарий взаимодействия, при котором недоступна АС получателя (исключительный сценарий)#

  1. Application формирует запрос на передачу файла, вместе с самим файлом и передает FTRF в виде потока, вызвав метод sendFiles();

  2. FTRF совершает обращение к OTTS для получения токена авторизации передачи, опираясь на информацию предоставленную в запросе;

  3. FTRF совершает публикацию файлов в зашифрованном виде в SDS;

  4. FTRF формирует уведомление (TransferDescriptor);

  5. FTRF отправляет запрос в FTRF получателя с нотификацией о готовности файлов;

  6. FTRF получателя принимает запрос, валидирует ОТТ токен, извлекает ключ шифрования данных при помощи ОТТ токена, формирует notify сообщение.

  7. FTRF получателя отправляет notify сообщение получателю, получатель недоступен.

  8. Application возвращается ошибка в ответ на сформированный запрос:

Описанные сценарии использования «Notify» и «Get files» связаны: без получения уведомления от внешнего отправителя по сценарию Notify, невозможно получить файлы в сценарии Get files

«Get files» - получение файла#

  1. Application вызывает метод FTRF getFiles(), используя полученное ранее сообщение FileNotification;

  2. FTRF извлекает файлы из SDS;

  3. FTRF передает полученный файлы в дешифрованном виде Application.

BC/MC#

«Send files» - передача файла#

  1. Application формирует запрос на передачу файла, вместе с самим файлом и передает FTRF в виде потока, вызвав метод sendFiles();

  2. FTRF совершает обращение к OTTS для получения токена авторизации передачи, опираясь на информацию предоставленную в запросе;

  3. FTRF совершает публикацию файлов в зашифрованном виде в SDS;

  4. FTRF формирует уведомление (TransferDescriptor);

  5. FTRF отправляет уведомление о передаче файлов в FTRF;

В зависимости от режима, BC или MC, передача будет выполнена соответственно через gRPC, или Kafka.

«Notify» - получение уведомления о приеме файлов#

  1. FTRF получает уведомление (TransferDescriptor) от внешнего отправителя;

  2. FTRF валидирует полученное уведомление и токен OTT из него;

  3. FTRF формирует сообщение FileNotification для уведомления Application о возможности получения файлов;

  4. FTRF получает подтверждение от Application о принятии сообщения FileNotification;

  5. FTRF возвращает подтверждение внешнему отправителю;

«Get files» - получение файла#

  1. Application вызывает метод FTRF getFiles(), используя полученное ранее сообщение FileNotification;

  2. FTRF извлекает файлы из SDS;

  3. FTRF передает полученный файлы в дешифрованном виде Application.

Сценарий взаимодействия, при котором недоступно S3 хранилище (исключительный сценарий)#

  1. Application формирует запрос на передачу файла, вместе с самим файлом и передает FTRF в виде потока, вызвав метод sendFiles();

  2. FTRF совершает обращение к OTTS для получения токена авторизации передачи, опираясь на информацию предоставленную в запросе;

  3. FTRF совершает публикацию файлов в зашифрованном виде в SDS, но SDS не доступен;

  4. Application возвращается ошибка в ответ на сформированный запрос;

Сценарий взаимодействия, при котором недоступен FTRF получателя (исключительный сценарий)#

  1. Application формирует запрос на передачу файла, вместе с самим файлом и передает FTRF в виде потока, вызвав метод sendFiles();

  2. FTRF совершает обращение к OTTS для получения токена авторизации передачи, опираясь на информацию предоставленную в запросе;

  3. FTRF совершает публикацию файлов в зашифрованном виде в SDS;

  4. FTRF формирует уведомление (TransferDescriptor);

  5. FTRF отправляет запрос в FTRF получателя с нотификацией о готовности файлов, но FTRF получателя недоступен;

  6. Application возвращается ошибка в ответ на сформированный запрос;

Сценарий взаимодействия, при котором недоступна АС получателя (исключительный сценарий)#

  1. Application формирует запрос на передачу файла, вместе с самим файлом и передает FTRF в виде потока, вызвав метод sendFiles();

  2. FTRF совершает обращение к OTTS для получения токена авторизации передачи, опираясь на информацию предоставленную в запросе;

  3. FTRF совершает публикацию файлов в зашифрованном виде в SDS;

  4. FTRF формирует уведомление (TransferDescriptor);

  5. FTRF отправляет запрос в FTRF получателя с нотификацией о готовности файлов;

  6. FTRF получателя принимает запрос, валидирует ОТТ токен, извлекает ключ шифрования данных при помощи ОТТ токена, формирует notify сообщение.

  7. FTRF получателя отправляет notify сообщение получателю, получатель недоступен.

  8. Application возвращается ошибка в ответ на сформированный запрос:

Сценарий взаимодействия «Confirm delivery» - подтверждение получения файла#

Опциональный use-case для передаче уведомления отправителю подтверждения о получении и обработки файла

  1. Application вызывает метод FTRF confirmDelivery(), используя полученное ранее сообщение FileNotification;

  2. FTRF отправляет сообщение FTRF отправителя;

  3. FTRF отправителя сообщает АС отправителя о подтверждении получения со стороны получателя:

  4. Application получает успех на вызов confirmDelivery();

Сценарий взаимодействия «Confirm delivery» - подтверждение получения файла, недоступен FTRF отправителя (Исключительный сценарий)#

  1. Application вызывает метод FTRF confirmDelivery(), используя полученное ранее сообщение FileNotification;

  2. FTRF отправляет сообщение FTRF отправителя, но он не доступен.

  3. Application получает ошибку на вызов confirmDelivery();

Сценарий взаимодействия «Delete received files» - удаление полученных файлов#

  1. Application вызывает deleteFiles();

  2. FTRF вызывает deleteObject() по каждому объекту в SDS;

  3. Application получает успех в ответ на deleteFiles();

Сценарий взаимодействия «Delete received files» - удаление полученных файлов, недоступен SDS (исключительный сценарий)#

  1. Application вызывает deleteFiles();

  2. FTRF вызывает deleteObject() по каждому объекту в SDS, но SDS недоступен;

  3. Application получает ошибку в ответ на deleteFiles();