Селекторы

Field

Селектор поля.

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

Значение тэга не ожидается.

<Field Name="FieldName" Field="SourceFieldName"/>

Необязательный атрибут Field задает название поля исходного соединения с данными, из которого будут тянуться данные. Если атрибут Field указан, то значение из атрибута Name используется как псевдоним для поля преобразованного соединения с данными. Если атрибут Field отсутствует, то будет использоваться значение из атрибута Name для получения данных из исходного соединения с данными.

Value

Селектор значения.

Добавляет в результат колонку с именем из атрибута Name и типом данных из атрибута DataType. Для каждой строки в ячейку новой колонки ставиться значение, указанное в качестве значения тэга.

Ожидается любое значение.

<Field Name="FieldName" Type="Value" DataType="StringDataType">Value</Field>

Необязательный атрибут DataType задает тип данных, в который будет преобразовано значение. В качестве значения атрибута ожидается один из доступных типов данных. По умолчанию используется значение StringDataType.

Substitution

Селектор подстановки значений.

Добавляет в результат колонку с именем из атрибута Name, а значение для нее берет из матрицы подстановки по ключу из поля, указанному в атрибуте Field.

В качестве значения тэга ожидается матрица из 2-х столбцов. В первом столбце должен быть ключ, по которому будет идти подстановка, а во втором - значение, которое будет использоваться при подстановке.

<Field Name="FieldName" Type="Substitution" Field="FieldName"></Field>

Необязательный атрибут Field задает название поля исходного соединения с данными, из которого будут тянуться данные. Если атрибут Field указан, то значение из атрибута Name используется как псевдоним для поля преобразованного соединения с данными. Если атрибут Field отсутствует, то будет использоваться значение из атрибута Name для получения данных из исходного соединения с данными.

Replace

Селектор замены значений в строке.

Добавляет в результат колонку с именем из атрибута Name и значением исходного соединения с данными с заменой в нём подстрок с использованием таблицы замены.

В качестве значения тэга ожидается матрица из 2-х столбцов. В первом столбце должен быть ключ, по которому будет идти замена, а во втором - значение, которое будет использоваться при замене.

<Field Name="FieldName" Type="Replace" Field="FieldName"></Field>

Необязательный атрибут Field задает название поля исходного соединения с данными, из которого будут тянуться данные. Если атрибут Field указан, то значение из атрибута Name используется как псевдоним для поля преобразованного соединения с данными. Если атрибут Field отсутствует, то будет использоваться значение из атрибута Name для получения данных из исходного соединения с данными.

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

Пример
<DataConnection Name="ClientConvertDataConnection" Type="ConvertDataConnection" Assembly="WorkflowServer">
  <SourceDataConnection Name="ClientPrimaryGetDataConnection" />
  <Fields>
    <Field Name="ClientId" />
    <Field Name="TitleForReplace" />
    <Field Name="Result" Type="Replace" Field="TitleForReplace">
      <DataConnection SourceDataConnection="CityPrimaryGetDataConnection">
        <Fields>
          <Field Name="CityId" />
          <Field Name="Title" />
        </Fields>
      </DataConnection>
    </Field>
  </Fields>
</DataConnection>

Где CityPrimaryGetDataConnection хранит данные:

+---+--------------+
| 1 | Екатеринбург |
| 2 | Челябинск    |
| 3 | Москва       |
+---+--------------+

Тогда в ClientConvertDataConnection будут храниться данные:

+---+------------------------------+----------------------------------------+
| 3 | Муравьёв Юпитер Антонович(3) | Муравьёв Юпитер Антонович(Москва)      |
| 4 | Самойлов Макар Игнатьевич(2) | Самойлов Макар Игнатьевич(Челябинск)   |
| 5 | Костина Афина Елизаровна(1)  | Костина Афина Елизаровна(Екатеринбург) |
+---+------------------------------+----------------------------------------+

Format

Селектор форматирования строки.

Добавляет в результат колонку с именем из атрибута Name и результатом построения строки по шаблону со значениями полей исходного соединения с данными.

В качестве значения тэга ожидается строка-шаблон, с указанием в фигурных скобках {} имен полей исходного соединения с данными, которые будут источниками значений.

<Field Name="FieldName" Type="Format">{FieldName}</Field>
Пример
<DataConnection Name="CityConvertDataConnection" Type="ConvertDataConnection" Assembly="WorkflowServer">
  <SourceDataConnection Name="CityPrimaryGetDataConnection" />
  <Fields>
    <Field Name="CityId" />
    <Field Name="Title" />
    <Field Name="TitleFormat" Type="Format">{Title} (id: {CityId})</Field>
  </Fields>
</DataConnection>

Данные:

+---+--------------+----------------------+
| 1 | Екатеринбург | Екатеринбург (id: 1) |
| 2 | Челябинск    | Челябинск (id: 2)    |
| 3 | Москва       | Москва (id: 3)       |
+---+--------------+----------------------+

