Задача 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>