Java Code in BPEL 2.0 to set nested variable
Hi,
Using BPEL 2.0 Java Embedding I want to copy the a value to the result element under outputVariable payload.
I am using following code
<extensionActivity>
<bpelx:exec name="Java_Embedding" language="java">
<![CDATA[try{
BPMWorkspaceServices WorkspaceServices = new BPMWorkspaceServices();
XMLElement instId = (XMLElement) getVariableData("inputVariable","payload");
String url = WorkspaceServices.getTaskURL("weblogic.jndi.WLInitialContextFactory", "t3://host:port", "abcde", "abcde",instId.getTextContent());
XMLElement elem = (XMLElement) getVariableData("outputVariable","payload");
elem.setTextContent(url);
} catch (Exception e) {
System.out.println("**************Error Testing Test URL **************");
e.printStackTrace();
}]]>
</bpelx:exec>
</extensionActivity>
I am getting the folowing output payload:-
<outputVariable>
<part name="payload">
<processResponse>http://abcde.com</processResponse>
</part>
</outputVariable>
However I wanted the thing like
<outputVariable>
<part name="payload">
<processResponse>
<result>http://abcde.com</result>
</processResponse>
</part>
</outputVariable>
What code should I write in Java Embedding in BPEL 2.0?
Please help!
Regards,
Sam
Hello Rolando Carrasco,
Thank for responding my question. I figure out the issue. It is because we need to import the java API's what we are using in the java embedding.
Thank you,
Raj
Similar Messages
-
Error in embedding java code in Bpel process
I am calling one of the java snippet in my process which in turn uses the files from some jars.
But I am getting error :
<2006-11-07 12:08:51,227> <ERROR> <default.collaxa.cube.engine.bpel> BPELExecution
java.lang.ExceptionInInitializerError
at bpel.p0.ExecLetBxExe0.execute(ExecLetBxExe0.java:35)
at com.collaxa.cube.engine.ext.wmp.BPELXExecWMP.__executeStatements(BPELXExecWMP.java:52)
at com.collaxa.cube.engine.ext.wmp.BPELActivityWMP.perform(BPELActivityWMP.java:188)
at com.collaxa.cube.engine.CubeEngine.performActivity(CubeEngine.java:3408)
at com.collaxa.cube.engine.CubeEngine.handleWorkItem(CubeEngine.java:1836)
at com.collaxa.cube.engine.dispatch.message.instance.PerformMessageHandler.handleLocal(PerformMessageHandler.java:75)
at com.collaxa.cube.engine.dispatch.DispatchHelper.handleLocalMessage(DispatchHelper.java:166)
at com.collaxa.cube.engine.dispatch.DispatchHelper.sendMemory(DispatchHelper.java:252)
at com.collaxa.cube.engine.CubeEngine.endRequest(CubeEngine.java:5438)
at com.collaxa.cube.engine.CubeEngine.createAndInvoke(CubeEngine.java:1217)
at com.collaxa.cube.engine.delivery.DeliveryService.handleInvoke(DeliveryService.java:511)
at com.collaxa.cube.engine.ejb.impl.CubeDeliveryBean.handleInvoke(CubeDeliveryBean.java:335)
at ICubeDeliveryLocalBean_StatelessSessionBeanWrapper16.handleInvoke(ICubeDeliveryLocalBean_StatelessSessionBeanWrapper16.java:1796)
at com.collaxa.cube.engine.dispatch.message.invoke.InvokeInstanceMessageHandler.handle(InvokeInstanceMessageHandler.java:37)
at com.collaxa.cube.engine.dispatch.DispatchHelper.handleMessage(DispatchHelper.java:125)
at com.collaxa.cube.engine.dispatch.BaseScheduledWorker.process(BaseScheduledWorker.java:70)
at com.collaxa.cube.engine.ejb.impl.WorkerBean.onMessage(WorkerBean.java:86)
at com.evermind.server.ejb.MessageDrivenBeanInvocation.run(MessageDrivenBeanInvocation.java:123)
at com.evermind.server.ejb.MessageDrivenHome.onMessage(MessageDrivenHome.java:755)
at com.evermind.server.ejb.MessageDrivenHome.run(MessageDrivenHome.java:928)
at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:186)
at java.lang.Thread.run(Thread.java:534)
Caused by: java.lang.ClassCastException
at com.misys.eqplus.framework.management.instrumentation.ManagementEvent.<clinit>(ManagementEvent.java:36)
... 22 more
I am putting the jar files in my
BPEL_INF flder
and entering it in this in C:\OraBPELPM_1integration\orabpel\domains\default\config\domain
properties file in C:\OraBPELPM_1\integration\orabpel\domains\default\config
ear file in C:\OraBPELPM_1\integration\orabpel\system\appserver\oc4j\j2ee\home\applications
Please help meHello Santosh,
Are you importing the used java classes using <bpelx:exec import="classname"/>
Regards,
Melvin -
Embedding Java Code(URGENT)
Hello,
I'm trying to do the following, I'm trying to embed Java code into my BPEL process, I have read the tutorial that explains how to embed a java code into BPEL(http://www.oracle.com/technology/products/ias/bpel/pdf/orabpel-Training-Segment10.pdf) but unfortunately the tutorial discusses only how to call the Entity Bean but doesnt mention where in folders(directory) should the bean itself be placed, where are the imports.
I'm going to start with a simple example, a class called Multiplier that has function square, Here is the code for the class:
//Java Multiplier class
public class Multiplier{
public Multiplier(){}
public int square(int x){
return x*x; }
this is code that will be placed in the EXEC(Java code snippet):
//Java Code Snippet goes here...
try{
Object input= getVariableData
("input","payload","/JavaCode");
String parser= input.toString();
int in= Integer.parseInt(parser);
Multiplier obj1= new Multiplier();
int result= obj1.square(in);
addAuditTrailEntry("The square of the input is:"+result);
catch(Exception en){
addAuditTrailEntry(en);
Where should the multiplier class be located(in which folder in the ecplise)or how will the BPEL refer to it ?
Shouldnt I import the Multiplier class in the EXEC(snippet) where should that line go?
Thanks in advance
Hussam GalalAfter going through the Forum I saw I question similar to mine, and I found out there's an example similar to what I am trying to do at C:\orabpel\samples\references\JavaExec
I tried to make an example almost exactly like JavaExec and I edited my build.xml to be similar to build.xml of the example but I keep getting this error:
BUILD FAILED: C:\eclipse-SDK-3.0-win32\eclipse\workspace\Calc\build.xml:28: ORABPEL-00017
Java compilation failed.
Failed to compile file(s) "Calc.bpel".
Exception reported is: Calc.bpel:44: ';' expected.
Multiplier mult= new Multiplier();
^
1 error
Please verify that file Calc.bpel is valid java file or if all required libraries are included in your classpath.
classpath: C:\eclipse-SDK-3.0-win32\eclipse\startup.jar;C:\eclipse-SDK-3.0-win32\eclipse\startup.jar;C:\eclipse-SDK-3.0-win32\eclipse;c:\eclipse-SDK-3.0-win32\eclipse\plugins\bpelz_0.9.10\lib\orabpel-ant.jar;c:\eclipse-SDK-3.0-win32\eclipse\plugins\bpelz_0.9.10\lib\orabpel-boot.jar;c:\eclipse-SDK-3.0-win32\eclipse\plugins\bpelz_0.9.10\lib\orabpel-common.jar;c:\eclipse-SDK-3.0-win32\eclipse\plugins\bpelz_0.9.10\lib\orabpel-thirdparty.jar;c:\eclipse-SDK-3.0-win32\eclipse\plugins\bpelz_0.9.10\lib\orabpel.jar;C:\DOCUME~1\temp_ps\LOCALS~1\Temp\bpelc40446.tmp\BPEL-INF\classes
Here's the java code in the EXEC(snippet):
// Java code snippet goes here ...
com.otn.samples.javaexec.Multiplier
Multiplier mult= new Multiplier();
Object obj1= getVariableData("input","payload","/Calc");
String str= obj1.toString();
int in= Integer.parseInt(str);
int result= mult.square(in);
addAuditTrailEntry("The result is: "+result);
Finally here's the my build.xml:
<?xml version="1.0"?>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Run cxant on this file to build, package and deploy the
Calc BPEL process
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<project name="Calc" default="all" basedir=".">
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Name of the domain the generated BPEL suitcase will be deployed to
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<property name="deploy" value="default"/>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
What version number should be used to tag the generated BPEL archive?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<property name="rev" value="1.0"/>
<target name="CompileJava">
<mkdir dir="${basedir}/BPEL-INF/classes"/>
<javac srcdir="${basedir}/src" destdir="${basedir}/BPEL-INF/classes"/>
</target>
<target name="Calc">
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
the bpelc task compiles and package BPEL processes into versioned BPEL
archives (bpel_...jar). See the "Programming BPEL" guide for more
information on the options of this task.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<bpelc home="${home}" rev="${rev}" deploy="${deploy}"/>
</target>
<target name="all" depends="CompileJava, Calc"/>
</project> -
Error while using Java bindings in BPEL (WSIF)
Hi,
I have a requirement to invoke a java method from BPEL process using WSIF and get the response back from it.
MY java method accepts an input parameter which is object of anothe class.
When I tried to invoke the java class from BPEL, I am getting the following error:
[email protected] : Could not invoke 'getFullName'; nested exception is: org.collaxa.thirdparty.apache.wsif.WSIFException: Class 'com.services.test.Employee' is not compatible; nested exception is: java.lang.NullPointerException
Please find below the java class that I created:
package com.services.test;
import com.services.test.Employee;
import com.services.test.EmployeeFullRecord;
public class EmployeeRecord {
public EmployeeRecord() {
public static void main(String[] args) {
EmployeeRecord employeeRecord = new EmployeeRecord();
public EmployeeFullRecord getFullName(Employee emp) {
String fullName = emp.getFname() + emp.getLname();
EmployeeFullRecord emp1 = new EmployeeFullRecord();
emp1.setFullName(fullName);
return emp1;
The following is the wsdl that I created with JAva bindings:
<types>
<schema attributeFormDefault="qualified"
elementFormDefault="qualified"
targetNamespace="urn:EmployeeRecord"
xmlns="http://www.w3.org/2001/XMLSchema">
<complexType name="Employee">
<sequence>
<element name="fname" type="xsd:string" />
<element name="lname" type="xsd:string" />
</sequence>
</complexType>
<complexType name="EmployeeFullRecord">
<sequence>
<element name="fullName" type="xsd:string" />
</sequence>
</complexType>
</schema>
</types>
<message name="EmployeeRequestMessage">
<part name="emp" type="tns:Employee"/>
</message>
<message name="EmployeeResponseMessage">
<part name="emp1" type="tns:EmployeeFullRecord" />
</message>
<portType name="Employee">
<operation name="getFullName">
<input message="tns:EmployeeRequestMessage" />
<output message="tns:EmployeeResponseMessage" />
</operation>
</portType>
<binding name="JavaBinding" type="tns:Employee">
<java:binding/>
<format:typeMapping encoding="Java" style="Java">
<format:typeMap typeName="tns:Employee" formatType="com.services.test.Employee"/>
<format:typeMap typeName="tns:EmployeeFullRecord" formatType="com.services.test.EmployeeFullRecord"/>
<format:typeMap typeName="xsd:string" formatType="java.lang.String" />
</format:typeMapping>
<operation name="getFullName">
<java:operation methodName="getFullName" />
<input/>
<output/>
</operation>
</binding>
<service name="Employee">
<port name="JavaPort" binding="tns:JavaBinding">
<java:address className="com.services.test.EmployeeRecord"/>
</port>
</service>
Please let me know if I have missed out something.
THanks in advance!!!Hi,
I have created another such service as above and placed the class files in <oraclehome>/bpel/system/classes and invoked the java code from bPEL.
Now i am getting the following error:
com.collaxa.cube.ws.wsif.providers.java.WSIFOperation_Java@98065 : Could not invoke 'createIdentity'; nested exception is: org.collaxa.thirdparty.apache.wsif.WSIFException: Class 'com.testx.wam.services.gen.identity.CreateRequest' is not compatible; nested exception is: javax.xml.bind.UnmarshalException: unexpected element (*uri:"",* local:"createRequest"). Expected elements are <{http://services.test.com/shared/xmlschema/user/1}CreateResponse>
My question is why am I getting URL as empty when I am actually passing the URL to the service. I have highlighted the uri which is showing as empty above.
Please help me solve this issue.
Thanks in advance!!! -
Using jsp variable in java code
Hey guys,
I need some help hope you guys can help me.
I've declared a variable "error" in a jsp. how do I access this variable in the java code whice resides in the same jsp page.
I know I can use java variable in jsp code using
<%= sVariable %>
where sVariable was declared in the java code. but how do I access a jsp variable in java code??
Thanks very much in advanceThanks for the reply.
This is what I want to do.
I've declared a variable "error" using <c:catch var="error">I want to check the value of this variable and suppose if it contains XYZ (error variable will have a long string so I just want to check if it contains a specific value) I want to do step1 and if the variable of error is not XYZ I want to do step 2
Problem is I dont know how to check if error contains the XYZ in jsp thats why I thought java code would help here.
Can you guys suggest a better way to solve my problem.
Thanks again -
Setting bpel variable using external java code
Hi all
I would like to ask if there is a way to set bpel process variable during process execution from external java code using java api without using java embedding code?!!
Thnx in advanceHi, I wanna to know if it is possible at all to edit/update value of variables in a process instance via external java code?
In fact I don't believe that we can set a variable remotely using java APIs.Am I right?
For example,is it possible to change the value of a field in the user task form(that is sent to a user to fill and complete the task)? -
Adding a java class code in BPEL 11g
Hi Friends ,
i m doing one simple example of calling a java class from bpel ,
1. first i created a java class
2. After that in my project i imported the jar file of the same class , and i am using JavaEmbedding
for creating one object of that class and calling one method which return me the string result and finally i am setting the result in bpel variable.
the application is build successfull but when i am deploying it i am getting following error
[02:31:19 PM] Error deploying archive sca_JavaCall_rev1.0.jar to partition "OrderProcessing" on server soa_server1 [http://10.45.4.206:8006]
[02:31:19 PM] HTTP error code returned [500]
[02:31:19 PM] Error message from server:
There was an error deploying the composite on soa_server1: Deployment Failed: Error occurred during deployment of component: JavaCallBPELProcess to service engine: implementation.bpel, for composite: JavaCall: ORABPEL-05250
Error deploying BPEL suitcase.
error while attempting to deploy the BPEL component file "/u04/FMW_HOME/user_projects/domains/Training_domain/servers/soa_server1/dc/soa_3e8c5747-aba0-49b7-91d4-56f74bec87b8"; the exception reported is: java.lang.RuntimeException: failed to compile execlets of JavaCallBPELProcess
This error contained an exception thrown by the underlying deployment module.
Verify the exception trace in the log (with logging level set to debug mode).
[02:31:19 PM] Check server log for more details.
[02:31:19 PM] Error deploying archive sca_JavaCall_rev1.0.jar to partition "OrderProcessing" on server soa_server1 [http://10.45.4.206:8006]
[02:31:19 PM] #### Deployment incomplete. ####
[02:31:19 PM] Error deploying archive file:/C:/JDeveloper/mywork/Trimble/JavaCall/deploy/sca_JavaCall_rev1.0.jar
(oracle.tip.tools.ide.fabric.deploy.common.SOARemoteDeployer)
please tell me what is the problem.You have to use the below value there.
+2. After that in my project i imported the jar file of the same class ,+
There are 2 things, if you are not going to reuse the same code, its better to use Java Embedded component.
If you are going to reuse the same methods from the class then it make sense to import as jar file and use it.
Thanks,
Vijay -
Terminate a BPEL Process using Java Code
Hi,
How can I achieve the forcible termination of a BPEL process via Java code??
Thanks
PramodI guess I'll not be able to use event handlers because if I set an OnMessage, the process wont get kicked off till I receive a message, isnt it?
My requirement is that I want the BPEL to keep executing as normal but as soon as I send a request to Stop, then it should terminate.
Actually, is it possible to achieve the following? That is, I want to keep running a bpel process but at the same time keep monitoring for an input message(sent from another partnerlink maybe). As soon as I receive my input message, a different scope is executed and in this scope I can then put a terminate.
Thanks
Pramod -
How i can set the selected item of a dropDown component from java code
Hi
Thank you for reading my post
How i can set the slected item of a DropDown component from backing beans java code ?
it is binded with a database , so one field determine its display and one other field determine its value , I want to set the selected item of this combobox
In back code i have both value and display values to use them .
can some one give me some help ?
Thanks ,See code sample 3 at http://developers.sun.com/prodtech/javatools/jscreator/learning/tutorials/2/helloweb.html
See also, the selection components row in the table under http://developers.sun.com/prodtech/javatools/jscreator/learning/tutorials/2/helloweb.html
It says
One way to preselect items is to call setSelectedValue(Object[]) or setSelectedValue(Object) from the prerender() method. You pass in the return values of the items that you want preselected. Be sure to verify that getSelected() returns null before setting the default options, or you will overwrite the user's selections on a post-back. -
How to delete the BPEL instance in Java code
Hi all,
How to delete the BPEL instance which I initiate in Java code?
Thanks
JaysonHi,
take a look here
http://download-uk.oracle.com/docs/cd/B31017_01/integrate.1013/b28986/toc.htm
Interface IInstanceHandle
void delete()
Delete the instance from the process domain. -
Class Not found Exception for invoking BPEL process through the Java code
Hi.
The JDeveloper IDE raise the Exception From the invoking the BPEL process through the java code .Class Not Found Exception (Locator,ID.......).What is process of importing these classes from API.In your code (.bpel file) import the library using the bpelx:exec tag. For example the adding the following entry in your .bpel file imports the com.oracle.bpel.client.util library.
<bpelx:exec import="com.oracle.bpel.client.util.*"/> -
How to dynamically configure JPA setting at runtime using java code?
Hi,
I am new to EJB 3.0 and JPA. I am trying to help my company to deploy the use of JPA in EJB3.0. Currently, i am trying out with OpenJPA in IBM Webshpere Application Server 7.0. We have four different WAS servers running for testing, system integration testing, user testing and production respectively, and in each region, the configurations for data source, JDBC username and password, schema, etc are different. So i think i would need to configure the JPA setting during runtime using Java code that determines which is the environment. And apparently i am stuck with the limited knowledge i have.
1) I understand that i could override the JDBC in the persistence xml by creating entity manager using entity manager factory. But is it possible that i do similar thing by using inejction of persistence context on entity manager to obtain a container managed entity manager?
2) Alternatively, it is possible to create multiple persistence unit in the XML and inject different PU to the entity manager, am i right? But how to inject dynamically since @PersistenceContext(unitName="xxx") only accepts constant declaration.
3) Is it possible that the JDBC username and password are read from properties file?
Thanks for your help in advance!Hi
Thanks for the reply.
Are you saying that i have to configure the data source authentication to the backend DB2 using the JAAS-J2C? Correct me if i am mistaken. I guess i am unable to do so as the application server setup only contains one data source, and the server hosted a number of applications. Every applications has their own JDBC username and password supply to the data source (the ID supplied at the DB2 side will decide which resource can access) and thus, i have to supply the username and password at runtime. Talked to the server guy and seems that it is not feasible to have seperate datasource for each applications as considered to the volume of applications hosted inside the server.
Any suggestion? -
How to set schedule task in windows using java code
Hi,
i want to set the schedule task in windows os using the java code can any one help me on that
can any one thinks i need to wright a dll file for that which set the schedule task for me which dll i can use in my java code.
thanks in advance.Maybe this will help you?
-
How i can set dropDown item to 6th item from java code ?
Hi
Thank you for reading my post.
how i can set dropDown item to 6th item from java code ?
i have the value field of database and i can use it to set selected item of DropDown.
so : can i use value field to set the selected item ?
Thank u.Hi,
Please go through the following thread which discusses about setting teh selected item for a dropdown:
http://swforum.sun.com/jive/thread.jspa?forumID=123&threadID=50697
Hope it helps
Cheers
Giri -
Hi,
Is it possible to set new classpath from java code? Something like System.setClasspath(String);
Many thanks
MisoYou aren't the first one to wonder whether that would work, so don't call yourself stupid on that account.
Not taking 15 minutes to set up and run a test to actually see if it works... well, if you really needed the answer, that would be different.
Maybe you are looking for
-
Can I use a 2009 iMac as external display for 2007 macbook pro with DVI port only
I have a late 2009 imac with minidisplay port and a 2007 macbook pro with DVI port. I connected a mini diaplay port to DVI cable but all I get on the imac is a blank screen when I press F2. Can I use the imac this way?
-
When I type in the address, my address bar disappears and I can't get it back
I amjus tnew to Macbookpro and I like seeing the web address that I have typed. Macbook pro seems to hide this info. I am sure it's a quick fix but I am frustrated and tired and just want an answer. What do I have to change to always see my ...wha
-
My iPhone4 gives the message This accessory may not be supported
Phone has been working perfectly until three days ago, while charging the message 'This accessory may not be supported' appeared after two minutes and it then stops charging. I have tried two different Apple chargers both into mains socket and into
-
ITunes updates and Firefox 3.0 won't open up after installation...
I really hope someone can solve this thing... I can't install iTunes updates (from 7.1.2 on) and Firefox 3.0, because they both present the same problem: after download and regular installation, when I click on the .app to open it up, the icon jumps
-
Hi, I have a table with many LONG fields (28). So far, everythings works fine. However, if I add another LONG field I cannot insert a dataset anymore (29 LONG fields). Does there exist a MaxDB parameter or anything else I can change to make inserts p