Для более удобной работы с формами существует возможность разбиения переменных на группы. Например, можно поместить в группу «Контрагент» все относящиеся к контрагенту переменные, такие как имя контрагента, ИНН и т. п. Также можно поместить в группу «Товар» все относящиеся к товару переменные, такие как наименование, цвет, цена и т. п.

Для добавления переменной в группу следует задать для переменной процесса расширенный атрибут с именем «group» и значением, равным имени группы. Пример настройки:

<DataField Id="agentName" IsArray="FALSE" Name="Наименование заявителя">

<DataType>

<BasicType Type="STRING"/>

</DataType>

<Description></Description>

<ExtendedAttributes>

<ExtendedAttribute Name="group" Value="Заявитель"/>

</ExtendedAttributes>

</DataField>

<DataField Id="agentAddress" IsArray="FALSE" Name="Место нахождения (жительства) заявителя">

<DataType>

<BasicType Type="STRING"/>

</DataType>

<Description></Description>

<ExtendedAttributes>

<ExtendedAttribute Name="group" Value="Заявитель"/>

</ExtendedAttributes>

</DataField>

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

При формировании экранной формы конкретного шага группы выводятся в том порядке, в котором следуют доступные (видимые) переменные. Таким образом, можно рассмотреть переменные в следующих группах:

    «имя» - в группе заявитель; «адрес» - в группе заявитель; «ИНН» - в группе заявитель; «номер документа» - в группе заявление; «дата документа» - в группе заявление; «файл» - в группе заявление.

Если на некотором шаге список видимых переменных примет вид «номер документа, имя, инн, файл, адрес, дата документа», то переменные будут выведены в следующем порядке:

НЕ нашли? Не то? Что вы ищете?
    Заголовок группы – «заявление» (т. к. переменная «номер документа», относящаяся к этой группе, встречается первой). Переменные группы «заявление» следуют в том порядке, в котором они идут в списке: «номер документа», «файл», «дата документа». Заголовок группы – «заявитель» Переменные группы «заявитель» следуют в том порядке, в котором они идут в списке: «имя».

В модуле визуального конструирования процессов распределение переменных по группам осуществляется на вкладке «Группы переменных» при редактировании свойств процесса (см. Рисунок 226).

Рисунок 226 – Вкладка «Группы переменных"

Можно рассмотреть следующие типы переменных:

Переменные простых типов (строки, числа, даты) описываются обычным образом. Пример описания простых переменных:

<DataField Id="inDocNo" IsArray="FALSE" Name="№ Заявления">

<DataType>

<BasicType Type="STRING"/>

</DataType>

<ExtendedAttributes>

<ExtendedAttribute Name="length" Value="12"/>

</ExtendedAttributes>

</DataField>

Для задания размера поля ввода строковых переменных при формировании экранных форм используется расширенный атрибут «length». При значениях атрибута «length» меньше значения 81 формируется обычное поле ввода заданного размера (в символах). При значениях атрибута «length» более или равно 81 формируется многострочное поле ввода, высота которого (количество строк) регулируется расширенным атрибутом «rows». Пример использования:

<DataField Id="dataDocTaxAccount" IsArray="FALSE" Name="Данные документа о постановке заявителя на учет">

<DataType>

<BasicType Type="STRING"/>

</DataType>

<Description>(вид документа, серия, №, когда и кем выдан)</Description>

<ExtendedAttributes>

<ExtendedAttribute Name="length" Value="1024"/>

<ExtendedAttribute Name="rows" Value="2"/>

</ExtendedAttributes>

</DataField>

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

При создании переменных данного типа необходимо задать расширенный атрибут с именем «variableList» и непустым значением.

Для описания переменных для работы с сущностями (бизнес-объектами, справочниками) необходимо создать переменную процесса простого типа и задать ей расширенный атрибут с именем «entityClass» и значением, равным имени класса сущности. При этом тип переменной («STRING» или «INTEGER») должен соответствовать типу поля первичного ключа бизнес-объекта.

Пример описания переменной, соответствующей бизнес-объекту «заявитель»:

<DataField Id="agentId" IsArray="FALSE" Name="Заявитель">

<DataType>

<BasicType Type="INTEGER"/>

</DataType>

<ExtendedAttributes>

<ExtendedAttribute Name="entityClass" Value="soft. lodent. Agent"/>

</ExtendedAttributes>

</DataField>

Если переменная данного типа редактируется на каком-либо шаге процесса, то пользователю будет предложен выбор элемента из соответствующего простого или выпадающего списка. Данный механизм используется при работе с простым справочником типа «код+наименование», не имеющим собственной специализированной формы выбора из списка.

При этом возможно ограничение списка, предоставляемого для выбора элемента, с помощью расширенного атрибута «entityFilter». Пример реализации:

<DataField Id="agentId" IsArray="FALSE" Name="Заявитель">

<DataType>

