Оформление
Временные условия выполнения задач пользовательского класса суждения
1. Обзор
1.1 Версия
| Версия сервера FineBI | Функциональные изменения |
|---|---|
| 6.0 | - |
1.2 Сценарии применения
FineBI предоставляет функцию оценки пользовательских классов в расписании по времени. Пользователи могут писать свои собственные классы в соответствии с потребностями бизнеса, а затем передавать их системе для выполнения, и судить о том, следует ли выполнять задачу по расписанию в соответствии с условиями пользовательского класса, чтобы вернуть результаты.
1.3 Функциональные детали
FineBI поддерживает определение того, следует ли выполнять задачу с таймером или нет в задаче планирования с таймером, по условному результату возврата пользовательского класса.
FineBI предоставляет интерфейс com.fr.schedule.base.provider.ExecuteCondition, который имеет метод public boolean execute(), завершающий логику суждения условия и возвращающий результат суждения.
Как показано ниже:
- Выполняет задание с таймером, когда условие пользовательского класса возвращается к истине.
- Если условие пользовательского класса возвращает false, задание с таймером не выполняется или откладывается.
1.3.1 Настройка типов классов
Пользовательское суждение класса включает в себя: пользовательское суждение класса без параметров, пользовательское суждение класса с параметрами.
Среди них есть параметры пользовательского класса суждения может удовлетворить потребности повторного использования тайминга задачи, пользователь может добавить параметры и назначить значения в панели настройки параметров. Как показано на рисунке ниже:
Примечание: Для JAR 2020-06-08 и более поздних версий, когда условие выполнения выбирает пользовательское суждение класса, вы можете добавить параметры и присвоить значения.

