appsettings.json

Шаблон

{
  "Version": "1.0",
  "Serilog": {
    "MinimumLevel": "Warning",
    "WriteTo": [
      {
        "Name": "Async",
        "Args": {
          "configure": [
            {
              "Name": "RollingFile",
              "Args": {
                "pathFormat": "%CONTENT_ROOT%\\Logs\\log-{Date}.txt",
                "fileSizeLimitBytes": null,
                "retainedFileCountLimit": null,
                "outputTemplate": "{Timestamp:o} [{Level:u3}] {SourceContext} ({RequestId}/{ThreadId}) {Message}{NewLine}{Exception}{NewLine}",
                "buffered": false
              }
            },
            {
              "Name": "LiterateConsole",
              "Args": {
                "outputTemplate": "{Timestamp:o} [{Level:u3}] {SourceContext} ({RequestId}/{ThreadId}) {Message}{NewLine}{Exception}{NewLine}"
              }
            },
            { "Name": "Debug" },
            {
              "Name": "EventLog",
              "Args": {
                "logName": "Workflow Technology",
                "source": "Workflow Engine",
                "outputTemplate": "{Timestamp:o}{NewLine}[{Level:u3}] {SourceContext} ({RequestId}/{ThreadId}){NewLine}{Message}{NewLine}{Exception}{NewLine}"
              }
            }
          ]
        }
      }
    ],
    "Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId", "WithRequestId" ]
  },
  "Database": {
    "ServerAddress": "localhost",
    "ServerPort": "5432",
    "User": "postgres",
    "Password": "postgres",
    "Database": "template_project"
  },
  "Storages": {
    "Default": {
      "Path": "Upload",
      "Format": "yyyy\\\\MM\\\\dd"
    }
  },
  "FormsFolder": "C:\\WorkflowSystems\\Projects",
  "BinaryPath": "C:\\WorkflowSystems\\Distr\\WorkflowForms",
  "TempUpdateDir": "C:\\WorkflowSystems\\TempUpdateTest",
  "WebFormsFolder": "",
  "WebBinaryPath": "",
  "WorkflowWebServiceName": "",
  "MobileFormsFolder": "C:\\WorkflowSystems\\Projects",
  "MobileBinaryPath": "D:\\WorkflowEngine\\_Template.v3 (mobile)\\MobileBin",
  "WorkflowServer": {
    "ServerUrl": "http://ws00:7070",
    "WorkflowEngineUpdateService": {
      "Name": "WorkflowEngineUpdateService",
      "Port": 9090
    },
    "HelpDesk": {
      "Enabled": false
    },
    "Update": {
      "Enabled": false
    }
  },
  "SchedulerLog":  "False",
  "SystemLocale": "ru-RU",
  "LogLocale":  "ru-RU",
  "BackupCloudPath": "",
  "BackupCloudInterval": {
    "Start": "01:00",
    "Finish": "05:00"
  },
  "DebugMode": "False",
  "DebugPath": "D:\DebugDC",
  "PerformanceChecking": {
    "Enabled": "False",
    "Delayed": "True",
    "RamThreshold": 2048
  },
  "TimeZone": {
    "TimeZone": "Asia/Yekaterinburg"
  },
  "Kestrel": {
    "EndpointDefaults": {
      "Protocols": "Http1"
    },
    "Certificates": {
      "Default": {
        "Path": "D:\\WorkflowEngine\\Tachki.v3\\certificate-https.pfx",
        "Password": "niBCev&n2FNA#clw"
      }
    }
  }
}

Настройки сервера

TimeZone

Задает временную зону сервера, в которой будут храниться в базе данных все даты со временем.

Необязательное поле. Ожидается название временной зоны в формате IANA.

Значение по умолчанию: "Etc/GMT"

"TimeZone": {
  "TimeZone": "Asia/Yekaterinburg"
}

SystemLocale

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

Необязательное поле. Ожидается одно из допустимых значение:

en-US

английский (США)

ru-RU

русский (Россия)

Значение по умолчанию: "en-US"

"SystemLocale": "ru-RU"

Настройки подключения к базе данных

