Problem: Use an ODI variable in a Java Procedure
Hi and thanks in advance,
i need to use a project variable in a java procedure i've written. In particular i should read a file (and manage it...), but its name is stored in avariable called #fileName that i refresh each time.
writing something like:
<% FileInputStream fis = new FileInputStream(C:\\"+"#filename");
etc.
etc.
%>
doesn't work...
How can i use the value of my ODI variable inside the Java code?
Please, help me if you can...
Thank you very much.
Any Idea? Please, this question is blocking me...
Similar Messages
-
Is it possible to use a ODI variable in a procedure
I am trying to call an external java program from the operating system (MS-DOS) using a procedure. This is possible using the os.system("<command>") syntax - declaring a procedure to use Jython. However, I want to be able to pass two ODI variables to the java program. I do not seem able to do this, is it possible ?
I also tried calling the OS command from within a package - but again cannot get the OS command to pass the variables.
I would appreciate any help on this.Thanks for your response.
I am still unable to do this.
Problem is the procedure is "Jython" and it does not know what the ODI variables are.
I basically have two variables source and target which need to be passed to a java procedure.
So I created two VARIABLES in ODI - source and target.
I then have a procedure with the command;
import os
import sys
cmd = "java ConvFile"
rc = os.system(cmd)
when this runs it does not pass the variables.
if you have
import os
import sys
cmd = "java ConvFile"+#Tax_Updates.SourceFile+#Tax_Updates.TargetFile
rc = os.system(cmd)
then it does not know what #Tax_Updates.SourceFile and #Tax_Updates.TargetFile are and so just passes them as strings.
If you still think it is possible or anyone esle knows can you elaborate a little on the solution.
Thanks
Nick -
How to use an ODI variable in an IKM?
Hi,
I am trying use the value of ODI variable in IKM SQL Incremental Update. The variable contains the count of error records. My problem is how to use the variable in the IKM. I am trying to use the variable in an If condition like:
<%if(%>#COuntReprocessRec<%>0){%>
I have declared the variable as Numeric.
Thanks.Hi,
For the below requirement follow the below steps.
I have to execute the 'Insert of flow into I$ table' step of IKM, only if Error records are present in my source table. The IKM i am using is IKM SQL Incremental Update.
Create a new step before 'Insert of flow into I$ table' step, i say "Check Error Record".
Command on source
Technology : <your source technology>
Schema: Whichever schema points to ur source error table
Command:
select count(*) as row_count from <table_name>
Command on Target
Technology : Jython
Command:
CountData=#row_count
if CountData>0:
##raise ' \n\nThere are error records in source error table'
Thats it.
This will stop the flow in case of error records persist in ur source table, else it allow the flow to next Insert I$ step.
P.S: Replace ## with TAB.
Thanks,
Guru -
Problem using a Boolean variable
Greetings;
I'm writing a game in which the player and 'enemies' fall off the screen when they 'die'. The problem is that I also want to constrain their movement to within the screen boundaries whenever they have not been killed. To start I thought I'd go into the class I wrote to handle the player falling off the screen when he's touched by an enemy and create a boolean variable so that Flash would know to let him fall off the screen when killed, but remain constrained on the screen until that point.The problem is that now the player stays on the screen even when I want him to fall off (i.e. after he's been hit).
The class I wrote to handle the player dying is below, and the boolean variable is called 'playerBeenHit'. Since the player only gets a y acceleration when hit, I tried using the 'ay' variable to control the behavior but with the same results. In troubleshooting I tried to trace(playerBeenHit) on every frame and noticed it would go to 'true' and then set itself back to 'false' for three out of four readouts even after the player was hit. I'm not sure what I'm doing wrong here.
Thanks,
Jeremy
package jab.enemy
import flash.display.MovieClip;
import flash.events.Event;
import flash.geom.ColorTransform;
public class DieLikeAPlayer
private var _clip1:MovieClip; // the 'player'
private var _clip2:MovieClip; // the 'enemy' who kills the 'player' on contact.
private var ay = 0; // vertical acceleration for falling off the screen.
private var vx = 0; // horizontal initial velocity, 'knockback' from the impact.
private var vy = 0; // vertical initial velocity, 'knockback' from the impact.
private var playerBeenHit:Boolean = false;
public function DieLikeAPlayer(clip1:MovieClip, clip2:MovieClip): void
_clip1 = clip1;
_clip2 = clip2;
_clip1.stage.addEventListener(Event.ENTER_FRAME, onEnterFrame)
function onEnterFrame(event:Event):void
if (_clip1.hitTestObject(_clip2)) // what happens when the player gets killed.
playerBeenHit= true;
ay = 3;
_clip1.scaleY = -Math.abs(_clip1.scaleY);
_clip1.alpha = 0.4;
_clip1.gotoAndStop(2);
vx = -0.2;
vy = 2;
_clip1.y += 5;
_clip1.rotation = -45
// adding y acceleration and x velocity (knockback) from being hit.
_clip1.x += vx;
_clip1.y += vy;
vy += ay;
if(playerBeenHit == false)//constrains the player from moving past the bottom of the screen.
if(_clip1.y > 620)
{_clip1.y = 620;}
if (_clip1.y > 100000) // brings the player 'back to life' after falling 100,000 pixels.
ay = vx = vy = 0;
_clip1.alpha = 1;
_clip1.scaleY = Math.abs(_clip1.scaleY);
_clip1.rotation = 0;
_clip1.gotoAndStop(1);
_clip1.x = 480;
_clip1.y = 300;
playerBeenHit = 0;that shouldn't compile. don't you see an error message about your boolean being assigned an int? you are publishing for as3, correct?
-
Sincere Eclipse 3.0.2 build problems using a package for all Eclipse Java p
Hi,
I had the following problem:
- jar-file put into a directory (for jdbc-access)
- Environment variable set in Window/preferences/Java/BuildPath/ClassPathVariables:
Name: classpath (could be any other name, does not correlate with WIN env. var.)
Path: C:\java\eclipse\jars\mysql-connector-java-3.1.8-bin.jar
- class-file was automatically built by Eclipse, error message:
�. java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
In Windows I set the classpath environment variable to
classpath=.;C:\java\eclipse\jars\mysql-connector-java-3.1.8-bin.jar
In Windows/i.e., a DOS-Shell. It works
As it didn�t work in Eclipse, I deleted Eclipse and installed it again (from an elder version I had on another workstation)
After starting Eclipse asked me to rebuild all -> Yes (it then needed some time to do so)
Then it worked
So, right here I thought I knew how to go on in other projects using this jar-file, but:
The same problem appears in another project, but it works in WIN/DOS command line, but not in Eclipse. Project/Clean und rebuilding automatically or manually doesn�t help.
As a workaround for this project I did in
Project/Properties/Java/BuildPath/Projects I marked a link to the project where it works (see above), and now it works, too.
But I am not satisfied, I don�t like trial and error solutions.
I suppose that Project/Clean doesn�t really clean properly.
Has anybody made similar experience and knows the real solution?
Thanks
MichelJediKnight wrote:I didn't find it in AUR
What search term did you use?? Here is monodevelop-git already in the AUR.
It seems it may have been abandonded, but perhaps you could take over that package rather than starting a new one.
Additionally, a patch is applied in that PKGBUILD. Perhaps that could be needed to solve your problem. -
Problem Using a Bind Variable on a SelectOneChoice List VO
Hi everyone,
I have a List View Object on my application that contains the lookup values for some combos. The underlying table has three columns: LOOKUP_TYPE, LOOKUP_CODE and DESCRIPTION. It is used like this: when i want to find out which are the possible values for the "Customer Status" field on a form, i need to execute this VO with LOOKUP_TYPE = "CUST_STATUS". when i want to find the Supplier status, i execute it with "SUPP_STATUS". Then i compare the value of LOOKUP_CODE with the customer_status or supplier_status codes to get its description.
The problem is, i have to use this VO as the Dynamic List of values for a SelectOneChoice. I have correctly mapped it, but the VO query is like this:
SELECT lookup_code, description FROM tab_lookup_codes WHERE lookup_type = :lkpType
So i need to set the bind variable dinamically, as i would do with ExecuteWithParams, but for a SelectOneChoice list. How can i do such thing? is there a way to define a value for this parameter before ADF executes the List VO on the page definition, or even programatically?
If you didn't understand my requirement, please let me know.
Thank you very much for your time!
Thiago SouzaHi Thiago,
If i understand you problem you can try to insert a invokeAction to your page definition with refresh property equals prepareModel that call a method that sets your Where param propertly. In this way your method will be executed before prepareModel.
I haven't test this, its only a possible idea.
Best Regards
Hi everyone,
I have a List View Object on my application that
contains the lookup values for some combos. The
underlying table has three columns: LOOKUP_TYPE,
LOOKUP_CODE and DESCRIPTION. It is used like this:
when i want to find out which are the possible values
for the "Customer Status" field on a form, i need to
execute this VO with LOOKUP_TYPE = "CUST_STATUS".
when i want to find the Supplier status, i execute it
with "SUPP_STATUS". Then i compare the value of
LOOKUP_CODE with the customer_status or
supplier_status codes to get its description.
The problem is, i have to use this VO as the Dynamic
List of values for a SelectOneChoice. I have
correctly mapped it, but the VO query is like this:
SELECT lookup_code, description FROM tab_lookup_codes
WHERE lookup_type = :lkpType
So i need to set the bind variable dinamically, as i
would do with ExecuteWithParams, but for a
SelectOneChoice list. How can i do such thing? is
there a way to define a value for this parameter
before ADF executes the List VO on the page
definition, or even programatically?
If you didn't understand my requirement, please let
me know.
Thank you very much for your time!
Thiago Souza -
Problem using '--' on a variable via a pointer
Hello.
I'm new to C (been learning just over a week now), so if you take the time to reply - please don't pitch the answer too high!
I've just finished work on my latest project - a Sudoku Solver. It only does simple puzzles, but it (finally) works.
Here's a basic run-down of what it does: a user enters the known numbers of a Sudoku grid, line by line, and the program assigns these to an array (if the number is unknown, the relevant part of the array is set to zero). The array also holds a 'possibles' value for each cell, which says how many numbers are still potential values for that cells (so, when the user's input is first translated into the array, this value will be nine for an empty cell).
A series of structs are then set up, one per cell, which hold various bits of information about each cell. The main things are the coordinates for each cell, together with whether each number (one to nine) is a possibility for that cell, and the total number of possibilities for that cell (which is a pointer to the 'possibles' value in the array, mentioned earlier).
The solving loop is split into two parts. The first goes through each struct, and determines whether the value for that cell is known or not. If it is, that value is removed as a possibility for each cell in its row, column, and box.
The second part of the loop goes through all cells and, if only one possibility exists for a cell, assigns that as the final answer in the array. The solving loop then continues until all cells are solved.
My problem came when reducing the 'possibles' value for a cell in the array, via the struct. My first attempt used this line:
*mySudoku[j].possibles--
('mySudoku' is the name of the struct type; 'j' is a value (0-81), and 'possibles' is a field that points to the value in the array that holds how many potential answers there still are for that cell). In my mind, that code snippet should point at the address held in that struct's field, and reduce it by one.
After much banging of head against a wall, I discovered that the above code snippet wasn't doing the same as:
*mySudoku[j].possibles = (*mySudoku[j].possibles)-1
Once I'd changed the code over, the program worked like a dream.
My question is: why aren't those two bits of code doing the same thing? I've obviously misunderstood something fairly basic, but I can't understand what.
If any of my explanation isn't clear, then please let me know and I'll clarify.
Thanks for your time,
Pete.
Message was edited by: Pete_M2Pete_M2 wrote:
*mySudoku[j].possibles--
*mySudoku[j].possibles = (*mySudoku[j].possibles)-1
My question is: why aren't those two bits of code doing the same thing? I've obviously misunderstood something fairly basic, but I can't understand what.
In a word, precedence. The first operation performed is the array subscript. Then the member selection via ".". Next is postfix decrement. The pointer dereference is done last.
You should probably use parentheses to clearly specify the order in which you want operations to be performed. I am and have always been virtually clueless about precedence. I always use parentheses to clearly indicate what I want to be done. Even if they are redundant, they still help to clarify the situation.
I would have written the above code as:
--(*mySudoku[j].possibles)
I would use prefix decrement because I don't need the pre-decrement value. I use the parentheses for clarity even though they supposedly aren't needed with prefix decrement. I say "supposedly" because I really have no clue. I have been programming for 20 year and the only precedence I know is parenthesis trumps all (usually). -
How to use ODI procedures into a ODI variable
Hi,
I have the below condition
select c1 from table where c1>#ODIVAR1 and use the output of this query in a variable to define the package flow
If output=0 package flow goes as XXX
else
flow goes as YYY.
So please suggest how to use a ODI variable to capture the procedures putput and use it in package flow in this case.
Thanks,
Naveen.Step1 . Refresh the variable in the package, which have this query select c1 from table where c1>#ODIVAR1
Step2. Evaluate above variable (operator = , value 0 )
Step 3. If true Package flow xxx , else false yyy
Please close the thread once you get the required flow. -
Error while passing ODI variable in JNDI Url for JMS Queue XML
Hi,
Facing a weird problem while passing ODI variable in JNDI Url for JMS Queue XML.
Below is the JNDI Url configured under ODI Topology:
JNDI Url: t3://<host_location>?d=#TEST.SCHEMA_FILE&s=<schema_name>&JMS_DESTINATION=jms/<queue_name>
where,
#TEST.SCHEMA_FILE --> ODI variable storing xsd name and location
Issue Description:
If we restart ODI server then for the first run of any ODI interface using JMS Queue XML, it is unable to get the value for ODI variable present in JNDI Url (d=#TEST.SCHEMA_FILE).
It throws error message saying: No XSD found
Temporary Resolution:
As a temporary fix if we hard-code and pass the value in that ODI variable as shown below, it will successfully go through.
eg: JNDI Url: t3://<host_location>?d=C:\XSD\test.xsd&s=<schema_name>&JMS_DESTINATION=jms/<queue_name>
Reverting it back to variable later will have no issues and subsequent run will succeed.
But again anytime later if server is restarted then first run will have this issue.
Want to have permanent fix for it.
Any one having idea on it please share. Appreciate your help!What ODI version are you using? It could be related to the bug in the older version as described in support note Doc ID 1290326.1
-
Problem using standard libraries in C++ class
Hi
I am new to JNI. I am having problems using standard C++ library.
My java code looks like
public class JavaSide {
public native void sayHello();
static {
System.loadLibrary("NativeSideImpl");
public static void main(String[] args) {
JavaSide app = new JavaSide();
app.sayHello();
and My NativeSideImpl.cpp code is
#include <stdio.h>
#include "JavaSide.h"
JNIEXPORT void JNICALL Java_JavaSide_sayHello
(JNIEnv *env, jobject obj)
cout<<" Hello";
I am compiling this on solaris 5.8 using the following command
CC -G -Kpic -I/usr/java/include -I/usr/java/include/solaris NativeSideImpl.cpp -o libNativeSideImpl.so
when I run my java program using
java JavaSide
I get the following exception
Exception in thread "main" java.lang.UnsatisfiedLinkError: /home/oracle/temp/libhello.so: ld.so.1: java: fatal: relocation error: file /home/oracle/temp/libhello.so: symbol __1cDstdEcout_: referenced symbol not found
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1473)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1397)
at java.lang.Runtime.loadLibrary0(Runtime.java:788)
at java.lang.System.loadLibrary(System.java:832)
at HelloWorld.<clinit>(HelloWorld.java:6)
The program works if I replace cout with printf() .
My LD_LIBRARY_PATH does include the path where of the C++ standard libraries.
Any help would be much appreciated
Thanks in advance..Well, cout was just a a simple example. I was having problems with using the std C++ libraries, e.g ostringstream . and likes .
I tried using the -lCstd in the compile option and it worked. -
Using ODI send mail tool in procedure
Hi,
I want to use an ODI send mail option in procedure when certain condition is met.
for example:
I have one table "Dummy_table" as
Dummy_table
PRODUCTID
PRODTYPE
PRODCODE
11111
A
11111
22222
A
22222
33333
B
33333
00000
A
00000
And a procedure which is trying to insert records in above table. In this procedure i want to add validation and when the validation is true, need to send mail.
Mail to be triggered:
If PRODUCTID already exists in table then do not insert record with same PRODUCTID in table. Instead of that, call an ODI send mail tool from the procedure which is trying to insert duplicate entry.
Let's say my procedure is trying to insert record with PRODUCTID = "22222" . In this case, i dont want an entry to be inserted as it is already present. I want a mail to be triggered saying that this record is already present.
Any help would be highly appreciated.
Thanks in advance.
ShilpaSure, please follow the steps:
1) First import one CKM to your project. If you are working with Oracle then you could use "CKM Oracle";
2) Open your Interface and go to "Controls" tab and select your "CKM Oracle" in CKM Selector combo box. Pay attention to the CKM options and change them accordingly to your needs;
3) Go to "Models" tab and search for your "Dummy_table" model;
4) Expand "Dummy_table" model and right click "Constraints" -> New Condition
5) Give it a name, select Type = "Oracle Data Integrator Condition" and then write down a SQL that will indicate which are the valid values that should be loaded to your target table. In your example, it should be something like this (DUM being the model table alias):
DUM.PRODUCTID NOT IN (SELECT T1.PRODUCTID FROM Dummy_table T1)
This query is telling ODI that only the rows with PRODUCTID that does not exists in the target table are valid. All the rest (in this case all rows that already exists in the target table) should be logged in E$ table.
Please let me know if it worked.
Thanks. -
Calling stored java-procedure in Oracle9i Lite from ODBC
I've got a problem:
I try to call a stored java-procedure through ODBC. The stored
java-procedure in Oracle 9i Lite is called successfully from
server console (MSQL). When I call my stored java-procedure from
my web-application (ASP) through ODBC connection (ODBC drivers
are from Oracle 9i Lite set V3.51) the server returns an error
(Microsoft OLE DB Provider for ODBC Drivers (0x80004005) [POL-
8000] could not start the Java Virtual Machine),
however 'select' without java-procedure calls works
successfully. PATH and CLASSPATH variables are properly set up.
File jvm.dll is present.
Can anybody help me?Pass String[] as an argument to mainbook():
create or replace PROCEDURE openpdffile
AS LANGUAGE JAVA
NAME 'pdfopenbook.mainbook(java.lang.String[])';Have you posted it on the Database forum?
Regards,
Nick -
How to use odi variable in java code.
Hi,
I am trying to calculate check sum of a file and need to capture that in a odi variable...
I wrote code like this(selected technology as java bean shell)
<@
import java.io.*;
import java.util.zip.*;
public class checksum {
public static void main(String[] args) throws Exception {
FileInputStream fis = new FileInputStream(new File("c:/dummy.txt"));
CheckedInputStream cis = new CheckedInputStream(fis, new CRC32());
BufferedInputStream in = new BufferedInputStream(cis);
while (in.read() != -1) {
#checksum = cis.getChecksum().getValue();
}@>
But I am not able to get that value...
I tried in another way like this
<@
import java.io.*;
import java.util.zip.*;
public class checksum {
public static void main(String[] args) throws Exception {
long result;
FileInputStream fis = new FileInputStream(new File("c:/dummy.txt"));
CheckedInputStream cis = new CheckedInputStream(fis, new CRC32());
BufferedInputStream in = new BufferedInputStream(cis);
while (in.read() != -1) {
result= cis.getChecksum().getValue();
@>
In odi variable refreshing mode i selected schema as memory_engine and wrote
select '<@=result@>' from dual;
even this wont work for me :(
Anyone pls help me in this...
Thanks in advance
PavanHi Phani,
Thanks for the reply. I resolved this. The mistake is I wrote java code in a class,in main function. I removed class and main function. Now I am able to capture value into Odi variable...
I modified code as
<@
import java.io.*;
import java.util.zip.*;
long result;
FileInputStream fis = new FileInputStream(new File("C:/dummy.txt"));
CheckedInputStream cis = new CheckedInputStream(fis, new CRC32());
BufferedInputStream in = new BufferedInputStream(cis);
while (in.read() != -1) {
result=cis.getChecksum().getValue();
@>
finally retrieving result value from dual
select '<@=result@> from dual
Edited by: 908443 on Jan 16, 2012 10:42 PM -
Problem using the value of the variable in the KM options - Essbase Extract
Hi,
I am able to extract the data from Hyperion Essbase using the report script present in D:\ODIHome\oracledi\demo\hyperion.
Instead of hardcoding the absolute file path in LKM options, I have requirement to use the value of variable, PIPHome and form the file path.
So in LKM Options I gave Extraction Query File path as #GLOBAL.PIPHome \oracledi\demo\hyperion\extract.rep
Its not able extract the data and throwing following exception.............Please help me in using the variable value in KM options. Thanks.
org.apache.bsf.BSFException: exception from Jython:
Traceback (innermost last):
File "<string>", line 1, in ?
com.hyperion.odi.essbase.ODIEssbaseException: Cannot execute report. Analytic Server Error(1030009): Name too long (#GLOBAL.PIP_HOME\oracledi\demo\hyperion\extract.rep) in ESSAPI function EssReportFile
at com.hyperion.odi.essbase.ODIEssbaseDataReader.getAppData(Unknown Source)
at com.hyperion.odi.essbase.AbstractEssbaseReader.extract(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.python.core.PyReflectedFunction.__call__(PyReflectedFunction.java)
at org.python.core.PyMethod.__call__(PyMethod.java)
at org.python.core.PyObject.__call__(PyObject.java)
at org.python.core.PyInstance.invoke(PyInstance.java)
at org.python.pycode._pyx3.f$0(<string>:1)
at org.python.pycode._pyx3.call_function(<string>)
at org.python.core.PyTableCode.call(PyTableCode.java)
at org.python.core.PyCode.call(PyCode.java)
at org.python.core.Py.runCode(Py.java)
at org.python.core.Py.exec(Py.java)
at org.python.util.PythonInterpreter.exec(PythonInterpreter.java)
at org.apache.bsf.engines.jython.JythonEngine.exec(JythonEngine.java:144)
at com.sunopsis.dwg.codeinterpretor.k.a(Unknown Source)
at com.sunopsis.dwg.dbobj.SnpSessTaskSql.scripting(Unknown Source)
at com.sunopsis.dwg.dbobj.SnpSessTaskSql.execScriptingOrders(Unknown Source)
at com.sunopsis.dwg.dbobj.SnpSessTaskSql.execScriptingOrders(Unknown Source)
at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTaskTrt(Unknown Source)
at com.sunopsis.dwg.dbobj.SnpSessTaskSqlC.treatTaskTrt(Unknown Source)
at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTask(Unknown Source)
at com.sunopsis.dwg.dbobj.SnpSessStep.treatSessStep(Unknown Source)
at com.sunopsis.dwg.dbobj.SnpSession.treatSession(Unknown Source)
at com.sunopsis.dwg.cmd.DwgCommandSession.treatCommand(Unknown Source)
at com.sunopsis.dwg.cmd.DwgCommandBase.execute(Unknown Source)
at com.sunopsis.dwg.cmd.e.i(Unknown Source)
at com.sunopsis.dwg.cmd.h.y(Unknown Source)
at com.sunopsis.dwg.cmd.e.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: com.hyperion.odi.essbase.ODIEssbaseException: Cannot execute report. Analytic Server Error(1030009): Name too long (#GLOBAL.PIP_HOME\oracledi\demo\hyperion\extract.rep) in ESSAPI function EssReportFile
at com.hyperion.odi.essbase.wrapper.EssbaseReportDataIterator.init(Unknown Source)
... 33 more
Caused by: com.essbase.api.base.EssException: Cannot execute report. Analytic Server Error(1030009): Name too long (#GLOBAL.PIP_HOME\oracledi\demo\hyperion\extract.rep) in ESSAPI function EssReportFile
at com.essbase.server.framework.EssOrbPluginDirect.ex_olap(Unknown Source)
at com.essbase.server.framework.EssOrbPluginDirect.essMainReport(Unknown Source)
at com.essbase.api.session.EssOrbPlugin._invokeMainMethod(Unknown Source)
at com.essbase.api.session.EssOrbPlugin._invokeMethod2(Unknown Source)
at com.essbase.api.session.EssOrbPlugin._invokeMethod(Unknown Source)
at com.essbase.server.framework.EssOrbPluginDirect._invokeProtected(Unknown Source)
at com.essbase.api.session.EssOrbPluginEmbedded.invokeMethod(Unknown Source)
at com.essbase.api.session.EssOrbPluginEmbedded.invokeMethod(Unknown Source)
at com.essbase.api.session.EssOrbPlugin.essMainReport(Unknown Source)
at com.essbase.api.datasource.EssCube.report(Unknown Source)
... 34 more
com.hyperion.odi.essbase.ODIEssbaseException: com.hyperion.odi.essbase.ODIEssbaseException: Cannot execute report. Analytic Server Error(1030009): Name too long (#GLOBAL.PIP_HOME\oracledi\demo\hyperion\extract.rep) in ESSAPI function EssReportFile
at org.apache.bsf.engines.jython.JythonEngine.exec(JythonEngine.java:146)
at com.sunopsis.dwg.codeinterpretor.k.a(Unknown Source)
at com.sunopsis.dwg.dbobj.SnpSessTaskSql.scripting(Unknown Source)
at com.sunopsis.dwg.dbobj.SnpSessTaskSql.execScriptingOrders(Unknown Source)
at com.sunopsis.dwg.dbobj.SnpSessTaskSql.execScriptingOrders(Unknown Source)
at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTaskTrt(Unknown Source)
at com.sunopsis.dwg.dbobj.SnpSessTaskSqlC.treatTaskTrt(Unknown Source)
at com.sunopsis.dwg.dbobj.SnpSessTaskSql.treatTask(Unknown Source)
at com.sunopsis.dwg.dbobj.SnpSessStep.treatSessStep(Unknown Source)
at com.sunopsis.dwg.dbobj.SnpSession.treatSession(Unknown Source)
at com.sunopsis.dwg.cmd.DwgCommandSession.treatCommand(Unknown Source)
at com.sunopsis.dwg.cmd.DwgCommandBase.execute(Unknown Source)
at com.sunopsis.dwg.cmd.e.i(Unknown Source)
at com.sunopsis.dwg.cmd.h.y(Unknown Source)
at com.sunopsis.dwg.cmd.e.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)Hi,
If you are going to use variable as one of the options then what you can do is create a package.
Drag your variable on to the package and set or declare it.
Then drag your interface on to the package.
Now when you execute the package it should make use of the variable.
Cheers
John
http://john-goodwin.blogspot.com/ -
How to use ODI Variables in Jython
Hi, im doing a dynamic interfaz .. so i make a connection to bd.
When i try to do it .. i got an error...
How can i access to the odi variables from odi..
this is my code ..
<%
import java.sql.*;
import java.io.*;
BufferedWriter bw = new BufferedWriter(new FileWriter("c:\log.txt"));
StringBuilder strB = new StringBuilder();
Class.forName("oracle.jdbc.driver.OracleDriver");
String ip = "#PROJECT.IP";
String url = "jdbc:oracle:thin:@"+ip+":1521:orcl";
Connection con = DriverManager.getConnection(url,"snpw","admin");
stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
bw.write(" raise(' ");
out.print(" raise(' ");
String str = "SELECT c.var_name,d.project_name FROM snp_package a JOIN snp_step b On (a.i_package = b.i_package) JOIN snp_var c ON (b.i_var = c.i_var) JOIN snp_project d ON (c.i_project = d.i_project) WHERE UPPER(pack_name) = upper('DebugJava')";
ResultSet rs = stmt.executeQuery(str);
while(rs.next()){
String var_name = rs.getString("var_name");
String project_name = rs.getString("project_name");
out.print(var_name+" #" project_name"."+var_name+"\n ");
bw.write("#STUFF."+var_name);
bw.write("')");
out.print("')");
rs.close();
bw.close();
stmt.close();
con.close();
%>
this is the error ...:
The application script threw an exception: java.sql.SQLException: Excepción de E/S: The Network Adapter could not establish the connection BSF info: DebugVariables at line: 0 column: columnNo
Iknow tha is taking "#PROJECT.IP" like my ip .. but there is a variable that is on my package with a assiged value 127.0.0.1
but jython is not taking it !!
I make a raise to the variable .. and yes the variable take de value "127.0.0.1" but not in my jython code
note: My variable is linked with OK to the jython procedure on my package
Can i acces to the variable? from jython how?.
Thanks in advanced!!
Edited by: user11334562 on 28-abr-2010 15:121. This is not a jython code, this is beanshell code. Anything you put between <% and %> is beanshell code which is sort of a parser code for ODI. Check out
http://www.beanshell.org/
2. Your expression for "url" variable is wrong. If you want to concatenate strings, you have to use + sign i.e it should be:
String url = "jdbc:oracle:thin:@"+ip+":1521:orcl";
Other statments need to be adjusted similar way.
3. Why would you want to go through so many trouble? Just extract the SQL into a file using ODI SQLUnload tool. The sql should be:
SELECT c.var_name||' #'||d.project_name||'.'||c.var_name FROM snp_package a JOIN snp_step b On (a.i_package = b.i_package) JOIN snp_var c ON (b.i_var = c.i_var) JOIN snp_project d ON (c.i_project = d.i_project) WHERE UPPER(pack_name) = upper('DebugJava')
4. How does printing a set of variables from a particular package help you to write dynamic interface?
Maybe you are looking for
-
Quick review of 10.9 upgraded from 10.6.8 on older MBP
Hello all, I just upgraded two laptops a MBP15 5,4 and a MBP13 8,1/SSD to 10.9, both from 10.6.8. both have 4GB RAM I read a lot of issues, install problems, slow machines etc, etc. Here's what i found. Folks here talked me out of doing a clean inst
-
ORDS (2.0.7) - URL Mapping - Names need to be lower case
Using the latest ORDS (2.0.7) - when using settings to setup multiple databases, I have noticed that the the "URL Mapping" rule will not be picked up if the "Name" of the connection is not all lower case. The "Routing Rule" can be mixed case, but the
-
The hyperlink in the control panel has disapeared. It was there yesterday but today it is gone. Did I inadvertanly turned an option off??
-
need your help does the flash cs6 trial work with vista home edition? according to what is written on the web it doesn't but on other forum I've found a quite opposite information; ty
-
Best quality, smallest file size
I have a 3.5 minute motion project which includes the opening credits to a video I am working on - how do I go about getting this into Final Cut Pro with the highest quality possible? I am very new to Final Cut Studio, so some input would really be a