Как создать Java Concurrent Program:
- Создать директорию $FND_TOP/java/cp/request (желательное, но не обязательное место)
- Скопировать java класс
- Скомпилировать java класс
- Регистрируем Concurrent Program Executable
- Метод выполнения: Параллельная программа JAVA
- Имя исполняемого файла указываем без формата файла
- Регистрируем Concurrent Program
- Поле формат = Текст
- Для параметров заполняем также идентификаторы (token)
Шаблон java класса
================= Template.java=========================== package oracle.apps.fnd.cp.request; // Change the package name to the required one. // import all the other required classes/packages. import oracle.apps.fnd.util.*; import oracle.apps.fnd.cp.request.*; // Change the name of the class from Template to your concurrent program // class name public class Template implements JavaConcurrentProgram { /** Optionally provide class constructor without any arguments. * If you provide any arguments to the class constructor then while * running the program will fail. */ public void runProgram(CpContext pCpContext) { ReqCompletion lRC = pCpContext.getReqCompletion(); String CompletionText = ""; /* Code your program logic here. * Use getJDBCConnection method to get the connection object for any * JDBC operations. * Use CpContext provided commit,rollback methods to commit/rollback * data base transactions. * Don't forget to release the connection before returning from this * method. */ /* Call setCompletion method to set the request completion status and * completion text. * Status values are ReqCompletion.NORMAL,ReqCompletion.WARNING, * ReqCompletion.ERROR. * Use Completion text message of length 240 characters. If it is more * than 240 then full string will appear in log file and truncated 240 * characters will be used as request completion text. */ lRC.setCompletion(ReqCompletion.NORMAL, CompletionText); } } ==================End of Template.java===========================
LogFile и OutFile
Для вывода в лог или out:
// get LogFile object from CpContext LogFile lLF = pCpContext.getLogFile(); lLF.writeln("APPS-ORACLE.RU", LogFile.STATEMENT);
// get OutFile object from CpContext OutFile lOF = pCpContext.getOutFile(); lOF.writeln("APPS-ORACLE.RU");
Код завершения
Для типа завершения канкарента (ошибка, предупреждение) используем
ReqCompletion lRC = pCpContext.getReqCompletion(); lRC.setCompletion(ReqCompletion.NORMAL, ""); lRC.setCompletion(ReqCompletion.WARNING, ""); lRC.setCompletion(ReqCompletion.ERROR, "");
Получение входных параметров
// считываем входные параметры ParameterList l_params = p_cp_context.getParameterList(); NameValueType l_param; while (l_params.hasMoreElements()) { l_param = l_params.nextParameter(); if (l_param.getName().equals("p_name_param1")) { lParam1 = l_param.getValue(); } else if (l_param.getName().equals("p_name_param2")) { lParam2 = l_param.getValue(); } }
Connection
Connection con = p_cp_context.getJDBCConnection();
Environment
p_cp_context.getEnvironmentStore().getEnv("JAVA_TOP")
Ссылка на metalink:How To Create a Java Concurrent Program? [ID 827563.1]
oracle.apps.fnd.util — нет такого пакета