Обязательное поле Database зачастую содержит основные поля для доступа к базе данных:

  • Database - имя базы данных;

  • ServerPort - порт сервера базы данных;

  • Password - пароль для доступа к серверу базы данных.

Поле ServerAddress не указывается, так как служба Engine и сервер СУБД чаще всего находятся на одном компьютере. Для остальных полей достаточно значений по умолчанию.

"Database": {
  "ServerAddress": "localhost",
  "ServerPort": "5432",
  "User": "postgres",
  "Password": "postgres",
  "Database": "template_project"
}

ServerAddress

IP-адрес или доменное имя компьютера, на котором развернута база данных.

Необязательное поле. Любое значение будет переведено в текстовое.

Значение по умолчанию: "localhost"

"ServerAddress": "localhost"

ServerPort

Порт компьютера, который слушает сервер базы данных.

Необязательное поле. Любое значение будет переведено в текстовое.

Значение по умолчанию: "5432"

"ServerPort": "5432"

User

Имя пользователя, имеющего доступ к серверу СУБД, под которым служба Engine будет обращаться к базе данных.

При установке PostgreSQL суперпользователь с именем postgres создается по умолчанию.

Необязательное поле. Любое значение будет переведено в текстовое.

Значение по умолчанию: "postgres"

"User": "postgres"

Password

Пароль пользователя, имеющего доступ к серверу СУБД, под которым служба Engine будет обращаться к базе данных.

При установке PostgreSQL пароль для суперпользователь postgres задается вручную и может отличаться.

Необязательное поле. Любое значение будет переведено в текстовое.

Значение по умолчанию: "postgres"

"Password": "postgres"

Database

Имя базы данных, с которой будет взаимодействовать служба Engine.

Обязательное поле. Любое значение будет переведено в текстовое.

"Database": "template_project"

Пути до папок клиентских частей

FormsFolder

Путь до папки, в которой лежат xml-файлы desktop-версии WT-приложения. Если в файле конфигурации desktop-клиента настройка UseSourceCache имеет значение True, то сервер будет отдавать на клиентскую машину xml-файлы из этой папки.

Необязательное поле. Ожидается абсолютный путь до папки.

Значение по умолчанию: отсутствует

"FormsFolder": "C:\\WorkflowSystems\\Projects"

BinaryPath

Абсолютный путь до папки, в которой лежат бинарные файлы desktop-версии WT-приложения. Если в файле конфигурации desktop-клиента настройка CheckBinaryFiles имеет значение True, то сервер будет отдавать на клиентскую машину бинарные файлы из этой папки.

Необязательное поле. Ожидается абсолютный путь до папки.

Значение по умолчанию: отсутствует

"BinaryPath": "C:\\WorkflowSystems\\Distr\\WorkflowForms"

TempUpdateDir

Абсолютный путь до папки временных файлов обновления. Так же в папке хранятся файлы, которые позволяют откатиться к ним, т.е. предоставляют возможность восстановить старую версию программы и базы данных.

Необязательное поле. Ожидается абсолютный путь до папки.

Значение по умолчанию: отсутствует

"TempUpdateDir": "C:\\WorkflowSystems\\TempUpdateTest"

WebFormsFolder

Путь до папки, в которой лежат xml-файлы web-версии WT-приложения.

Необязательное поле. Ожидается абсолютный путь до папки.

Значение по умолчанию: отсутствует

"WebFormsFolder": ""

WebBinaryPath

Абсолютный путь до папки, в которой лежат бинарные файлы web-версии WT-приложения.

Необязательное поле. Ожидается абсолютный путь до папки.

Значение по умолчанию: отсутствует

"WebBinaryPath": ""

MobileFormsFolder

Путь до папки, в которой лежат xml-файлы mobile-версии WT-приложения.

Необязательное поле. Ожидается абсолютный путь до папки.

Значение по умолчанию: отсутствует

"MobileFormsFolder": "C:\\WorkflowSystems\\Projects"

MobileBinaryPath

Абсолютный путь до папки, в которой лежат бинарные файлы mobile-версии WT-приложения.

Необязательное поле. Ожидается абсолютный путь до папки.

