Можно создавать пользовательские сценарии проверки в JavaScript для проверки критериев анализа и формул столбцов, а также блокировки недопустимых запросов.
Пользователи, работающие с анализами, могут запустить пользовательский код JavaScript для проверки критериев анализа и формул столбцов. Проверка позволяет блокировать запросы при редактировании анализа. Доступ к пользовательскому коду JavaScript необходимо получать через веб-сервер. Чтобы включить эту функцию, администраторы должны указать URL-адрес веб-сервера в настройках системы и зарегистрировать этот веб-сервер в качестве безопасного домена.
При попытке пользователя запустить анализ Oracle Analytics вызывает функцию validateAnalysisCriteria Можно настроить функцию validateAnalysisCriteria для проверки и блокировки запросов на основе определенных критериев. Если функция возвращает значение true, запрос запускается. Если функция возвращает значение false или отображает сообщение, запрос блокируется.
Например, ниже приведен пример кода для программы JavaScript под названием myblocking.js.
// This is a blocking function. It ensures that users select what
// the designer wants them to.
function validateAnalysisCriteria(analysisXml)
{
// Create the helper object
var tValidator = new CriteriaValidator(analysisXml);
// Validation Logic
if (tValidator.getSubjectArea() != "Sample Sales")
return "Try Sample Sales?";
if (!tValidator.dependentColumnExists("Markets","Region","Markets","District"))
{
// If validation script notifies user, then return false
alert("Region and District are well suited, do you think?");
return false;
}
if (!tValidator.dependentColumnExists("Sales Measures","","Periods","Year"))
return "You selected a measure so pick Year!";
if (!tValidator.filterExists("Sales Measures","Dollars"))
return "Maybe filter on Dollars?";
if (!tValidator.dependentFilterExists("Markets","Market","Markets"))
return "Since you are showing specific Markets, filter the markets.";
var n = tValidator.filterCount("Markets","Region");
if ((n <= 0) || (n > 3))
return "Select 3 or fewer specific Regions";
return true;
}
Если функция возвращает любое другое значение, кроме false, критерии считаются допустимыми и анализ запускается. Функция также используется для проверки критериев для операций предварительного просмотра и сохранения.
При попытке пользователя ввести или изменить формулу столбца Oracle Analytics вызывает функцию validateAnalysisFormula для проверки операции. Можно настроить функцию validateAnalysisFormula для проверки и блокировки формул на основе определенных критериев. Если функция возвращает значение true, формула принимается. Если проверка не пройдена, функция возвращает значение false, формула отклоняется и отображается пользовательское сообщение.
Чтобы отобразить сообщение и разрешить пользователям продолжить, функция должна вернуть значение true. Чтобы заблокировать запрос, функция должна вернуть значение false или отобразить сообщение. Для исследования и проверки формулы в функции можно использовать строку JavaScript и методы регулярных выражений.
Служебные функции доступны для того, чтобы функция блокировки запроса могла проверять наличие фильтров, столбцов и т. д. См. раздел "Служебные функции проверки".
Например, следующий код показывает, как заблокировать запрос, если пользователь вводит недопустимую формулу.
// This is a formula blocking function. It makes sure the user doesn't enter an unacceptable formula.
function validateAnalysisFormula(sFormula, sAggRule)
{
// don't allow the use of concat || in our formulas
var concatRe = /\|\|/gi;
var nConcat = sFormula.search(concatRe);
if (nConcat >= 0)
return "You used concatenation (character position " + nConcat + "). That isn't allowed.";
// no case statements
var caseRe = /CASE.+END/gi;
if (sFormula.search(caseRe) >= 0)
return "Don't use a case statement.";
// Check for a function syntax: aggrule(formula) aggrule shouldn't contain a '.'
var castRe = /^\s*\w+\s*\(.+\)\s*$/gi;
if (sFormula.search(castRe) >= 0)
return "Don't use a function syntax such as RANK() or SUM().";
return true;
}
Несколько служебных функций проверки доступны для использования в файле JavaScript.
| Служебная функция проверки | Описание |
|---|---|
|
|
Возвращает имя предметной области, на которую ссылается анализ. Обычно используется в инструкции switch внутри функции перед выполнением других проверок. Если анализ основан на наборе критериев, он возвращает |
|
|
Возвращает значение |
|
|
Возвращает значение |
|
|
Проверяет, существует ли |
|
|
Возвращает значение |
|
|
Проверяет, существует ли |
|
|
Возвращает количество значений фильтра, указанных для данного логического столбца. Если значение фильтра " |