Серверные модули расширения

С помощью серверных модулей расширения к Pilot-Server администратор базы данных может расширить функционал сервера, например, создать собственное действие для применения в скриптах автоматизации. Для создания серверных модулей ознакомьтесь с разделом SDK для серверных модулей расширения документации SDK.

Пример готового серверного модуля расширения

Серверный модуль расширения ServerActivitySample — пример из комплекта SDK, реализует пользовательское действие UpdateDocumentStateOnSigning, которое при подписании документа изменит его состояние. Для активизации действия необходимо:

  • Подключить модуль ServerActivitySample.
  • Создать атрибут UserState типа Состояние для типа Документ.
  • Добавить скрипт автоматизации UpdateDocumentStateOnSigning.

Подключение модуля

Рассмотрим подключение модуля ServerActivitySample из комплекта SDK:

  • Скачайте и распакуйте архив комплекта SDK.

  • Откройте распакованную папку. Пройдите далее по пути

    Server\Samples\ServerActivitySample\bin\Release\netstandard2.0

  • Скопируйте три файла модуля: ServerActivitySample.serverxt.deps.json, ServerActivitySample.serverxt.dll, ServerActivitySample.serverxt.pdb.
  • Перейдите в расположение базы данных, для которой будет работать серверный модуль расширения.
  • Создайте папку Extensions, а в ней папку ServerActivitySample.
  • Вставьте скопированные файлы модуля.

    Для Windows размещение серверного модуля расширения может выглядеть так:

    C:\ProgramData\ASCON\Pilot Server\Databases\[Папка Вашей базы]\Extensions\ServerActivitySample

    Размещение серверного модуля расширения для Linux:

    /opt/pilot-server/bases/[Папка_Вашей_базы]/Extensions/ServerActivitySample

Для работы модуля в других базах данных, скопируйте его в папки соответствующие этим базам данных.

Если серверный модуль загружен из Интернета, необходимо выполнить разблокировку загруженных файлов. Откройте свойства файлов и, в зависимости от операционной системы, нажмите кнопку или выберите опцию Разблокировать.

  • В Pilot-myAdmin остановите базу данных и снова её запустите. Также можно перезапустить службу PilotServer.
  • Если всё было сделано правильно, то в разделе Серверные модули расширения вкладки Общая информация Вы увидите наименование установленного модуля ServerActivitySample, а также его версию, дату изменения и путь к нему.

Добавление атрибута

Для работы пользовательского скрипта UpdateDocumentStateOnSigning в конфигурации базы данных необходим тип Документ (document) с атрибутом approvedState типа Состояние, в группе состояний которого должны присутствовать состояния none и approved с возможностью перехода как от none к approved, так и от approved к none. Для этого:

  • В Pilot-myAdmin откройте нужную базу данных, перейдите на вкладку Типы.
  • Для типа Документ (document) создайте атрибут типа Состояние с именем approvedState.
  • При создании атрибута в выпадающем списке Группа состояний выберите Управление группами состояний.
  • В открывшемся окне создайте новую группу состояний с именем, например, Approvation.
  • Нажмите кнопку Выбор Состояний. Отметьте галочкой состояние Согласовано (approved) и нажмите Выбрать.
  • Выделите состояние Нет. Нажмите кнопку Создать переход.
  • Будет создан переход из состояния Нет в состояние Согласовано.
  • Аналогичным образом создайте переход из состояния Согласовано в состояние Нет.

Добавление скрипта автоматизации

В myAdmin откройте нужную базу данных, перейдите на вкладку Автоматизация и нажмите кнопку Создать сценарий. Задайте имя сценария, например ServerActivitySample. Скопируйте приведённый ниже скрипт, вставьте его в поле справа и нажмите Сохранить изменения.

[

    {

        "when": "DocumentSignatureRequestChanged",

        "params": {

            "triggerType": "Server",

            "sourceTypes": [

                "document"

            ]

        },

        "then": [

            {

                "activity": "UpdateDocumentStateOnSigning",

                "params": {

                    "stateAttributeName": "approvedState",

                    "signedStateName": "approved",

                    "notSignedStateName": "none"

                }

            }

        ]

    },

    {

        "when": "VersionChanged",

        "params": {

            "triggerType": "Server",

            "sourceTypes": [

                "document"

            ]

        },

        "then": [

            {

                "activity": "UpdateDocumentStateOnSigning",

                "params": {

                    "stateAttributeName": "approvedState",

                    "signedStateName": "approved",

                    "notSignedStateName": "none"

                }

            }

        ]

    },

    {

        "when": "DocumentSigned",

        "params": {

            "triggerType": "Server",

            "sourceTypes": [

            "document"

            ]

        },

        "then": [

            {

                "activity": "UpdateDocumentStateOnSigning",

                "params": {

                    "stateAttributeName": "approvedState",

                    "signedStateName": "approved",

                    "notSignedStateName": "none"

                }

            }

        ]

    }

]

 

Cкрипт будет запускать действие UpdateDocumentStateOnSigning, добавленное данным модулем расширения при наступлении одного из трёх событий:

  • Изменились запросы на подпись документа (Сработал триггер DocumentSignatureRequestChanged) .
  • Была создана новая версия документа (Сработал триггер VersionChanged).
  • Документ был подписан (Сработал триггер DocumentSigned).

При наступлении любого из вышеперечисленных событий запустится действие UpdateDocumentStateOnSigning, которое установит состояние Согласовано (approved), если документ подписан, или состояние <Нет> (none), если документ не подписан.