Workflow Engine (Syntax)
Платформа WTСинтаксисБаза знаний
  • Workflow.xml
  • Workflow Engine
    • AccessPoints
    • ApiMethod
    • Commands
      • SMSCenterEngineCommand
        • GetBalanceCommand
        • GetCostCommand
        • GetStatusCommand
        • SendCommand
      • FilesCopyCommand
      • LogWriteCommand
      • SchedulerConditionRefreshCommand
      • SequentialCommand
      • SqlQueryCommand
    • Conditions
      • ComparisonCondition
        • EqualCondition
        • GreaterCondition
        • IsNotNullCondition
        • IsNullCondition
        • LessCondition
        • NotEqualCondition
        • NotGreaterCondition
        • NotLessCondition
      • SqlQueryCondition
    • DataTypes
      • BooleanDataType
      • DateDataType
      • DateTimeDataType
      • DoubleDataType
      • IntegerDataType
      • ShortDataType
      • StringDataType
      • TableDataType
      • TimeSpanDataType
    • Scheduler
    • SqlQueries
      • SqlQuery
      • UpdateSqlQuery
    • Permissions
      • Permission
      • AccessPointPermission
      • ApiMethodPermission
      • CommandPermission
      • SqlQueryPermission
    • Roles
    • Groups
    • Универсальные значения
      • Константа
      • Parameter
      • CommandResult
      • ConditionResult
      • Логическое выражение
Powered by GitBook
On this page
  • Шаблон Scheduler
  • Описание Task
  • Тэги, специфичные для Task
  • Condition
  • Commands
  • ExecutionStrategy
  • Тэги, специфичные для условия Values
  • Condition
  • Тэги, специфичные для условия Query
  • Condition
  • Тэги, специфичные для условия OnStart
  • Condition
  1. Workflow Engine

Scheduler

Планировщик задач; позволяет выполнять команды по расписанию или при старте сервера.

Шаблон Scheduler

<Scheduler>
  <Task Name="">
    <Condition Type="Values">
      <Month></Month>
      <Day><Day>
      <Hour></Hour>
      <Minute></Minute>
      <Second></Second>
    </Condition>
    <Commands StopOnError="">
      <Command Name="" />
      <Command Name="">
        <Parameter Name="" />
        <Parameter Name="" />
      </Commands>
      <If>
        <When></When>
        <Then StopOnError="">
          <Command Name="" />
        </Then>
        <ElseIf>
          <When></When>
          <Then StopOnError="">
            <Command Name="">
              <Parameter Name="" />
              <Parameter Name="" />
            </Command>
          </Then>
        </ElseIf>
        <Else StopOnError="">
          <Command Name="" />
        </Else>
      </If>
    </Commands>
    <ExecutionStrategy></ExecutionStrategy>
  </Task>
  <Task Name="">
    <Condition Type="Query">
      <Text></Text>
    </Condition>
    <Commands>
      <Command Name="" />
    </Commands>
    <ExecutionStrategy></ExecutionStrategy>
  </Task>
  <Task Name="">
    <Condition Type="OnStart" />
    <Commands>
      <Command Name="" />
    </Commands>
    <ExecutionStrategy></ExecutionStrategy>
  </Task>
</Scheduler>

Описание Task

<Task Name="TaskName">
  <!--Тэги, специфичные для Task-->
</Task>

Атрибуты Task

Name

Название условия.

Обязательный атрибут.

Тэги, специфичные для Task

Condition

Условие, которое используется для запуска задач.

<Condition Type="" />

Атрибуты тэга <Condition>

Type

Тип условия.

Commands

Список команд, которые будут выполнены последовательно.

<Commands StopOnError="True">
  <Command Name="CommandName1" />
  <Command Name="CommandName2">
    <Parameter Name="ParameterName1">parameter 1</Parameter>
    <Parameter Name="ParameterName2">parameter 2</Parameter>
  </Command>
  <If>
    <When></When>
    <Then StopOnError="True">
      <Command Name="CommandName3">
        <Parameter Name="ParameterName1">parameter 1</Parameter>
        <Parameter Name="ParameterName2">parameter 2</Parameter>
      </Command>
    </Then>
    <ElseIf>
      <When></When>
      <Then StopOnError="True">
        <Command Name="CommandName4" />
      </Then>
    </ElseIf>
    <Else StopOnError="True">
      <Command Name="CommandName5" />
    </Else>
  </If>
</Commands>

Тэг <Command>

Обращение к команде по имени для ее выполнения.

<!--Вариант 1-->
<Command Name="CommandName1" />

<!--Вариант 2-->
  <Command Name="CommandName2">
    <Parameter Name="ParameterName1">parameter 1</Parameter>
    <Parameter Name="ParameterName2">parameter 2</Parameter>
  </Command>

Тэг <Parameter>

Дополнительный параметр, который будет передан в команду при выполнении.

Необязательный тэг. Значение тэга <Parameter>: любое значение.

Атрибуты тэга <Parameter>

