Дизайн обробки запитів на ініціювання бізнес-процесів зовнішніми системами через Трембіту

1. Призначення

Зовнішні системи повинні мати можливість ініціювати бізнес-процес через Трембіту.

1.1. Припущення

  • Бізнес-процеси, які викликані через Трембіту, автоматичні та синхронні(synchronous).

1.2. Базові принципи реалізації вимог

  • При ініціюванні бізнес-процесу зовнішні системи мають можливість передати вхідні параметри(start_vars) до SOAP запросу.

  • Валідація вхідних параметрів(start_vars)

  • В SOAP відповіді присутні return_vars, якщо вони є.

  • Системний підпис автоматично генерується при наявності параметра requires_signature для відповідного бізнес-процесу

    Функціонал накладання системного підпису надалі може бути змінений на отримання підпису зовнішньої системи за наявності відповідних вимог
  • start_vars зберігаються у Ceph bucket разом із згенерованим системним підписом за таким самим принципом, як і form-data для кабінетів користувача

  • start_vars є доступний для використання в рамках бізнес-процесу у тому числі і за допомогою juel функцій

Аспект авторизації описаний окремо за посиланням.

2. Взаємодія з Data Factory

Взаємодія soap-сервісу з дата фабрикою відбувається з бізнес-процесів через bpms сервіс. Це означає, що будь-який виклик ендпоінта дата фабрики буде відбуватися з токеном сервіс-акаунта зовнішнього клієнта підсистеми-учасника в якому доступні автоматично налаштовані ролі для виконання авторизації доступу до даних на рівні Дата Фабрики.

2.1. Приклад бізнес-процесу

init bpmn example
  • В x-digital-signature-source ключ документа з даними start_vars без підписа

  • В x-digital-signature-derived-source ключ документа з системним підписом

2.2. Відкриті питання

  • Чи потрібно користувачу підписувати дані та присилати підпис у soap-запиті?

5. Файл регулювання вхідних/вихідних параметрів бізнес-процесу

Файл, який описує вхідні та вихідні параметри для унікального бізнес-процесу. На базі цього файла буде виконана валідація вхідних параметрів при ініціалізації бізнес-процесу.

start_vars/return_vars змінні мають підтримку тільки примітивних типів: int, long, string, boolean.

Формат trembita/business-processes.yml:

trembita:
    process_definitions:
      - process_definition_id: '<id>' # Унікальний ідентифікатор бізнес-процесу
        requires_signature: boolean # Вказує на необхідність накладання системного підпису
        start_vars: # Список вхідних параметрів бізнес-процесу
          - <var_name>
          - ...
        return_vars: # Список вихідних параметрів, які будуть в респонсі ініціатора
          - <var_name>
          - ...
      - process_definition_id: '<id>'
        requires_signature: boolean
        start_vars:
          - <var_name>
          - ...
        return_vars:
          - <var_name>
          - ...

Приклад конфігурації:

trembita:
    process_definitions:
      - process_definition_id: 'add-lab'
        requires_signature: true
        start_vars:
          - 'edrpou'
          - 'name'
        return_vars:
          - 'labId'
          - 'status'