понедельник, 3 января 2011 г.

SugarCRM hooks & Workflows

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

after_ui_frame 
after_ui_footer
server_round_trip 
before_delete
after_delete
after_restore
before_retrieve
after_retrieve
before_save
after_save
process_record
before_logout 
after_logout
before_login
login_failed

Хуки подключаются к каждому модулю отедельно (ко всем может и можно через /custom/modules/logic_hooks.php), нужно только разместить файл определения хуков /custom/modules/module_name/logic_hooks.php

Структура файла следующая:

<?php
$hook_version = 1;

$hook_array['Место подключения0'] = Array();
$hook_array['Место подключения0'][] = Array(2, 'Имя именно этого хука',
'путь/к/файлу/c/классом.php', 'Имя_класса', 'имя_метода');

$hook_array['Место подключения0'][] = Array(1, 'Имя именно этого хука',
'путь/к/файлу/c/классом2.php', 'Имя_класса2', 'имя_метода2');

$hook_array['Место подключения1'] = Array();
$hook_array['Место подключения1'][] = Array(2, 'Имя именно этого хука',
'путь/к/файлу/c/классом.php', 'Имя_класса', 'имя_метода');


Тоесть понятно, что к одному месту можно подключать много хуков. При этом порядок подключения опеределяется первым элементом массива (именно по нем хуки для точки сортируются перед выполнением их, а не вызываются стразу, в порядке в котором их определили).

Метод класса должен иметь следующую структуру, чтобы хук сработал:

public function имя_метода(SugarBean $bean, $event, $arguments){}


Workflows
Это инструмент создания хуков с помошью студии, но он доступен только для ПРО и ЕКСТЕНДИД. Имеет ряд готовых вариантов вызова.
Мы можем создавать воркфлоу для модуля, потом добавить в него условий выполнения, сообщений(которые отправляются кому-то, если условия удовлетворены), действий (это уже правки в базе). Он реализует неплохой механизм сообщений, их можно снабжать данными из базы, которые касаются события и отображать в хорошовоспринимаемом виде.

Комментариев нет:

Отправить комментарий