TemplateFormat

Селектор форматирования строки по шаблону.

Добавляет в результат столбец с результатом форматирования полей исходного соединения с данными на основе заданного шаблона.

Ожидается строка с шаблоном.

<Field Name="FieldName" Type="TemplateFormat" Evaluate="True">Template</Field>

В качестве шаблонизатора используется Scriban. Подробнее по ссылке.

Необязательный атрибут Evaluate - признак, определяющий что нужно вычислить выражение. Ожидается логическое значение.

Пример
<DataConnection Name="CityConvertDataConnection" Type="ConvertDataConnection" Assembly="WorkflowServer">
  <SourceDataConnection Name="CityPrimaryGetDataConnection" />
  <Fields>
    <Field Name="CityId" />
    <Field Name="Title" />
    <Field Name="Archive" />
    <Field Name="TitleFormat" Type="TemplateFormat">{{Title}}{{if Archive}} (арх.){{end}}</Field>
  </Fields>
</DataConnection>

Данные:

+---+--------------+-------+---------------+
| 1 | Екатеринбург | False | Екатеринбург  |
| 2 | Челябинск    | False | Челябинск     |
| 3 | Москва       | True  | Москва (арх.) |
+---+--------------+-------+---------------+

Action

Селектор работы с вложенными массивами.

Добавляет в результат соединения столбец с результатом преобразования массива из исходного соединения с данными.

Поле исходного соединения должно быть массивом.

Ожидается описание операций по работе с массивами, перечисленных в статье Array.

<Field Name="FieldName" Type="Action" Field="FieldName">Array Operations</Field>

Необязательный атрибут Field задает название поля исходного соединения с данными, из которого будут тянуться данные. Если атрибут Field указан, то значение из атрибута Name используется как псевдоним для поля преобразованного соединения с данными. Если атрибут Field отсутствует, то будет использоваться значение из атрибута Name для получения данных из исходного соединения с данными.

Пример
<DataConnection Name="ClientConvertDataConnection" Type="ConvertDataConnection" Assembly="WorkflowServer">
  <SourceDataConnection Name="ClientPrimaryGetDataConnection" />
  <Fields>
    <Field Name="ClientId" />
    <Field Name="Title" />
    <Field Name="MaterialsAction" Type="Action" Field="Materials">
      <StringJoin Separator=", " />
    </Field>
    <Field Name="TotalPriceAction" Type="Action" Field="TotalPrice">
      <Sum Type="DecimalDataType" />
    </Field>
  </Fields>
</DataConnection>

Данные:

+---+---------------------------+----------------------------------+------+
| 2 | Яковлев Прохор Феликсович | Ручка шариковая, SvetoCopy пачка | 7375 |
| 3 | Муравьёв Юпитер Антонович |                                  |      |
| 4 | Самойлов Макар Игнатьевич | Линейка, Карандаш простой        | 270  |
| 5 | Костина Афина Елизаровна  | Ручка шариковая, SvetoCopy пачка | 5000 |
+---+---------------------------+----------------------------------+------+

Object

Селектор полей объекта.

В результирующую таблицу будут добавлены поля вложенных селекторов.

Поле исходного соединения должно быть словарём.

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

<Field Field="FieldName" Type="Object">
  <Field Name="SubFieldName" />
</Field>

Атрибуты тэга <Field>, специфичные для селектора Object

Field

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

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

Type

Тип селектора. Обязательный атрибут. Значение атрибута Type: фиксированное значение Object.

SubField

Селектор вложенного поля.

В результат добавится значение поля вложенного объекта. Является короткой версий селектора полей объекта.

Поле исходного соединения должно быть словарём.

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

<Field Name="FieldName" Type="SubField" Field="FieldName" SubField="SubFieldName"/>

Обязательный атрибут SubField - название вложенного поля. Ожидается одно из полей объекта с названием заданным в атрибуте Field или Name (если атрибут Field отсутствует).

Необязательный атрибут Field задает название поля исходного соединения с данными, из которого будут тянуться данные. Если атрибут Field указан, то значение из атрибута Name используется как псевдоним для поля преобразованного соединения с данными. Если атрибут Field отсутствует, то будет использоваться значение из атрибута Name для получения данных из исходного соединения с данными.

Array

Селектор соединения массива объектов.

Может содержать любые селекторы. В результирующую таблицу будут добавлены поля вложенных селекторов.

Поле исходного соединения должно быть словарём.

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

<Field Name="FieldName" Field="FieldName" Type="Array">
  <Field Name="FieldName" />
</Field>

Необязательный атрибут Field задает название поля исходного соединения с данными, из которого будут тянуться данные. Если атрибут Field указан, то значение из атрибута Name используется как псевдоним для поля преобразованного соединения с данными. Если атрибут Field отсутствует, то будет использоваться значение из атрибута Name для получения данных из исходного соединения с данными.

Last updated