Workflow

Задача Workflow определить на какую страницу перейти после выполнения действия.

Реализуется это при помощи правил описанных в конфигурации org.weda.workflow.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>
            
        

Доступ к сервису

Имя сервиса в среде HiveMind - org.weda.workflow.Workflow