Настройки сценариев и скриптов в файле конфигурации

Дополнительные статьи:

Возможность редактирования Node.js скриптов

В файл настройки конфигурации в секции Custom доступно разрешить редактирование Node.js скриптов с помощью параметра AllowEditNodeJsScripts:

  • Если установлено значение true, на инстансе можно отдельно выбрать использование интерпретатора Node.js.
  • Если установлено значение false (по умолчанию):
    • Скрипты и сценарии будут выполнены с использованием того интерпретатора, который настроен для инстанса (ClearScript или NiL.JS)
    • Вручную выбрать использование Node.jsна инстансе недоступно

Настройка недоступна для SaaS-инстансов в целях безопасности.


Локальная отладка js-скриптов

Локальная отладка js-скриптов позволяет выгружать файл с путями и ключами доступа к конкретному инстансу, и сразу в процессе написания скрипта проверять его работоспособность именно на целевом инстансе Case.one, чтобы учесть все нюансы и сразу обнаружить неточности. 

Для запуска локальной отладки js-скриптов:

  1. В разделе Администрирование — Сценарии откройте скрипт.
  2. Скачайте js-файл с контекстом с помощью кнопки Скачать контекст для отладки или метода api/AutomationScriptScheme/GetDebugContext.
  3. Скачайте zip-архив с заглушками встроенных модулей Case.one с помощью кнопки Скачать скрипты для отладки или метода api/AutomationScriptScheme/GetDebugScripts.
  4. Распакуйте архив и поместите полученные файлы в одну папку.
  5. Добавьте файл package.json.
  6. Проверьте, что в package.json установлено значение "type": "module".
  7. Запустите скрипт с помощью команды, где test.js — пример отлаживаемого скрипта:

SET CASEONE_MAIN_SCRIPT=test.js
node caseone.system.scriptRunner.js

test.js — пример отлаживаемого скрипта:

export async function main(context) {
  console.log(context.BaseUrl);
}

Пример структуры

Настройка запуска сценариев автоматизации через RabbitMQ

Запуск сценариев автоматизации через RabbitMQ включен по умолчанию — при возникновении в системе события в RabbitMQ автоматически ставится задача WorkflowService.RunAutomationScriptsSync по запуску сценариев в очередь automation_scripts.

Включение запуска сценариев через RabbitMQ:

{
    "Custom": {
        // ...
        "AutomationScriptsUse RabbitMQ": true// false — сценарии запускаются как раньше, 
true — сценарии запускаются через RabbitMQ (значение по умолчанию)
    }
}

Через RabbitMQ доступно указать количество узлов, которые будут обрабатывать очередь со сценариями автоматизации:

{
    "Custom": {
        // ...
        "AutomationScriptsWorkerCount": 24 
// по умолчанию равняется кол-ву ядер процессора
    }
}

Для последовательного и синхронного выполнения всех операторов сценария, у которых задана нулевая задержка (кроме оператора Уведомить), укажите настройку в БД для конкретного сценария следующим SQL-скриптом:

update
    CaseMap.AutomationScripts
set
    IsSequential = 1 -- 1 — для включения последовательного выполнения, 0 — для отключения
where
    Id = '...'-- указать идентификатор нужного сценария

Также доступно указать настройку в appsettings.json для включения последовательного выполнения для всех сценариев:

{
    "Custom": {
        // ...
        "AutomationScriptsSequentialMode": "AllScripts"// значение по умолчанию — ConfiguredScripts, 
последовательность определяется флагом в БД отдельно для каждого сценария; 
чтобы запретить последовательное выполнение глобально, нужно указать Disabled
    }
}

Внимание! Включение последовательного выполнения сценария рекомендовано только для тех сценариев, где нарушение последовательности критично, т.к. оно увеличивает время выполнения сценария.


Для включения логирования выполненных шагов сценариев необходимо включить трассировку в секции rules в nlog.config для записи идентификаторов сработавших сценариев и выполненных шагов:

<logger name="WorkflowTrace" appendTo="f" minlevel="Trace" />