Задача Workflow определить на какую страницу перейти после выполнения действия.
Реализуется это при помощи правил описанных в конфигурации
org.weda.workflow.Workflow
Задача конфигураци - описаний workflow правил
Структура:
<page ...>
<action ...>
<target-class ...>
<target-name ...>
<result-type ...>
<result-value ...>
<push-path .../>
</result-value>
</result-type>
</target-name>
</target-class>
</action>
</page>
Элементы конфигурации:
| Название элемента | Описание |
|---|---|
| page | Задает правила переходов со страницы |
Атрибуты элемента
| Атрибут | Описание | Может быть пустым? |
|---|---|---|
| name | Имя страницы (текущей страницы, в контексте правила) с которой будет осуществлен переход на следующую. В случае если default установлено в true
тогда имя значения не имеет (можно, например, написать default)
|
Нет |
| default | Если установить в true
тогда это будет правилом по умолчанию. Т.е. правило будет
срабатывать для тех страниц для которых не найдено
точного соответствия между названием страницы и именами страниц
прописанных в элементах page
|
Да |
| Название элемента | Описание |
|---|---|
| action | Определяет правило перехода для заданного действия |
Атрибуты элемента
| Атрибут | Описание | Может быть пустым? |
|---|---|---|
| class | Класс действия после выполнения которого сработает правило.
В случае если default установлено в true
тогда имя значения не имеет (можно, например, написать default)
|
Нет |
| default | Если установить в true
тогда это будет правилом по умолчанию. Т.е. правило будет
срабатывать для тех выполненных действий для которых не найдено
точного соответствия между классом действия и классами действий
прописанных в элементах action
|
Да |
| Название элемента | Описание |
|---|---|
| target-class | Определяет правила перехода для класса являющегося целевым для действия |
Атрибуты элемента
| Атрибут | Описание | Может быть пустым? |
|---|---|---|
| class | Класс цели действия для которого сработает правило.
В случае если default установлено в true
тогда имя значения не имеет (можно, например, написать default)
|
Нет |
| default | Если установить в true
тогда это будет правилом по умолчанию. Т.е. правило будет
срабатывать для тех целей для которых не найдено
точного соответствия между классом цели и классами целей
прописанных в элементах target-class
|
Да |
| Название элемента | Описание |
|---|---|
| target-name | Определяет правила перехода для названий целевых объектов |
Атрибуты элемента
| Атрибут | Описание | Может быть пустым? |
|---|---|---|
| name | Название целевого объекта действия для которого сработает правило.
В случае если default установлено в true
тогда имя значения не имеет (можно, например, написать default)
|
Нет |
| default | Если установить в true
тогда это будет правилом по умолчанию. Т.е. правило будет
срабатывать для тех имен целевых объектов для которых не найдено
точного соответствия между названием целевого объекта и названиями
прописанными в элементах target-name
|
Да |
| Название элемента | Описание |
|---|---|
| result-type | Определяет правила в зависимости от результата типа выполнения действия (успешное выполнение или нет) |
Атрибуты элемента
| Атрибут | Описание | Может быть пустым? |
|---|---|---|
| success | Определяет правило в зависимости от того успешно или нет
было выполнено действие.
В случае если default установлено в true
тогда имя значения не имеет (можно, например, написать default)
|
Нет |
| default | Если установить в true
тогда это будет правилом по умолчанию. Т.е. правило будет
срабатывать для таких результатов выполнения для которых не найдено
точного соответствия между результатом выполенения и результатами выполнения
описанных в элементах result-type
|
Да |
| Название элемента | Описание |
|---|---|
| result-type | Определяет правила в зависимости от результата выполнения действия |
Атрибуты элемента
| Атрибут | Описание | Может быть пустым? |
|---|---|---|
| value | Если значение полученное в результате выполнения последнего выполненого действия совпадет
со значением данного атрибута, тогда правило сработает.
В случае если default установлено в true
тогда значение атрибута значения не имеет (можно, например, написать default)
|
Нет |
| default | Если установить в true
тогда это будет правилом по умолчанию. Т.е. правило будет
срабатывать для тех результатов действия для которых не найдено
точного соответствия между результатом выполенения действия и результатами
описанными в элементах result-value
|
Да |
| Название элемента | Описание |
|---|---|
| push-path | Заносит название страницы в стек wokrflow |
Атрибуты элемента
| Атрибут | Описание | Может быть пустым? |
|---|---|---|
| path | Задает путь который будет занесен в стек workflow | Нет |
| redirect | Если установить в true тогда workflow
перейдет на страницу указанную в path
посредством посылки клиенту redirect'а
|
Да |
В качестве примера конфигурации расмотрим правила описанные в WEDA Framework:
<contribution configuration-id="Workflow">
<!--CRUD обработчики-->
<page name="/(.*)List/">
<action class="org.weda.store.actions.ObjectSourceEditAction">
<target-class class="any" default="true">
<target-name name="any" default="true">
<result-type success="true">
<result-value value="any" default="true">
<push-path path="{0}"/>
<push-path path="{1}Edit"/>
</result-value>
</result-type>
</target-name>
</target-class>
</action>
<action class="org.weda.store.actions.ObjectSourceAddAction">
<target-class class="any" default="true">
<target-name name="any" default="true">
<result-type success="true">
<result-value value="any" default="true">
<push-path path="{0}"/>
<push-path path="{1}Edit"/>
</result-value>
</result-type>
</target-name>
</target-class>
</action>
</page>
<page name="/(.*)Edit/">
<action class="org.weda.store.actions.ObjectSourceSaveAction">
<target-class class="any" default="true">
<target-name name="any" default="true">
<result-type success="true">
<result-value value="any" default="true">
<!--
<push-path path="{1}List"/>
-->
</result-value>
</result-type>
</target-name>
</target-class>
</action>
<action class="org.weda.store.actions.ObjectSourceCancelEditAction">
<target-class class="any" default="true">
<target-name name="any" default="true">
<result-type success="true">
<result-value value="any" default="true">
<!--
<push-path path="{1}List"/>
-->
</result-value>
</result-type>
</target-name>
</target-class>
</action>
</page>
<!--
Обработчик по умолчанию. Все необработанные действия возвращают
на текущую страницу.
-->
<page name="default-handler" default="true">
<action class="org.weda.model.actions.PageValueSelectorAction">
<target-class class="any-target" default="true">
<target-name name="any-name" default="true">
<result-type success="true" default="true">
<result-value value="any-value" default="true"/>
</result-type>
</target-name>
</target-class>
</action>
<action class="org.weda.store.actions.ObjectSourcePageValueEditorAction">
<target-class class="any-target" default="true">
<target-name name="any-name" default="true">
<result-type success="true" default="true">
<result-value value="any-value" default="true"/>
</result-type>
</target-name>
</target-class>
</action>
<action class="org.weda.data.impl.ViewDataAction">
<target-class class="any-target" default="true">
<target-name name="any-name" default="true">
<result-type success="true" default="true">
<result-value value="any-value" default="true"/>
</result-type>
</target-name>
</target-class>
</action>
<action class="org.weda.report.actions.ViewReportAction">
<target-class class="any-target" default="true">
<target-name name="any-name" default="true">
<result-type success="true" default="true">
<result-value value="any-value" default="true"/>
</result-type>
</target-name>
</target-class>
</action>
<action class="org.weda.report.excel.actions.ViewExcelReportAction">
<target-class class="any-target" default="true">
<target-name name="any-name" default="true">
<result-type success="true" default="true">
<result-value value="any-value" default="true"/>
</result-type>
</target-name>
</target-class>
</action>
<action class="any-action" default="true">
<target-class class="any-target" default="true">
<target-name name="any-name" default="true">
<result-type success="true" default="true">
<result-value value="any-value" default="true">
<push-path path="{0}"/>
</result-value>
</result-type>
</target-name>
</target-class>
</action>
</page>
</contribution>