1.3.2 Состояние панели настройки параметров
В разделе "Судейство пользовательских классов" после выбора конкретного пользовательского класса в нижней части появится панель "Параметры", где можно добавить параметры и присвоить им значения.
Состояние панели настройки параметров следующее:
1) После добавления параметра и присвоения ему значения, переключения пользовательских классов панель настройки параметров не сохраняет исходную информацию о настройке параметров.
(2) После сохранения задания нажмите на него снова, и вы увидите, что панель настройки параметров сохранит информацию о параметрах сохраненного задания.
Примечание: Если после сохранения задачи снова открыть ее для переключения пользовательского класса, панель настройки параметров не сохранит исходную информацию о настройке параметров, даже если вы снова переключитесь на исходный пользовательский класс.
1.3.3 Пределы настройки параметров
(1) Имя параметра должно состоять из букв, цифр и китайских букв, а начало имени параметра не может быть цифрой.
2) В настройках параметров поле назначения по умолчанию имеет строковый формат, и вам нужно выполнить необходимое преобразование типов для значения, полученного в пользовательском классе.
1.4 Примеры из этой главы
В этой статье мы на конкретных примерах продемонстрируем использование функции суждения пользовательского класса в расписании по времени.
| типичный пример | эффект | перейти |
|---|---|---|
| Пример 1: Пользовательское суждение класса без параметров | При выполнении таймерной задачи на определение того, является ли сегодняшний день вторником, если на момент выполнения таймерной задачи это вторник, то на момент выполнения таймерной задачи это не вторник | 1) Подготовка пользовательских классов без параметров2) Подготовьте приборную панель3) Установка заданий с таймером4) Выполните один раз, чтобы увидеть эффект от внедрения* Результат условного суждения возвращает true, выполните задание по таймеру. * Результат условного суждения возвращает false, не выполняйте задание с таймером. |
| Пример 2: Пользовательское суждение класса с параметрами | Если значение параметра 1 больше 5 и значение параметра 2 содержит "ABC", то выполните задание с таймером. | 1) Подготовьте пользовательские классы с параметрами2) Подготовьте приборную панель3) Установка заданий с таймером4) Выполните один раз, чтобы увидеть эффект от внедрения* Результат условного суждения возвращает true, выполните задание по таймеру. * Результат условного суждения возвращает false, не выполняйте задание с таймером. |
2. Пример 1: Пользовательское суждение класса без параметров
Пример в этом разделе: использование пользовательской функции суждения класса без параметров для реализации задачи с таймером, которая будет выполняться только по вторникам.
Задача по времени: передайте последние данные о продажах APP-клиенту Лизы, руководителя отдела продаж.
Образец панели управления: панель управления "Аналитика продаж товаров" в теме "Отраслевые приложения > Розничная электронная торговля > Центр управления продажами Cockpit".
Эта панель вызывает таблицу данных в папке "Public Data > Departmental Data > Sales_Lisa".
Нажмите, чтобы загрузить Java-файл: ExecuteClass.zip
2.1 Подготовка пользовательских классов
2.1.1 Запись файлов Java
Напишите файл ExecuteClass.java с кодом, показанным ниже:
package com.fr.schedule; import java.util.Calendar; import com.fr.schedule.base.provider.ExecuteCondition; public .
;class ExecuteClass implements ExecuteCondition { public boolean execute() { Calendar cal&
nbsp;= Calendar.getInstance(); int dow = cal.get(Calendar.DAY_OF_WEEK);//Вторник dow равен 3 return (dow) ==&
nbsp;3; } }2.1.2 Компиляция файлов классов
1) Создайте файл класса
Скомпилируйте ExecuteClass.java, чтобы создать файл ExecuteClass.class .
2) Импортируйте файл класса
Сохраните скомпилированный файл ExecuteClass.class в папке %BI_HOME%\webapps\webroot\WEB-INF\classes\com\fr\schedule.
Примечание 1: Если папка расписания не существует в %BI_HOME%\webapps\webroot\WEB-INF\classes\com\fr, пользователи могут создать новую папку расписания самостоятельно.
Примечание 2: Подробные шаги по подготовке среды компиляции и компиляции файлов Java см. в разделе: Компиляция программ Java.
2.2 Подготовка приборной панели
2.2.1 Копирование ссылок на шаблоны
Перед настройкой задачи планирования по времени необходимо получить ссылку на приборную панель, используемую в планировании по времени, чтобы перенести ее на сторону пользовательского приложения.
1) Администратор входит в систему FineBI и нажимает на кнопку "Мои анализы".
Выберите панель "Аналитика продаж товаров" в теме "Отраслевые приложения>Розничная электронная торговля>Центр управления продажами Cockpit", а ID после отчета в URL-ссылке - это ID панели. Ссылка предварительного просмотра панели имеет следующий вид: http: //IP:port/webroot/decision/v5/design/report/. Идентификатор/вид приборной панели
Примечание 1: IP-адрес в ссылке не может быть "localhost", он должен быть заменен на реальный IP-адрес компьютера.
Примечание 2: сторона APP должна иметь возможность доступа к URL, если внутренняя и внешняя сетевые среды не совместимы, доступ будет невозможен.

2.2.2 Назначениеправ на данные
Пользователи, которые хотят просматривать BI-шаблоны, используемые в планировании по времени, должны иметь права на компонентные данные в таблицах данных, вызываемых этой панелью.
Администратор входит в систему FineBI и нажимает "System Management > Управление разрешениями > Общая настройка разрешений > Быстрая настройка разрешений".
Выберите "Department>Sales>Sales Supervisor", нажмите "Data Permissions" и назначьте разрешение "Component Data" для папки "Public Data>Department Data>Sales_Lisa". Как показано на рисунке ниже:

2.3 Установка заданий с таймером
2.3.1 Добавление задач
Администратор входит в систему FineBI, нажимает "System Management > Расписание > Управление задачами", нажимает "Добавить задачу", чтобы добавить задачу планирования по времени. Как показано на следующем рисунке:

2.3.2 Основные настройки
1) "Название задачи" установлено на "Достижение продаж".
2) Нажмите кнопку "Изменить" для "Группы пользователей по умолчанию". Для отдела выберите "Супервайзер отдела продаж" и нажмите OK. Как показано на рисунке ниже:
Примечание: Если вам нужно использовать уведомления платформы, вы должны задать группу пользователей по умолчанию, иначе сообщение не сможет быть отправлено никому.

Убедитесь, что для отдела выбрано "Все отделы: Отдел продаж: Супервайзер отдела продаж;", и нажмите "OK", настройка группы пользователей по умолчанию завершена. Нажмите "Далее", как показано на рисунке ниже:

2.3.3 Запланированные объекты
1) Выберите "BI Templates" для типа объекта и выберите шаблон: "Анализ продаж продуктов" в теме "Отраслевые приложения > Розничная электронная торговля > Центр управления продажами Cockpit".
2) Имя файла задается как "Продажи ${сейчас()}".
Нажмите "Далее", как показано ниже:

2.3.4 Цикл управления движением
1) Установка частоты выполнения
Выберите "Подробные настройки частоты" для частоты выполнения и нажмите "Добавить".
Установите время выполнения как "18:0", день выполнения как "Ежедневно" и месяц выполнения как "Выбрать все", нажмите "OK", чтобы успешно добавить детальную частоту.
Отметьте частоту детализации, добавленную в предыдущем шаге.

2) Установка условий выполнения
Выберите "Custom Class Judgement" в качестве условия выполнения.
Выбор пользовательского класса: файл ExecuteClass.class, подготовленный в разделе 2.1.
Нажмите кнопку "Далее". Как показано на рисунке ниже:

2.3.5 Обработка документов
1) Отметьте "Уведомление клиента" для метода обработки.
2) В настройках "Уведомление клиента":
- Отметьте уведомление "APP".
- Выберите тип сообщения "Связать сообщение
- Получатель: "Группа пользователей по умолчанию"
- Тема: региональные продажи ${today()}
- В письме говорится: " Пришла новая статистика продаж, пожалуйста, проверьте ее через некоторое время ".
- Отметьте "Пользовательская ссылка" и введите ссылку на предварительный просмотр приборной панели, подготовленную в разделе 2.2.
Нажмите "Сохранить", как показано ниже:

2.4 Предварительный просмотр эффектов
Поскольку частота выполнения этого задания - раз в день в 18:00, эффект от его выполнения можно заметить не сразу.
Чтобы сразу увидеть эффект от выполнения задания, найдите его в интерфейсе "System Management > Планировщик > Управление задачами" и выберите "Выполнить один раз".

1) Выполнение заданий с таймером
Работа "Продажи > Руководитель отдела продаж" соответствует пользователю Лиза (Lisa, 1).
После однократного выполнения, если сегодня вторник, пользовательский класс ExecuteClass.class имеет условный результат возврата true, выполняя задачу с таймером.
Лиза (Lisa, 1) заходит в приложение FineMobile Data Analytics App и получает новое сообщение. Оно показано на рисунке ниже:

2) Невыполнение или задержка выполнения заданий с таймером
Если сегодня не вторник, то после одного выполнения пользовательский класс ExecuteClass.class имеет условный возвращаемый результат false, который не выполняет или откладывает выполнение задачи с таймером.
Нажмите "Планировщик времени > Монитор выполнения", вы увидите, что тип выполнения задачи - "Генерация моментальных снимков", а статус - "Пропустить". Как показано на рисунке ниже:

3. Пример 2: Пользовательское суждение класса с параметрами
В этом разделе мы используем функцию суждения пользовательского класса с параметрами для выполнения задачи с таймером, когда значение параметра 1 больше 5, а значение параметра 2 содержит "ABC".
Задача по времени: отправьте последние данные о продажах APP-клиенту Лизы, менеджера по продажам.
Образец панели управления: панель управления "Аналитика продаж товаров" в теме "Отраслевые приложения > Розничная электронная торговля > Центр управления продажами Cockpit".
Эта панель вызывает таблицу данных в папке "Public Data > Departmental Data > Sales_Lisa".
Нажмите, чтобы скачать Java-файл: NewCondition.zip
3.1 Подготовка пользовательских классов
3.1.1 Запись файлов Java
1) Напишите файл NewCondition.java с кодом, показанным ниже:
package com.fr.schedule; import com.fr.general.GeneralUtils; import com.fr.log.FineLoggerFactory; import com.fr.
schedule.base.provider.impl.AbstractParameterExecuteCondition; import com.fr.stable.StringUtils; import java.util.List.
import java.util.Map; /** * @author Cloud.Liu * @version 10.0 * Created by
Cloud.Liu on 2020/5/6 */ public class NewCondition extends AbstractParameterExecuteCondition&
nbsp;{ @Override public boolean execute(List<Map<String, Object
>> paramList) { FineLoggerFactory.getLogger().error("Выбран новый класс условия.
Пропустить по мере необходимости"); // Если количество параметров пустое, константа выполняется успешно if&
nbsp;(paramList.size() < 1) { return 
true; } /* &
nbsp; * Список параметров: * Имя параметра1: parameter1 &
nbsp; * Значение параметра 1: целое число * Имя параметра 2: параметр 2 &
nbsp; * Значение параметра 2: строка *  .
; * Тогда в paramList здесь будет две карты, соответствующие двум параметрам  
;* Каждая карта имеет два элемента: имя и значение * имя - это имя параметра, значение - это значение параметра * * * Здесь parameterList будет иметь две карты, соответствующие двум параметрам.
nbsp; * * * Здесь мы перебираем список paramList и извлекаем два параметра &
nbsp; */ int param1 = 0; &
nbsp; String param2 = StringUtils.EMPTY; &
nbsp; // Итерация по списку параметров, присваивая значения обоим параметрам for (Map<String, Object> map :
paramList) { if (StringUtils.equals(
GeneralUtils.objectToString(map.get("name")), "param1")) { & nbsp; param1 = Integer.parseInt(GeneralUtils.objectToString(map.get("
;value"))); } else if (StringUtils.
equals(GeneralUtils.objectToString(map.get("name")), "param2")) { & nbsp; param2 = GeneralUtils.objectToString(map.get("значение"
;)); } } &
nbsp; //Если значение параметра 1 больше 5 и значение параметра 2 содержит "ABC", то выполняем //Если нет, то выполняем .
тогда выполнить //иначе не выполнять if (param1 >
; 5 && param2.contains("ABC")) {
return true; } else {  
; return false; } } }3.1.2 Компиляция файлов классов
1) Создайте файл класса
Скомпилируйте NewCondition.java, чтобы создать файл NewCondition.class .
2) Импортируйте файл класса
Сохраните скомпилированный файл NewCondition.class в папке %BI_HOME%\webapps\webroot\WEB-INF\classes\com\fr\schedule.
Примечание 1: Если папка расписания не существует в %BI_HOME%\webapps\webroot\WEB-INF\classes\com\fr, пользователи могут создать новую папку расписания самостоятельно.
Примечание 2: Подробные шаги по подготовке среды компиляции и компиляции файлов Java см. в разделе: Компиляция программ Java.
3.2 Подготовка приборной панели
3.2.1 Копирование ссылок на шаблоны
Перед настройкой задачи планирования по времени необходимо получить ссылку на приборную панель, используемую в планировании по времени, чтобы перенести ее на сторону пользовательского приложения.
1) Администратор входит в систему FineBI и нажимает на кнопку "Мои анализы".
Выберите панель "Аналитика продаж товаров" в теме "Отраслевые приложения>Розничная электронная торговля>Центр управления продажами Cockpit", а ID после отчета в URL-ссылке - это ID панели. Ссылка предварительного просмотра панели имеет следующий вид: http: //IP:port/webroot/decision/v5/design/report/. Идентификатор/вид приборной панели
Примечание 1: IP-адрес в ссылке не может быть "localhost" и должен быть заменен на реальный IP-адрес компьютера.
Примечание 2: сторона APP должна иметь возможность доступа к URL, если внутренняя и внешняя сетевые среды не совместимы, доступ будет невозможен.

3.2.2 Назначение прав на данные
Пользователи, которые хотят просматривать BI-шаблоны, используемые в планировании по времени, должны иметь права на компонентные данные в таблицах данных, вызываемых этой панелью.
Администратор входит в систему FineBI и нажимает "System Management > Управление разрешениями > Общая настройка разрешений > Быстрая настройка разрешений".
Выберите "Department>Sales>Sales Supervisor", нажмите "Data Permissions" и назначьте разрешение "Component Data" для папки "Public Data>Department Data>Sales_Lisa". Как показано на рисунке ниже:

3.3 Установка заданий с таймером
3.3.1 Добавление задач
Администратор входит в систему FineBI, нажимает "System Management > Расписание > Управление задачами", нажимает "Добавить задачу", чтобы добавить задачу планирования по времени. Как показано на следующем рисунке:

3.3.2 Основные настройки
1) "Название задачи" установлено на "Достижение продаж".
2) Нажмите кнопку "Изменить" для "Группы пользователей по умолчанию". Для отдела выберите "Супервайзер отдела продаж" и нажмите OK. Как показано на рисунке ниже:
Примечание: Если вам нужно использовать уведомления платформы, вы должны задать группу пользователей по умолчанию, иначе сообщение не сможет быть отправлено никому.

Убедитесь, что для отдела выбрано "Все отделы: Отдел продаж: Супервайзер отдела продаж;", и нажмите "OK", настройка группы пользователей по умолчанию завершена. Нажмите "Далее", как показано на рисунке ниже:

3.3.3 Запланированные объекты
1) Выберите "BI Templates" для типа объекта и выберите шаблон: "Анализ продаж продукции" в теме "Отраслевые приложения > Розничная электронная торговля > Центр управления продажами Cockpit".
2) Имя файла задается как "Продажи ${сейчас()}".
Нажмите "Далее", как показано ниже:

3.3.4 Цикл управления движением
1) Установка частоты выполнения
Выберите "Подробные настройки частоты" для частоты выполнения и нажмите "Добавить".
Установите время выполнения "18:0", день выполнения "Ежедневно" и месяц выполнения "Выбрать все" и нажмите "OK", чтобы успешно добавить детальную частоту.
Отметьте частоту детализации, добавленную в предыдущем шаге.

2) Установка условий выполнения
Выберите "Custom Class Judgement" в качестве условия выполнения.
Выбор пользовательского класса: файл NewCondition.class, подготовленный в разделе 3.1.
Нажмите "Добавить", чтобы добавить новый параметр и присвоить ему значение.
Новый параметр: имя - параметр 1, значение - 6.
Новый параметр: имя - параметр 2, значение - ABC.
Нажмите кнопку "Далее". Как показано на рисунке ниже:

3.3.5 Документация
1) Отметьте "Уведомление клиента" для метода обработки.
2) В настройках "Уведомление клиента":
- Отметьте уведомление "APP".
- Выберите тип сообщения "Связать сообщение
- Получатель: "Группа пользователей по умолчанию"
- Тема: региональные продажи ${today()}
- В письме говорится: Пришла новая статистика продаж, пожалуйста, проверьте ее вовремя.
- Установите флажок "Пользовательская ссылка" и введите ссылку на предварительный просмотр приборной панели, подготовленный в разделе 3.1.
Нажмите "Сохранить", как показано ниже:

3.4 Предварительный просмотр эффектов
Поскольку частота выполнения этого задания - раз в день в 18:00, эффект от его выполнения можно заметить не сразу.
Чтобы сразу увидеть эффект от выполнения задания, найдите его в интерфейсе "System Management > Планировщик > Управление задачами" и выберите "Выполнить один раз".

1) Выполнение заданий с таймером
Работа "Продажи > Руководитель отдела продаж" соответствует пользователю Лиза (Lisa, 1).
После одного выполнения, поскольку значения параметров 1 и 2 в разделе 3.3.4 Установка параметров удовлетворяют условию, что значение параметра 1 больше 5, а значение параметра 2 содержит "ABC", условие пользовательского класса возвращает true и выполняет задачу таймера.
Лиза (Lisa, 1) заходит в приложение FineMobile Data Analytics App и получает новое сообщение. Оно показано на рисунке ниже:

2) Невыполнение или задержка выполнения заданий с таймером
Нажмите "Изменить" и выполните действия, описанные в разделе 3.3.4, чтобы изменить значение параметра 1 на 3, чтобы значение параметра не удовлетворяло условию, что значение параметра 1 больше 5, а значение параметра 2 содержит "ABC". Как показано на рисунке ниже:

После одного выполнения условие пользовательского класса NewCondition.class возвращает результат false, что не приводит к выполнению или задерживает выполнение задачи с таймером.
Нажмите "Планировщик времени > Монитор выполнения", вы увидите, что тип выполнения задачи - "Генерация моментальных снимков", а статус - "Пропустить". Как показано на рисунке ниже:
