﻿Проект содержит пример создания серверного модуля расширения для реализации пользовательских действий скриптов автоматизации.
Пример добавляет новое действие UpdateDocumentStateOnSigning, с помощью которого документ будет переведен в состояние "Подписан" при подписании всех запросов на подпись.
Исходные данные:
1. В Pilot-myAdmin в конфигурации БД у типа "document" необходимо создать атрибут с именем "approvedState" типа "Состояние", 
в машине состояний которого необходимо добавить состояния none и approved с возможностью перехода как от none к approved, так и от approved к none.
2. Добавляем новый скрипт автоматизации:

[
  {
    "when": "DocumentSignatureRequestChanged",
    "params": {
      "triggerType": "Server",
      "sourceTypes": [
        "document"
      ]
    },
    "then": [
      {
        "activity": "UpdateDocumentStateOnSigning",
        "params": {
          "stateAttributeName": "UserState",
          "signedStateName": "approved",
          "notSignedStateName": "none"
        }
      }
    ]
  },
  {
    "when": "VersionChanged",
    "params": {
      "triggerType": "Server",
      "sourceTypes": [
        "document"
      ]
    },
    "then": [
      {
        "activity": "UpdateDocumentStateOnSigning",
        "params": {
          "stateAttributeName": "UserState",
          "signedStateName": "approved",
          "notSignedStateName": "none"
        }
      }
    ]
  },
  {
    "when": "DocumentSigned",
    "params": {
      "triggerType": "Server",
      "sourceTypes": [
        "document"
      ]
    },
    "then": [
      {
        "activity": "UpdateDocumentStateOnSigning",
        "params": {
          "stateAttributeName": "UserState",
          "signedStateName": "approved",
          "notSignedStateName": "none"
        }
      }
    ]
  }
]

Данный скрипт будет запускать действие UpdateDocumentStateOnSigning, добавленное данным модулем расширения при наступлении одного из следующих событий:
1. DocumentSignatureRequestChanged - у документа были добавлены или удалены запросы на подпись
2. VersionChanged - была создана новая версия документа
3. DocumentSigned - документ был подписан

При наступлении любого из вышеперечисленных событий статус документа будет пересчитан. При согласовании документа всеми участниками им будет отправлена нотификация с текстом "Документ согласован".