Значение по умолчанию: отсутствует

"MobileBinaryPath": "D:\\WorkflowEngine\\_Template.v3\\MobileBin"

Настройки файловых хранилищ

Storages

Поле содержит массив объектов, описывающих настройки файловых хранилищ.

Имя вложенного объекта (элемента массива) определяет ключ, по которому можно обратиться к хранилищу в тэге Storage команды UploadFileCommand.

"Storages": {
  "Default": {
    "Path": "Upload"
  },
  "Audio": {
    "Path": "D:\\WorkflowSystems\\Audio",
    "Format": "yyyy\\\\MM\\\\dd"
  }
}

Хранилище Default существует в платформе по умолчанию. Указывая его в поле Storages, можно переопределить путь до его корневой папки и/или структуру вложенных папок.

Path

Путь до корневой папки хранилища.

Обязательное поле. Ожидается абсолютный путь или относительный путь, относительно корневой папки службы Engine.

"Path": "D:\\WorkflowSystems\\Audio"

Format

Задает структуру вложенных папок.

Необязательное поле. Если не указано, то файлы будут сохраняться в корневую папку хранилища.

"Format": "yyyy\\\\MM\\\\dd"

Службы WorkflowServer

Поле WorkflowServer содержит настройки для системы лицензирования, службы обновления и HelpDesk.

"WorkflowServer": {
  "ServerUrl": "http://lic.wfsys.ru:7070",
  "WorkflowEngineUpdateService": {
    "Name": "WorkflowEngineUpdateService",
    "Port": 9090
  },
  "HelpDesk": {
    "Enabled": true
  },
  "Update": {
    "Enabled": true
  }
}

ServerUrl

Задает IP-адрес и порт сервера службы лицензирования.

Обязательное поле.

"ServerUrl": "http://lic.wfsys.ru:7070"

WorkflowEngineUpdateService

Настройки службы обновления серверной части WT-программы: имя службы и порт, на котором будет запускаться служба. Служба всегда запускается на localhost для повышения вероятности запуска службы.

"WorkflowEngineUpdateService": {
  "Name": "WorkflowEngineUpdateService",
  "Port": 9090
}

HelpDesk

Признак, включающий возможность отправлять обращения в сервис HelpDesk.

Необязательное поле. Для вложенного поля Enabled ожидается логическое значение.

Значение по умолчанию: false

"HelpDesk": {
  "Enabled": true
}

Update

Признак, включающий возможность взаимодействия со службой обновления.

Необязательное поле. Для вложенного поля Enabled ожидается логическое значение.

Значение по умолчанию: false

"Update": {
  "Enabled": true
}

Резервное копирование

BackupCloudPath

Задает адрес облачного хранилища, в которое будет происходить резервное копирование.

Необязательное поле.

Значение по умолчанию: отсутствует

"BackupCloudPath": ""

BackupCloudInterval

Задает интервал времени, каждый день в течение которого будет производиться резервное копирование. Время начала и окончания периода резервирования задается с точностью до минуты.

Необязательное поле.

Значение по умолчанию: "01:00" и "05:00"

"BackupCloudInterval": {
  "Start": "01:00",
  "Finish": "05:00"
}

Настройки логирования

LogLocale

Задает код культуры, который определяет язык сообщений об ошибке публикуемых в журнале событий Windows.

Необязательное поле. Ожидается одно из допустимых значение:

en-US

английский (США)

ru-RU

русский (Россия)

Значение по умолчанию: "en-US"

"LogLocale": "ru-RU"

SchedulerLog

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

Необязательное поле. Ожидается логическое значение.

Значение по умолчанию: false

"SchedulerLog": false

Serilog

Настройка логирования. Подробнее на github.com.

%CONTENT_ROOT% - системная переменная указывающая на папку с сервером.

"Serilog": {
  "MinimumLevel": "Warning",
  "WriteTo": [
    {
      "Name": "Async",
      "Args": {
        "configure": [
          {
            "Name": "RollingFile",
            "Args": {
              "pathFormat": "%CONTENT_ROOT%\\Logs\\log-{Date}.txt",
              "fileSizeLimitBytes": null,
              "retainedFileCountLimit": null,
              "outputTemplate": "{Timestamp:o} [{Level:u3}] {SourceContext} ({RequestId}/{ThreadId}) {Message}{NewLine}{Exception}{NewLine}",
              "buffered": false
            }
          },
          {
            "Name": "LiterateConsole",
            "Args": {
              "outputTemplate": "{Timestamp:o} [{Level:u3}] {SourceContext} ({RequestId}/{ThreadId}) {Message}{NewLine}{Exception}{NewLine}"
            }
          },
          { "Name": "Debug" },
          {
            "Name": "EventLog",
            "Args": {
              "logName": "Workflow Technology",
              "source": "Workflow Engine",
              "outputTemplate": "{Timestamp:o}{NewLine}[{Level:u3}] {SourceContext} ({RequestId}/{ThreadId}){NewLine}{Message}{NewLine}{Exception}{NewLine}"
            }
          }
        ]
      }
    }
  ],
  "Enrich": [ "FromLogContext", "WithMachineName", "WithThreadId", "WithRequestId" ]
}

Отладка

В режиме отладки сервер пишет в файлы информацию:

  • время начала и время окончания выполнения запроса к базе данных;

  • время начала и время окончания обработки запроса от клиентской части.

Для работы с логами отладки используется дополнительная утилита - WorkflowVisualizer.

DebugMode

Признак, включающий на сервере режим отладки.

Необязательное поле. Ожидается логическое значение.

Значение по умолчанию: False

"DebugMode": "True"

DebugPath

Путь до папки, в которую будут сохраняться файлы логов клиентской части.

Необязательное поле. Ожидается абсолютный путь.

Значение по умолчанию: "D:\\DebugDC"

"DebugPath": "D:\\DebugDC"

PerformanceChecking

Задает настройки проверки производительности: служба Engine каждый час выполняют проверку, насколько загружена оперативная память.

Необязательное поле.

"PerformanceChecking": {
  "Enabled": "False",
  "Delayed": "True",
  "RamThreshold": 2048
}

Enabled

Признак, включающий проверку производительности.

Необязательное поле. Ожидается логическое значение.

Значение по умолчанию: false

Delayed

Признак, включающий задержку в 5 минут при старте проверки производительности.

Необязательное поле. Ожидается логическое значение.

Значение по умолчанию: true

RamThreshold

Задает ограничение по объему используемой оперативной памяти (в МБ).

Необязательное поле. Ожидается целочисленное положительное значение.

Значение по умолчанию: 2048

Условия выполнения проверки:

  1. Проверка запускается через 5 минут после старта сервера;

  2. Если зафиксировано превышение, то далее проверки выполняются каждую минуту. Если зафиксировано 15 превышений подряд, то запускается логирование;

  3. Если превышения нет, то следующая проверка выполнится через час.

Логи пишутся в папку C:\ProgramData\Workflow Systems в файлы:

  • PerformanceHighUsage.txt - значение проверки;

  • PerformanceHighUsage_YYYY-MM-DD-HH24.txt - записывается время начала и окончания всех операций и действий на форме.

Настройки HTTPS

Web-сервер Kestrel поддерживает защиту конечных точек с помощью HTTPS. Для повышения безопасности передаваемых между клиентом и сервером данных, протокол HTTPS предусматривает их шифрование с помощью протокола TLS.

Для HTTPS требуется сертификат TLS, который должен хранится на сервере и быть явно настроен.

Подробнее про настройку HTTPS можно прочитать в статье.

"Kestrel": {
  "EndpointDefaults": {
    "Protocols": "Http1"
  },
  "Certificates": {
    "Default": {
      "Path": "D:\\WorkflowEngine\\Template.v3\\certificate-https.pfx",
      "Password": "niBCev&n2FNA#clw"
    }
  }
}

Protocols

Задает версию протокола HTTP.

Доступные значения описаны в разделе Настройка протоколов HTTP официальной статьи от Microsoft.

Path

Задается абсолютный путь до файла сертификата TLS.

Password

Задается пароль для доступа к данным сертификата TLS.

Last updated