<BasicType Type="INTEGER"/>

</DataType>

<ExtendedAttributes>

<ExtendedAttribute Name="entityClass" Value="soft. lodent. Agent"/>

<ExtendedAttribute Name="entityFilter" Value="agentType = 0"/>

</ExtendedAttributes>

</DataField>

В данном случае при выборе из списка заявителей будут показаны только заявители с атрибутом «agentType» равным 0.

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

<DataField Id="agentId" IsArray="FALSE" Name="Заявитель">

<DataType>

<BasicType Type="INTEGER"/>

</DataType>

<ExtendedAttributes>

<ExtendedAttribute Name="entityClass" Value="soft. lodent. Agent"/>

</ExtendedAttributes>

</DataField>

<DataField Id="licenseId" IsArray="FALSE" Name="Заявление">

<DataType>

<BasicType Type="INTEGER"/>

</DataType>

<ExtendedAttributes>

<ExtendedAttribute Name="entityClass" Value="soft. lodent. License"/>

<ExtendedAttribute Name="entityFilter" Value="agent. id = :agentId"/>

</ExtendedAttributes>

</DataField>

В данном примере список заявлений, выводимый на некотором шаге процесса, будет ограничен в зависимости от значения переменной процесса «Заявитель» («agentId»), значение которой должно быть уже присвоено к этому моменту.

Переменные для работы с файлами-вложениями используются, когда при выполнении процесса необходимо приложить файлы. В этом случае необходимо описать переменную строкового типа и задать ей расширенный атрибут «fileContent» с непустым значением. Пример реализации:

<DataField Id="file_Declaration" IsArray="FALSE" Name="Заявление (скан)">

<DataType>

<BasicType Type="STRING"/>

</DataType>

<ExtendedAttributes>

<ExtendedAttribute Name="fileContent" Value="*"/>

</ExtendedAttributes>

</DataField>

Одна файловая переменная соответствует одному вложению.

Для примера использования переменных-списков переменных можно рассмотреть процесс «Оказание услуги».

Заявитель выполняет шаги «выбор услуги», «ввод доп. информации».

Контролер выполняет шаги «исполнение запросов», «уточнение информации», «исполнение услуги».

На шаге 1 Заявитель выбирает услугу из соответствующего справочника.

Можно предположить, что для различных категорий услуг существуют различные наборы дополнительных параметров, которые необходимо выбрать или ввести. Например, при выборе услуги «Назначение и выплата единовременного пособия при рождении ребенка» необходимо предоставить дополнительные документы (например, документ о рождении ребенка). Эти дополнительные атрибуты должны быть доступными (видимыми) для Контролера на всех дальнейших шагах процесса.

Типовым решением является описание условных переходов после выбора услуги:

    если выбрана услуга «Назначение и выплата единовременного пособия при рождении ребенка», то выполнить шаг 1.1 - кроме документа, удостоверяющего личность заявителя, требуется в обязательном порядке предоставить документ о рождении ребенка («docbirth»); если выбрана услуга «Предоставление ежемесячного пособия по уходу за ребенком-инвалидом», то выполнить шаг 1.2 – кроме документа, удостоверяющего личность заявителя, требуется в обязательном порядке предоставить доверенность («document») и заявление о назначении пособия по уходу за ребенком-инвалидом («zayvlen»).

Далее, чтобы Контролеру была доступна необходимая и скрыта лишняя информация, необходимо организовать две одинаковые (параллельные) ветки действий Контролера, отличающиеся наборами доступных переменных.

В рассмотренном примере условный переход имеет два варианта условий. Также следует рассмотреть ситуацию, когда имеется множество вариантов, причем заранее число вариантов не определено. Таким образом, известен набор возможных переменных, но неизвестна логика, определяющая, какие переменные необходимо вводить, т. к. это может зависеть от каких-либо внешних настроек. Чтобы описать такой процесс, необходимо предоставить Заявителю возможность ввода всех требуемых переменных, что недопустимо. Контролер для корректного выполнения процесса должен видеть все переменные.

В этом случае удобно использовать переменные-списки переменных. Общая логика работы:

    в процессе заводится переменная-список переменных, например «additionalVars». Также необходимо завести переменные, «docbirth», «document», «zayvlen». после шага 1, в зависимости от выбранной услуги, переменной «additionalVars» присваивается значение «docbirth» либо значения «document», «zayvlen». на следующем шаге переменная «additionalVars» помечается как обязательная к заполнению заказчиком. на всех шагах для Контролера переменная «additionalVars» помечается как доступная (видимая). В случае, когда переменная «additionalVars» является переменной-списком переменных, т. е. имеет расширенный атрибут «variableList», вводится переменная «docbirth» или переменные «document», «zayvlen», Контролер будет видеть именно те переменные, значения которых ввел заявитель. При этом лишние переменные отображаться для Контролера не будут.

Возможны следующие варианты задания значения данной переменной:

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44