Серверные модули расширения
С помощью модулей расширения к 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, из которых перевод состояния может быть осуществлён:
"{состояние_1}",
"{состояние_2}",
...
"{состояние_n}",
],
Если параметра statesFrom в скрипте нет, или список пуст, то переход осуществляется всегда.
Пример:
Документ вложили в процесс согласования с двумя согласующими. Первый согласующий не подписывает, ставит состояние Не согласовано. Такое же состояние ставится и на документе. Второй подписывает, и документу ставится состояние Согласовано, что не является правильным, ведь первый согласующий уже отказался его подписывать.
Для решения возникшей ситуации, нужно добавить в скрипт параметр statesFrom, перечислив в списке все состояния, кроме Не согласовано. В этом случае, после действий второго согласовывающего, документ останется не согласованным.