Skip to content

Временные условия выполнения задач пользовательского класса суждения

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&nbsp.  
  
;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&nbsp  
  
  
 true; } /* &  
  
 nbsp; * Список параметров: * Имя параметра1: parameter1 &  
  
 nbsp; * Значение параметра 1: целое число * Имя параметра 2: параметр 2 &  
  
 nbsp; * Значение параметра 2: строка * &nbsp.  
; * Тогда в paramList здесь будет две карты, соответствующие двум параметрам &nbsp  
  
;* Каждая карта имеет два элемента: имя и значение * имя - это имя параметра, значение - это значение параметра &nbsp; * * * Здесь 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(&quot  
;value"))); } else if (StringUtils.  
 equals(GeneralUtils.objectToString(map.get("name")), "param2")) { & nbsp; param2 = GeneralUtils.objectToString(map.get("значение&quot  
  
  
;)); } } &   
 nbsp; //Если значение параметра 1 больше 5 и значение параметра 2 содержит "ABC", то выполняем //Если нет, то выполняем .  
  
 тогда выполнить //иначе не выполнять if (param1 &gt  
; 5 && param2.contains("ABC")) {   
  
 return true; } else { &nbsp  
  
  
; 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, что не приводит к выполнению или задерживает выполнение задачи с таймером.

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