Name

Имя входящего значения.

Ожидается имя одного из параметров, передаваемых в команду.

ExecutionStrategy

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

Если тэг отсутствует, то используется значение ExecuteMissed.

Необязательный тэг. Ожидается одно из следующих значений:

ExecuteMissed

Будут запущены все пропущенные задания согласно условиям. Учитывается время последнего выполнения задачи. Если задача ранее не выполнялась, т.е. в таблице public.schedule в базе данных отсутствует запись, то будет выполнен только один пропущенный вызов.

ExecuteLastMissed

Будет запущено последнее пропущенное задание, а далее согласно условиям

WaitNext

Задача запускается в следующее плановое время

Restart

Задача будет перезапущена с текущим временем

RestartAndWaitNext

Задача будет перезапущена с текущим временем и запущена при следующем плановом запуске

<ExecutionStrategy>ExecuteMissed</ExecutionStrategy>

Пример

Задача выполняется каждые 5 минут. Текущее время 11:28. Последнее выполнение задачи было в 11:00.

При стратегии ExecuteMissed задача будет выполнена 11:05, 11:10, 11:15, 11:20, 11:25, 11:30, 11:35 и т.д.

При стратегии ExecuteLastMissed - 11:25, 11:30, 11:35 и т.д.

При стратегии WaitNext - 11:30, 11:35 и т.д.

При стратегии Restart - 11:28, 11:33, 11:38 и т.д.

При стратегии RestartAndWaitNext - 11:33, 11:38 и т.д.

Тэги, специфичные для условия Values

<Condition Type="Values">
  <Month></Month>
  <Day><Day>
  <Hour></Hour>
  <Minute></Minute>
  <Second></Second>
</Condition>

Condition

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

Условие запуска задаётся в одном из описанных форматов:

  • Пустое поле - ближайшее значение из интервала возможных значений. Например, для дней месяца - это значения от 1 до 31.

  • \d+(,\d+){0,} - точные значения. Например, 1,5,9 будет выполняться в январе, мае, сентябре.

  • \d+-\d+ - интервал значений. Например, 1-9 будет выполняться с января по сентябрь.

  • /\d+ - повтор через указанный интервал времени. Например, /2 будет повторяться каждые 2 месяца, начиная с текущего.

  • \d+/\d+ - повтор через указанный интервал времени, начиная с указанного значения. Например, 3/2 - будет повторяться каждые 2 месяца, начиная с марта и до конца года. В следующем году первый раз снова выполнится в марте.

  • \d+-\d+/\d+ - повтор через указанный интервал времени в указанном интервале значений. Например, 3-9/2 - будет повторяться каждые 2 месяца, начиная с марта и по сентябрь включительно. В следующем году первый раз снова выполнится в марте.

Тэг <Month>

Задаёт месяц, в котором должно выполняться задание.

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

Тэг <Day>

Задаёт дни, в которых должно выполняться задание.

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

Тэг <Hour>

Задаёт часы, в которые должно выполняться задание.

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

Тэг <Minute>

Задаёт минуты, в которые должно выполняться задание.

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

Тэг <Second>

Задаёт секунды, в которые должно выполняться задание.

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

Пример 1

Запускает задание в начале каждой минуты:

<Condition Type="Values">
    <Second>0</Second>
</Condition>

Пример 2

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

<Condition Type="Values">
    <Minute>/5</Minute>
</Condition>

Пример 3

Запускает задание с 8:00 до 21:59 каждые 5 минут каждый день:

<Condition Type="Values">
    <Hour>8-21</Hour>
    <Minute>0/5</Minute>
</Condition>

Пример 4

Запустит задание в 7:15:19 4 февраля:

<Condition Type="Values">
    <Month>2</Month>
    <Day>4</Day>
    <Hour>7</Hour>
    <Minute>15</Minute>
    <Second>19</Second>
</Condition>

Тэги, специфичные для условия Query

<Condition Type="Query">
  <Text>
    SELECT 1 AS "Month"
    FROM table
  </Text>
</Condition>

Condition

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

Тэг <Text>

Содержит sql-запрос для получения условия запуска.

Обязательный тэг. Значение тэга <Text>: текст sql-запроса.

Sql-запрос должен вернуть хотя бы один столбец с именем из списка: Month, Day, Hour, Minute, Second.

Тэги, специфичные для условия OnStart

<Condition Type="OnStart" />

Condition

Условие используется для запуска задач при старте сервера.

Значение тэга <Condition>: не ожидается.

Last updated 1 year ago

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

Обязательный тэг. В качестве значения тэга ожидается список тэгов и/или конструкций <If>.

Необязательный тэг. В качестве значения тэга ожидается список тэгов .

Значение тэга <Condition>: список тэгов , , , и .

Значение тэга <Condition>: тэг .

Формат значений столбцов описан в условии .

<Command>
<Parameter>
<Month>
<Day>
<Hour>
<Minute>
<Second>
<Text>
Values
Values
Query
OnStart