CDF (custom defined functions) - это java-программы, которые можно использовать в скриптах расчетов (calc script) Essbase и бизнес-правилах Planning.
Что действительно необходимо на каждом проекте, так это запускать MaxL-скрипты или пакетные файлы (bat, cmd, sh) из бизнес-правил. Например запустить обновление replicated partition, загрузить данные и т.д.
Что нужно сделать, чтобы CDF работала:
1. Настроить Essbase
2. Создать и скомпилировать Java-класс
3. Настроить безопасность
Настраиваем Essbase.
1.1. Создаем папку ARBORPATH/java/udf
1.2. Изменяем настройку безопастности Java CDF
Необходимо в файле ARBORPATH/java/udf.policy снять комментарий с последней строки:
// ****************************************************
// Permissions for all other classes.
// By default UDF sandbox is almost the same as applet environment,
// with some additional restrictions.
grant {
……..
permission java.util.PropertyPermission "java.vm.version", "read";
permission java.util.PropertyPermission "java.vm.vendor", "read";
permission java.util.PropertyPermission "java.vm.name", "read";
// Uncomment the following line if you want to remove all restrictions
permission java.security.AllPermission;
};Создаем и компилируем Java-класс.
2.1. Создаем файл ARBORPATH/java/udf/EssbaseRuRunTime.java
import java.util.*;
import java.io.*;
public class EssbaseRuRunTime {
public static void main(com.hyperion.essbase.calculator.Context ctx, String[] args)
{
int i, n = args.length;
String Str = args[0];
for (i=1; i
Str = Str + " " + args[i];
}
try {Runtime rt = Runtime.getRuntime();
Process proc = rt.exec(Str);
int exitVal = proc.waitFor();
System.out.println(args[0]+" ExitValue: " + exitVal);
}
catch(Exception e)
{
System.out.println(e.getMessage());
System.out.println(args[0]);
}
}
}
2.2 Компилируем класс из каталога, где он расположенjavac –classpath ../essbase.jar EssbaseRuRunTime.java jar cf EssbaseRuRunTime.jar EssbaseRuRunTime.classПримечание: компилировать версией Java, которая инсталирована с Essbase
Настраиваем безопасность
3.1. В файл ARBORPATH/java/udf.policy добавляем следующие строки:
grant codeBase "file:${java.home}/udf/EssbaseRuRunTime.jar" {
permission java.security.AllPermission;
};
3.2. Перегружаем EssbaseПример запуска CDF из calc-script
FIX ... что-то считаем ENDFIX RUNJAVA EssbaseRuRunTime "../java/udf/scripts/alter_sub_var.sh" "BudYear" &Act_Year; FIX ... что-то считаем ENDFIXПримечание: внутри FIX нельзя запускать EssbaseRuRunTime
Полезные ресурсы
Документация Developing defined calculation functions
Блог hack4essbase.wordpress.com
Блог essbaselabs.blogspot.com
Комментариев нет:
Отправить комментарий