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

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

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

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

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

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

Серверные модули расширения подключаются в клиентском приложении с помощью меню СервисНастройкиМодули расширения. Подробнее здесь.

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

В 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), если документ не подписан.

Параметр statesFrom

Работу действия можно ограничить списком состояний, указанных в необязательном параметре statesFrom, из которых перевод состояния может быть осуществлён:

"statesFrom": [
    "{состояние_1}",
    "{состояние_2}",
    ...
    "{состояние_n}",
],

Если параметра statesFrom в скрипте нет, или список пуст, то переход осуществляется всегда.

Пример:

Документ вложили в процесс согласования с двумя согласующими. Первый согласующий не подписывает, ставит состояние Не согласовано. Такое же состояние ставится и на документе. Второй подписывает, и документу ставится состояние Согласовано, что не является правильным, ведь первый согласующий уже отказался его подписывать.

Для решения возникшей ситуации, нужно добавить в скрипт параметр statesFrom, перечислив в списке все состояния, кроме Не согласовано. В этом случае, после действий второго согласовывающего, документ останется не согласованным.