Write Back
Автор: Егор Демьянов (все
статьи)
Знойным майским днем (пока не очень привычное словосочетание для
Москвы) сидя на прохладной веранде дачи, я решил посмотреть функцию
OBI EE под названием Write Back. Функция Write Back позволяет вводить
значения прямо в ячейки отчета, при этом в зависимости от введенного
значения автоматически обновлять отчеты.
В качестве основы для примера я использовал пару таблиц, моделирующих
расчет точки безубыточности при производстве. Первая из таблиц -
справочник товаров DM_PRODUCT. Вторая таблица FC_SALES_PLAN для
каждого товара содержит следующие показатели: фиксированные затраты
на производство товара (FIXED_COST), удельные переменные затраты
(VAR_COST), цену (PRICE), планируемый объем продаж (QUANTITY). Так
же при запросе на физическом уровне метаслоя рассчитываются суммарные
переменные затраты TOT_VAR_COST = VAR_COST * QUANTITY, и выручка
от реализации PROCEEDS = PRICE * QUANTITY. Таблицы можно создать
при помощи следующего скрипта:
create table dm_product
(
id_product integer,
product varchar2(4000)
);
alter table dm_product
add constraint pk_product primary key(id_product);
insert into dm_product values(1,’Колбаса’);
insert into dm_product values(2,’Сосиски’);
insert into dm_product values(3,’Шпик’);
create table fc_sales_plan (
id_product integer references dm_product(id_product),
fixed_cost number,
var_cost number,
price number,
quantity number
);
insert into FC_SALES_PLAN values (1, 358, 60, 100, 15);
insert into FC_SALES_PLAN values (2, 273, 28, 50, 11);
insert into FC_SALES_PLAN values (3, 143, 76, 120, 5);
commit;
Далее я приступил к созданию отчета. Из таблицы DM_PRODUCT были
использованы поля ID_PRODUCT (для которого установлена опция Hide)
и PRODUCT. Из таблицы FC_SALES_PLAN были использованы все поля,
кроме ID_PRODUCT, а также созданы вычисляемое поле BEP (Break-Even
Point) по формуле FIXED_COST / (PRICE - VAR_COST), и Отклонение
= QUANTITY – BEP. Каждая колонка отчета имеет псевдоним (c0, c1,
c2 и т.д.), псевдонимы можно поменять вручную на вкладке Advanced,
изменив Request XML и нажав кнопку Set XML.
Теперь, имея отчет и зная псевдонимы полей, нужно написать шаблон
(Write Back Template). В этом шаблоне указываются sql-запросы, которые
должны быть выполнены при вставке/изменении значения ячейки отчета.
Я хочу позволить пользователю менять из отчета затраты, цену и количество.
В моем случае шаблон выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<WebMessageTables xmlns:sawm=”com.siebel.analytics.web/message/v1?>
<WebMessageTable lang=”en-us” system=”WriteBack” table=”Messages”>
<WebMessage name=”sales_plan”>
<XML>
<writeBack connectionPool=”CP”>
<insert> </insert>
<update>UPDATE fc_sales_plan SET price=@{p},quantity=@{q},
fixed_cost=@{fc},var_cost=@{vc} WHERE id_product=@{c0}</update>
</writeBack>
</XML>
</WebMessage>
</WebMessageTable>
</WebMessageTables>
Файл с шаблоном я сохранил в папку %BI_HOME%\web\msgdb\customMessages.
Прежде, чем приступить к дальнейшим шагам, нужно в администрировании
Presentation Services выдать привилегии для Write Back. Вернувшись
к отчету, я переключился в табличное представление. В окне Write
Back Properties поставил галочку Enable Write Back и указал имя
шаблона sales_plan (значение атрибута name тэга WebMessage из ранее
приведенного xml). Затем в свойствах полей FIXED_COST, VAR_COST,
PRICE и QUANTITY в качестве значения свойства Value Interaction
я выбрал Write Back.
Собственно, это все из содержательных шагов. В результате я получил
симпатичную табличку с полями для ввода. При изменении значения
в ячейке, шрифт в ней становится жирным. Затем при нажатии кнопки
Write Back выполняется sql-запрос, который был указан в шаблоне,
обновляются данные в таблицах базы данных, и обновляются все отчеты
на дэшбороде.
По этой теме также можно почитать:
Для удобства отслеживания новых публикаций на сайте рекомендую
подписаться на рассылку или подписаться
на канал RSS.
Если вы нашли в сети интересные ссылки на ресурсы по технологиям
хранилищ данных, OLAP, CRM или data mining, и хотите поделиться
ими с другими, присылайте их.
Я с удовольствием размещу их на этом сайте.
|
[AD]
|