Действия

Под действием понимается класс у экземпляра которого вызывается метод execute. Действия бывают двух видов:

  • Адресные т.е. прикрепляются к объектам с заданным типом и именем. Например для источника данных типом будет org.weda.store.impl.ObjectSourceImpl а именем будет название источника объектов.
  • Глобальные т.е. у действия нет адресного объекта.

Параметры действия

Действие может иметь параметры. Параметры могут быть

  • READ это означает что значение параметра нужно отобразить в пользовательском интерфейсе
  • WRITE это означает что значение параметра необходимо установить перед выполнением действия (установка значения параметра тоже происходит в пользовательском интерфейсе. Перед кнопкой действия появляется поле ввода)
  • READ_WRITE это означает что имеют силу и первый и второй пункты

Параметры задаются при помощи аннотации Parameter. Аннотация ставиться перед getter'ом или setter'ом свойства.

Пример использования

            
    @Parameter(direction=Direction.READ_WRITE)
    public Integer getPageNumber() {
        return pageNumber;
    }

    public void setPageNumber(Integer pageNumber) {
        this.pageNumber = pageNumber;
    }

    @Parameter(direction=Direction.READ)
    public String getPageAndRowCount() {
        return pageAndRowCount;
    }
            
        

Связанные действия

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

Данная функциональность реализуется с помощью связанных действий. Реализуется она следующим образом:

После выполнения метода execute действия, имеющего связанные действия, framework при первом же выполнении одного из связанных действий вызывает метод afterLinkedActionExecute

Создание действия

Для того чтобы создать действие необходимо создать новый класс реализующий интерфейс org.weda.action.Action и затем зарегистрировать действие в точке конфигурации org.weda.action.Actions

Описание точки конфигурации org.weda.action.Actions

Задача конфигураци - регистрация действий

Структура:

            
            <action ...>
                <parameters>
                    <parameter .../>
                </parameters>
                <target ...>
                    <object .../>
                </target>
                <linked-action .../>
            </action>
            
        

Элементы конфигурации:

Название элементаОписание
action Регистрирует действие

Атрибуты элемента

Атрибут Описание Может быть пустым?
name Уникальное имя действия. Имя отображается в названии кнопки действия Нет
actionClassКласс реализующий действиеНет
description Краткое описание действия. Появляется в виде всплывающей подсказки при наведении мышки на кнопку действия Да
targetFrame Название фрейма в котором будет отображен результат действия Да
accessKey Возвращает символ при нажатии на который вместе с клавишей Alt (на PC платформе) будет выполнено действие Да



Название элементаОписание
parameter Статически задает значение параметра действия

Атрибуты элемента

Атрибут Описание Может быть пустым?
name Имя параметра Нет
value Значение параметра Нет



Название элементаОписание
target Определяет объекты на которые будет нацелено действие

Атрибуты элемента

Атрибут Описание Может быть пустым?
targetClass Класс объекта на который нацеливается действие Нет



Название элементаОписание
object Задает имя объекта на который должно нацеливаться действие

Атрибуты элемента

Атрибут Описание Может быть пустым?
name Имя объекта Нет



Название элементаОписание
linked-action Определяет действия связанные с данным

Атрибуты элемента

Атрибут Описание Может быть пустым?
actionClass Класс связываемого действия Нет
cancelAction Если установить в true то связанное действие будет считаться отменяющим. Нет

Пример конфигурации:

            
    <contribution configuration-id="org.weda.action.Actions">
        <action 
            actionClass="actions.ObjectSourcePageValueEditorAction"
            name="..." description="message:description"
        >
            <target targetClass="org.weda.tapestry.component.BaseEditor"/>
            <linked-action actionClass="actions.ObjectSourceSelectAction"/>
            <linked-action 
                actionClass="actions.ObjectSourceCancelSelectAction"
                cancelAction="true"/>
        </action>

        <action 
            actionClass="actions.ObjectSourceRefreshAction"
            name="message:name" 
            description="message:description"
        >
            <target targetClass="impl.ObjectSourceImpl"/>
        </action>        
    </contribution>
            
        

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

Имя сервиса в среде HiveMind - org.weda.action.ActionRegistry