Process Diagram of an instance using PAPI
Hi,
I`m trying to get que Process Diagram of an instance with PAPI using processGetDiagram but it doesn`t work, any ideas or examples?
Thanks a lot
I dont think there is any way to update the value of any instance variable directly by PAPI.
What you can do is have a Global Activity with instance access from where you can access all the instance/ external variables.
You can call this activity using PAPI and can send arguments telling it what to do.
Let me know if this helps.
Similar Messages
-
How to Increase the retreving size of instances using PAPI filters.
Hi,
How to Increase the retreving size of instances using PAPI filters.
In my engine database instance size exceeds 2500 then we are getting following exception.
If we login in to user workspace able to see the instances but while trying to retrieve from PAPI getting below exception and showing the user's inbox aize as 0.
In Process Admin console we set all the required parameters.
Still I m getting the same problem.
Can you please lgive mev the solution.
<Mar 23, 2010 8:58:24 PM SGT> <Warning> <RMI> <BEA-080003> <RuntimeException thrown by rmi server: fuego.ejbengine.EJBProcessControl_1zamnl_EOImpl.getInstancesByFilter(Lfuego.papi.impl.j2ee.EJBSecureEngineInfo;Ljava.lang.String;Lfuego.papi.Filter;)
java.lang.ClassCastException: cannot assign instance of java.util.HashSet to field fuego.view.FilterImpl.attributes of type java.util.List in instance of fuego.view.FilterImpl.
java.lang.ClassCastException: cannot assign instance of java.util.HashSet to field fuego.view.FilterImpl.attributes of type java.util.List in instance of fuego.view.FilterImpl
at java.io.ObjectStreamClass$FieldReflector.setObjFieldValues(ObjectStreamClass.java:2032)
at java.io.ObjectStreamClass.setObjFieldValues(ObjectStreamClass.java:1212)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1953)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1871)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1753)
Regards,
Bharath.
Edited by: bg57295 on Mar 24, 2010 6:45 PMHi Bharath,
Believe me, you have an incompatibility between different build#.
PAPI has an instance cache. When certain process has more instances than the maximum specified, the cache is switch to status OPEN. That means, that PAPI will not be able to resolve some instance queries using the information in the cache. When that occurs, PAPI forward all those queries to the engine.
The incompatibility introduced is in the communication between PAPI and Engine. So, you only get the exception when you have more instances than the maximum cache size.
Regards,
Ariel -
Retrieving user created variables from multiple instances using PAPI-WS
Hi,
I'm using PAPI-WS to retrieve a list of instances from Oracle BPM 10.3.1.0.0 using ProcessGetInstance. These are modeled as external tasks. ProcessGetInstance returns an InstanceInfoBean which has no place for user defined variables that were set when the instances were started.
The only way to get user defined variables seems to be to iterate through the entire list and send an InstanceGetVariable request for each one. InstanceGetVariable does not seem allow more than one instance id to be specified in a call from my testing. This is very inefficient since we could easily have hundreds of instances that we're trying to display. Is there some way to get the list of instances to include the user defined variables, or to get the user defined variables for more than one instance in a single call?
Thanks,
SteveI can't reproduce the problem. This is what I see:C:\temp>javac -cp . Ttest.java
C:\temp>java -version
java version "1.6.0"
Java(TM) SE Runtime Environment (build 1.6.0-b105)
Java HotSpot(TM) Client VM (build 1.6.0-b105, mixed mode, sharing)
C:\temp>java -cp . Ttest
1
3
3 -
Using PAPI to create instance on Enterpise
Hi.
I have deployed my process on Enterprise edition with weblogic and oracle.
I need to know all the libraries required for writing PAPI program to create instance.
Also anything i should take care of while writing the java program to create instance using PAPI.
Like. do i need to have weblogic.jar in the classpath. or any other jars.
Regards
Right ChordThanks,
Maybe I didn't explain exactly what I was expecting with the standby database, these steps are what I did, to resolve the issue
ENABLE THE STANDBY DATABASE TO STARTUP FROM SPFILE
Step 1: create a newly spfile from the current pfile
SQL> CREATE SPFILE='C:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\SPFILEORCL.ORA' FROM PFILE='C:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\INITORCL.ORA';
Step 2: Rename the INITORCL.ORA TO SAVE_DATE_INITORCL.ORA
Example: the C:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\INITORCL.ORA became
C:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\SAVE_24072007_INITORCL.ORA
Step 3: delete the former sid created
C:\ORADIM -delete -sid orcl
Instance deleted.
Step 3: Change the Oracle service to start when the OS start
C:\ ORADIM -new -sid ORCL -SRVC OracleServiceORCL -STARTMODE auto -SRVCSTART system -SPFILE
Instance created.
Now When I shutdown the whole system and start it up, the standby database startup. the only thing is that the standby database startup a read-only mode, defautl with oracle 10g this is fine for me, because the MRP is stopped but the log shipping is not stopped.
So eventhough the system admin shutdown the database server at OS level without letting me know, tha standby should continue receiving archived log files.
I'll just need to monitore the lop apply process and start it to apply archived log files received
Thanks -
How to abort instance using a specific role
I create a process using BPM studio 10g. I create a role named GDadmin and a participant named GDadmin. No activity or interactive activity is in the GD admin role.
In the BPM standalone 10g, I create a participant and role both named GDadmin. This user can abort the instance. However, if I login as GDadmin, the workitem table is empty.
I want to the GDadmin can view all current instances. This user can also abort the selected instances.
Which activity can be used to let the GDadmin view all current instances and activity as well as abort them?
Thanks a lot.You could accomplish the abort of instances using PAPI, but the problem is most actvities are not abortable (nor should they be) and the PAPI call will throw exceptions when you try aborting it.
I use the logic shown below to both grab and abort instances in a single step.
The process has a Grab activity that this invokes automatically called "GrabAutomatic". This is the Grab that has "From all / To all" and its "Abortable" properties enabled. The GDAdmin role in your process would need a Global Interactive that has the logic shown below. You'd need to add a new participant ("AUTOCLIENT" in the logic below) that has the role assigned where the automatic Grab is located. Before running this logic, the Global Interactive that the GDadmin would invoke would present the user with a list of instances that the GDadmin would select. Based on the work item instances selected, this logic would grab and abort them in a single step.
<pre class="jive-pre"><p />bp as BusinessProcess
do
logMessage "PapiHelper: actionGrabAndAbort: Entry: instance: " + instanceToActOn.instanceIn
using severity = DEBUG
instF as InstanceFilter = InstanceFilter()
instances as Fuego.Papi.Instance[]
instanceDescription as String
connectTo bp
using url = Fuego.Server.directoryURL,
user = "AUTOCLIENT",
password = "P",
process = "/" + processName
create(instF, processService : bp.processService)
instF.searchScope = SearchScope(participantScope : ParticipantScope.ALL,
statusScope : StatusScope.ONLY_INPROCESS)
addAttributeTo instF
using variable = VarDefinition.INSTANCE_NUMBER,
comparator = Comparison.IS,
value = instanceToActOn.instanceIn
instances = getInstancesByFilter(bp, filter : instF)
for each inst in instances do
logMessage "PapiHelper: actionGrabAndAbort: Found it: " + inst.id
using severity = DEBUG
do
// change this to be the name of your Grab Activity
grab inst using grabActivity = "GrabAutomatic"
logMessage "PapiHelper: actionGrabAndAbort: Grabbed Instance Status: " + inst.grabbed
using severity = DEBUG
do
runTask inst
using activity = "GrabAutomatic"
logMessage "PapiHelper: actionGrabAndAbort: Ran Grab " + inst.grabbed
using severity = DEBUG
on e as Exception
logMessage "PapiHelper: actionGrabAndAbort: tried to run grab and failed because no task to run in Grab"
using severity = DEBUG
end
abort inst
logMessage "PapiHelper: actionGrabAndAbort: Routed back"
using severity = DEBUG
on e1 as Exception
logMessage "PapiHelper: actionGrabAndAbort: Exception when running or routing: " + e1.cause
using severity = DEBUG
errors = errors + "Instance could not be grabbed and reassigned\n\n"
logMessage "PapiHelper: actionGrabAndRoute: Errors: " + errors
using severity = DEBUG
end
end
on exit
disconnectFrom bp
end </pre>
Dan -
Global Activity to use while using PAPI
Hi,
I want to create an instance by adding PAPI code to a web-service or by exposing my process as a web-service. Which Global Activity do we use while creating an instance using PAPI ? Is it Global Automatic or Global Creation?Hi,
You can create a new work item instance in a process using (1) PAPI (the Java API) or (2) PAPI-WS (the web service API) or (3) the process specific web service running on the Engine's port 9000. When you do this, the work item instance goes directly into the Begin activity of the process. Once there the work item instance is created and is automatically routed to the first activity in the process.
There are many reasons for using Global Interactive and Global Automatic activities in a process but you do not need to use a Global Interactive or Global Automatic activity when creating instances using any of these 3 APIs.
Once an instance is created using any of these 3 APIs, the work item instance immediately and automatically flows to the next activity in the process downstream of the Begin activity.
Dan -
Creating a new work item instance in a process using PAPI
I'm seeing that there are a lot of questions on this forum about using Oracle BPM 10g's Java API called PAPI.
I just uploaded a step by step document on how you could do this using JDeveloper 11. Here's the link to this document: http://www.4shared.com/file/126507332/e814a3a8/CallingPapi.html. The Oracle BPM project I used for this step-by-step document is also in this zip file. If you're curious, this also describes how to download, install and start JDeveloper 11.
This is not formal Oracle documentation, but I know from teaching our Oracle BPM Bootcamp class that getting PAPI to work is sometimes a challenge and thought this might help. I tried to write it with the "Java Newbie" in mind so do not panic if you aren't an expert in Java (I'm sure not ?:| ).
This is a simple example that uses most of the logic found in the PAPI documentation on http://download.oracle.com/docs/cd/E13154_01/bpm/docs65/papi/index.html?t=modules/papi/c_Head_PAPI.html in the "Writing Your First Java PAPI Program" section of this document.
The document provides a step-by-step description on how how to use PAPI to:
<li> interface to processes running on an Oracle BPM Enterprise Engine using the same logic that is in the Oracle BPM PAPI documentation
<li> interface to processes running on an Oracle BPM Studio Engine
<li> list processes currently running on the Engine using the same logic that is in the Oracle BPM PAPI documentation
<li> list the work item instances running on the Engine using the same logic that is in the Oracle BPM PAPI documentation
<li> create a new work item instance in a process and pass in input argument variables to the new instance as it is created.
Hope you find this useful,
DanHi
i have gone through your example. It gives good information how to connect to BPM engine through java papi client. I have followed exactly the same steps given in the PDF document. But it throws the exception on both java client side and BPM Suite.
Steps followed :
1. Import sampleproject.exp into Oracle BPM studio and start the BPM engine.
2. Imported the fuegopapi-client.jar and Write the JAVA PIPA client to connect Oracle BPM Engine.
complete example code:_
import fuego.papi.CommunicationException;
import fuego.papi.InstanceInfo;
import fuego.papi.ProcessService;
import fuego.papi.ProcessServiceSession;
import fuego.papi.OperationException;
import java.util.Properties;
public class ProcessAPIClient {
public static void main(String[] args) {
/////////////////// API Initialization ///////////////////
Properties configuration = new Properties();
configuration.setProperty(ProcessService.DIRECTORY_ID, "default");
configuration.setProperty(ProcessService.DIRECTORY_PROPERTIES_FILE, "directory.xml");
configuration.setProperty(ProcessService.PROJECT_PATH, "C:\\Oracle\\OracleBPMWorkspace\\SampleProject" );
configuration.setProperty(ProcessService.WORKING_FOLDER, "/tmp");
try {
ProcessService processService = ProcessService.create(configuration);
/////////////////// Establish a session ///////////////////
ProcessServiceSession session = processService.createSession("test", "test", null);
/////////////////// Operate with PAPI ///////////////////
for (String processId : session.processesGetIds()) {
System.out.println("\n Process: " + processId);
for (InstanceInfo instance : session.processGetInstances(processId)) {
System.out.println(" -> " + instance.getId());
/////////////////// Close the session ///////////////////
session.close();
/////////////////// Release API Resources ///////////////////
processService.close();
} catch (CommunicationException e) {
System.out.println("Could not connect to Directory Service");
e.printStackTrace();
} catch (OperationException e) {
System.out.println("Could not perform the requested operation");
e.printStackTrace();
It throws the following exception and output on java client._
Could not enhance type with bytecode info: java.lang.NoSuchMethodError: org.apache.bcel.classfile.Method.getArgumentTypes()[Lorg/apache/bcel/generic/Type;
Could not enhance type with bytecode info: java.lang.NoSuchMethodError: org.apache.bcel.classfile.Method.getArgumentTypes()[Lorg/apache/bcel/generic/Type;
Could not enhance type with bytecode info: java.lang.NoSuchMethodError: org.apache.bcel.classfile.Method.getArgumentTypes()[Lorg/apache/bcel/generic/Type;
Could not enhance type with bytecode info: java.lang.NoSuchMethodError: org.apache.bcel.classfile.Method.getArgumentTypes()[Lorg/apache/bcel/generic/Type;
Could not enhance type with bytecode info: java.lang.NoSuchMethodError: org.apache.bcel.classfile.Method.getArgumentTypes()[Lorg/apache/bcel/generic/Type;
Could not enhance type with bytecode info: java.lang.NoSuchMethodError: org.apache.bcel.classfile.Method.getArgumentTypes()[Lorg/apache/bcel/generic/Type;
Could not enhance type with bytecode info: java.lang.NoSuchMethodError: org.apache.bcel.classfile.Method.getArgumentTypes()[Lorg/apache/bcel/generic/Type;
Could not enhance type with bytecode info: java.lang.NoSuchMethodError: org.apache.bcel.classfile.Method.getArgumentTypes()[Lorg/apache/bcel/generic/Type;
Could not enhance type with bytecode info: java.lang.NoSuchMethodError: org.apache.bcel.classfile.Method.getArgumentTypes()[Lorg/apache/bcel/generic/Type;
Creating ProcessService with id 'SampleProject'.
Local folder /tmp\system\Schema33871921573571055\catalogs found.
Loading catalogs from local folder: /tmp\system\Schema33871921573571055\catalogs
0 jars found locally.
[CatalogMgrCache] =======================
Registering CatalogMgr [SampleProject] ...CatalogManagerCache 23240993:
Managers:
Counters:
[CatalogMgrCache] =======================
CatalogMgr [SampleProject] REGISTERED!CatalogManagerCache 23240993:
Managers:
{SampleProject=fuego.util.LocalCatalogManager@40b187}
Counters:
ProcessService 'SampleProject' created successfully.
Process: /SampleProcess#Default-1.0
Unreachable Engine Tolerance (seconds):
by default: 0
to be used: 0
This papi client will not cache exceptions which imply that an engine could not be reached.
Exception in thread "main" java.lang.NoClassDefFoundError: javax/jms/MessageEOFException
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at $Proxy24.<clinit>(Unknown Source)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at fuego.papi.impl.AbstractProcessControlHandler.newProxyInstance(AbstractProcessControlHandler.java:52)
at fuego.papi.impl.rmi.RMIProcessControlHandler.createProxy(RMIProcessControlHandler.java:47)
at fuego.papi.impl.rmi.RMIEngineAccessImpl.createProcessControl(RMIEngineAccessImpl.java:111)
at fuego.papi.impl.ProcessServiceImpl.createProcessControl(ProcessServiceImpl.java:1082)
at fuego.papi.impl.ProcessServiceSessionImpl$1.run(ProcessServiceSessionImpl.java:2698)
at fuego.papi.impl.ProcessServiceImpl.executeEngineOp(ProcessServiceImpl.java:1675)
at fuego.papi.impl.ProcessServiceSessionImpl.getProcessControl(ProcessServiceSessionImpl.java:2703)
at fuego.papi.impl.ProcessServiceSessionImpl.processGetInstances(ProcessServiceSessionImpl.java:2365)
at com.eds.comet.bpm.oracle.papi.client.ProcessAPIClient.main(ProcessAPIClient.java:30)
Caused by: java.lang.ClassNotFoundException: javax.jms.MessageEOFException
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
... 16 more
It throws the following exception and output on Oracle BPM Suite._
Client 'Id=test, Name=test, In=1, Session=564242434' was not found in lists ', PARTICIPANTS' while disconnecting it.
Please help me to resolve this. I noticed it is able to connect BPM engine and retrieve process list. But while getting instances, it throws the exceptions on both Java Client and BPM engine side.
Thanks and Regards
Mahesh -
How to create process instance throught PAPI?
Hi,
Can someone share how do we use PAPI to create a process instance for the Expense Management process (process in the BPM tutorial)?
I believe it is through calling the processCreateInstance() method from a ProcessServiceSession object, however, what exactly do we pass in as a parameter? I tried simply by passing in the process name and an empty Arguments object and the following exception was logged:
Feb 18, 2009 9:08:43 PM com.sun.corba.se.impl.orbutil.CacheTable put_table
WARNING: "IOP00710275: (INTERNAL) Old entry in serialization indirection table has a different value than the value being added with the same key"
org.omg.CORBA.INTERNAL: vmcid: SUN minor code: 275 completed: No
at com.sun.corba.se.impl.logging.ORBUtilSystemException.duplicateIndirectionOffset(ORBUtilSystemException.java:5589)
at com.sun.corba.se.impl.logging.ORBUtilSystemException.duplicateIndirectionOffset(ORBUtilSystemException.java:5611)
at com.sun.corba.se.impl.orbutil.CacheTable.put_table(CacheTable.java:97)
at com.sun.corba.se.impl.orbutil.CacheTable.put(CacheTable.java:86)
at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1068)
at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:879)
at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_abstract_interface(CDRInputStream_1_0.java:873)
at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_abstract_interface(CDRInputStream_1_0.java:863)
at com.sun.corba.se.impl.encoding.CDRInputStream.read_abstract_interface(CDRInputStream.java:269)
at com.sun.corba.se.impl.io.IIOPInputStream.readObjectDelegate(IIOPInputStream.java:363)
at com.sun.corba.se.impl.io.IIOPInputStream.readObjectOverride(IIOPInputStream.java:526)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:345)
at java.util.TreeMap.buildFromSorted(TreeMap.java:2442)
at java.util.TreeMap.buildFromSorted(TreeMap.java:2384)
at java.util.TreeMap.readObject(TreeMap.java:2330)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.corba.se.impl.io.IIOPInputStream.invokeObjectReader(IIOPInputStream.java:1694)
at com.sun.corba.se.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1212)
at com.sun.corba.se.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:400)
at com.sun.corba.se.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:327)
at com.sun.corba.se.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:293)
at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1034)
at com.sun.corba.se.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:253)
at com.sun.corba.se.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:1989)
at com.sun.corba.se.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2213)
at com.sun.corba.se.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1221)
at com.sun.corba.se.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:400)
at com.sun.corba.se.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:327)
at com.sun.corba.se.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:293)
at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1034)
at com.sun.corba.se.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:253)
at com.sun.corba.se.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:1989)
at com.sun.corba.se.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2213)
at com.sun.corba.se.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1221)
at com.sun.corba.se.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:400)
at com.sun.corba.se.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:327)
at com.sun.corba.se.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:293)
at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1034)
at com.sun.corba.se.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:253)
at com.sun.corba.se.impl.io.ValueHandlerImpl.read_Array(ValueHandlerImpl.java:756)
at com.sun.corba.se.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:325)
at com.sun.corba.se.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:293)
at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1034)
at com.sun.corba.se.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:253)
at fuego.papi.impl.j2ee._EJBSecureEngineInterface_Stub.getProcesses(Unknown Source)
at fuego.papi.impl.j2ee.EJBSecureEngineInterfaceWrapper.getProcesses(EJBSecureEngineInterfaceWrapper.java:297)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at fuego.papi.impl.AbstractSecureEngineHandler.invokeInternal(AbstractSecureEngineHandler.java:49)
at fuego.papi.impl.j2ee.EJBSecureEngineHandler.doInvoke(EJBSecureEngineHandler.java:105)
at fuego.papi.impl.j2ee.EJBSecureEngineHandler.invoke(EJBSecureEngineHandler.java:56)
at $Proxy14.getProcesses(Unknown Source)
at fuego.papi.impl.AbstractProcessLoader.createProcess(AbstractProcessLoader.java:49)
at fuego.papi.impl.AbstractProcessLoader.createProcess(AbstractProcessLoader.java:36)
at fuego.papi.impl.SessionProcessLoader.load(SessionProcessLoader.java:254)
at fuego.papi.impl.ProcessManager.get(ProcessManager.java:894)
at fuego.papi.impl.ProcessServiceImpl.getProcess(ProcessServiceImpl.java:1364)
at fuego.papi.impl.SessionProcessManager.getProcess(SessionProcessManager.java:143)
at fuego.papi.impl.ProcessServiceSessionImpl.processGet(ProcessServiceSessionImpl.java:2601)
at fuego.papi.impl.ProcessServiceSessionImpl.checkBeginPermissions(ProcessServiceSessionImpl.java:4222)
at fuego.papi.impl.ProcessServiceSessionImpl.processCreateInstance(ProcessServiceSessionImpl.java:3113)
at fuego.papi.impl.ProcessServiceSessionImpl.processCreateInstance(ProcessServiceSessionImpl.java:3099)
at com.test.papi.TestPAPI.main(TestPAPI.java:39)
Could not perform the requested operation
fuego.papi.ProcessNotAvailableException: Process '/ExpenseReport#Default-1.0' not available.
at fuego.papi.impl.AbstractProcessLoader.createProcess(AbstractProcessLoader.java:71)
at fuego.papi.impl.AbstractProcessLoader.createProcess(AbstractProcessLoader.java:36)
at fuego.papi.impl.SessionProcessLoader.load(SessionProcessLoader.java:254)
at fuego.papi.impl.ProcessManager.get(ProcessManager.java:894)
at fuego.papi.impl.ProcessServiceImpl.getProcess(ProcessServiceImpl.java:1364)
at fuego.papi.impl.SessionProcessManager.getProcess(SessionProcessManager.java:143)
at fuego.papi.impl.ProcessServiceSessionImpl.processGet(ProcessServiceSessionImpl.java:2601)
at fuego.papi.impl.ProcessServiceSessionImpl.checkBeginPermissions(ProcessServiceSessionImpl.java:4222)
at fuego.papi.impl.ProcessServiceSessionImpl.processCreateInstance(ProcessServiceSessionImpl.java:3113)
at fuego.papi.impl.ProcessServiceSessionImpl.processCreateInstance(ProcessServiceSessionImpl.java:3099)
at com.test.papi.TestPAPI.main(TestPAPI.java:39)
Caused by: fuego.papi.impl.EngineExecutionException: Process execution engine execution error.
at fuego.papi.impl.j2ee.EJBSecureEngineHandler.doInvoke(EJBSecureEngineHandler.java:146)
at fuego.papi.impl.j2ee.EJBSecureEngineHandler.invoke(EJBSecureEngineHandler.java:56)
at $Proxy14.getProcesses(Unknown Source)
at fuego.papi.impl.AbstractProcessLoader.createProcess(AbstractProcessLoader.java:49)
... 10 more
Caused by: org.omg.CORBA.INTERNAL: vmcid: SUN minor code: 275 completed: No
at com.sun.corba.se.impl.logging.ORBUtilSystemException.duplicateIndirectionOffset(ORBUtilSystemException.java:5589)
at com.sun.corba.se.impl.logging.ORBUtilSystemException.duplicateIndirectionOffset(ORBUtilSystemException.java:5611)
at com.sun.corba.se.impl.orbutil.CacheTable.put_table(CacheTable.java:97)
at com.sun.corba.se.impl.orbutil.CacheTable.put(CacheTable.java:86)
at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1068)
at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:879)
at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_abstract_interface(CDRInputStream_1_0.java:873)
at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_abstract_interface(CDRInputStream_1_0.java:863)
at com.sun.corba.se.impl.encoding.CDRInputStream.read_abstract_interface(CDRInputStream.java:269)
at com.sun.corba.se.impl.io.IIOPInputStream.readObjectDelegate(IIOPInputStream.java:363)
at com.sun.corba.se.impl.io.IIOPInputStream.readObjectOverride(IIOPInputStream.java:526)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:345)
at java.util.TreeMap.buildFromSorted(TreeMap.java:2442)
at java.util.TreeMap.buildFromSorted(TreeMap.java:2384)
at java.util.TreeMap.readObject(TreeMap.java:2330)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.corba.se.impl.io.IIOPInputStream.invokeObjectReader(IIOPInputStream.java:1694)
at com.sun.corba.se.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1212)
at com.sun.corba.se.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:400)
at com.sun.corba.se.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:327)
at com.sun.corba.se.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:293)
at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1034)
at com.sun.corba.se.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:253)
at com.sun.corba.se.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:1989)
at com.sun.corba.se.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2213)
at com.sun.corba.se.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1221)
at com.sun.corba.se.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:400)
at com.sun.corba.se.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:327)
at com.sun.corba.se.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:293)
at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1034)
at com.sun.corba.se.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:253)
at com.sun.corba.se.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:1989)
at com.sun.corba.se.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2213)
at com.sun.corba.se.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1221)
at com.sun.corba.se.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:400)
at com.sun.corba.se.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:327)
at com.sun.corba.se.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:293)
at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1034)
at com.sun.corba.se.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:253)
at com.sun.corba.se.impl.io.ValueHandlerImpl.read_Array(ValueHandlerImpl.java:756)
at com.sun.corba.se.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:325)
at com.sun.corba.se.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:293)
at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1034)
at com.sun.corba.se.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:253)
at fuego.papi.impl.j2ee._EJBSecureEngineInterface_Stub.getProcesses(Unknown Source)
at fuego.papi.impl.j2ee.EJBSecureEngineInterfaceWrapper.getProcesses(EJBSecureEngineInterfaceWrapper.java:297)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at fuego.papi.impl.AbstractSecureEngineHandler.invokeInternal(AbstractSecureEngineHandler.java:49)
at fuego.papi.impl.j2ee.EJBSecureEngineHandler.doInvoke(EJBSecureEngineHandler.java:105)
... 13 more
I'm wondering why does it complain that "fuego.papi.ProcessNotAvailableException: Process '/ExpenseReport#Default-1.0' not available.", when the ExpenseReport process is indeed a process that was published?
P.S.: I know this thread is sort of a duplicate of another thread, however I hope we can get some real examples of how to create a process instance for the Expense Management project, using PAPI (instead of PAPI webservice).
Edited by: sylarchong on Feb 18, 2009 5:20 AM
Edited by: sylarchong on Feb 18, 2009 5:21 AMHi Mark,
Thanks for your prompt reply.. I tried with the above option but still am facing the same problem.
Let me give you the brief idea of what am working on;
1) I created a process using Oracle BPM Studio V: 10.3.1.0 & Build: #94375
2) I publish & deploy the process using Oracle BPM Admin Center which running on top of tomcat. But in the configuration I configure the directory as well as weblogic server.
3) I created a "Java Project" & included following jar file "b1base.jar","b1oracle.jar","b1util.jar","bcel.jar","ejb-api.jar","fuegopapi-client.jar","jms-api.jar","ojdbc14.jar","weblogic.jar","wljmsclient.jar".
4) I am using below program to create a PAPI Process Instance;
package ibm.com.papi;
import java.util.Properties;
import fuego.papi.CommunicationException;
import fuego.papi.InstanceInfo;
import fuego.papi.OperationException;
import fuego.papi.ProcessService;
import fuego.papi.ProcessServiceSession;
public class PAPIWithDirectoryFileExample {
public static void main(String[] args) {
// ///////////////// API Initialization ///////////////////
Properties configuration = new Properties();
configuration.setProperty(ProcessService.DIRECTORY_ID, "default");
configuration.setProperty(ProcessService.DIRECTORY_PROPERTIES_FILE, "C://tmp//directory.xml");
configuration.setProperty(ProcessService.INSTANCES_CACHE_SIZE, "50000");
configuration.setProperty(ProcessService.WORKING_FOLDER, "c://tmp");
configuration.setProperty(ProcessService.UPDATE_SESSIONS_VIEWS, "true");
System.setProperty("fuego.j2ee.initialctx.file","C:\\tmp\\engine.properties");
System.setProperty("fuego.j2ee.initialctx.resource","engine.properties");
System.setProperty("fuego.j2ee.initialctx.url","file://tmp/engine.properties");
//engine.properties include below settings
//System.setProperty("java.naming.factory.initial", "weblogic.jndi.WLInitialContextFactory");
//System.setProperty("java.naming.provider.url", "t3://localhost:7001");
try {
ProcessService processService = ProcessService.create(configuration);
///////////////// Establish a session ///////////////////
ProcessServiceSession session = processService.createSession(
"username", "pwd", "host");
for (String processId : session.processesGetIds()) {
System.out.println("\n Process: " + processId);
for (InstanceInfo instance : session
.processGetInstances(processId)) {
System.out.println(" -> " + instance.getId());
fuego.papi.Arguments papiArgs= fuego.papi.Arguments.create();
papiArgs.putArgument("inputNameArg", "inputString");
InstanceInfo instInfo = null;
instInfo = session.processCreateInstance("/Process#Default-1.0",papiArgs);
String strInstanceID = instInfo.getId();
System.out.println ("strInstanceID => [" + strInstanceID + "]" );
// ///////////////// Close the session ///////////////////
session.close();
// ///////////////// Release API Resources ///////////////////
processService.close();
} catch (CommunicationException e) {
System.out.println("Could not connect to Directory Service");
e.printStackTrace();
} catch (OperationException e) {
System.out.println("Could not perform the requested operation");
e.printStackTrace();
5) Error Log;
Feb 19, 2010 12:23:16 PM com.sun.corba.se.impl.orbutil.CacheTable put_table
WARNING: "IOP00710275: (INTERNAL) Old entry in serialization indirection table has a different value than the value being added with the same key"
org.omg.CORBA.INTERNAL: vmcid: SUN minor code: 275 completed: No
at com.sun.corba.se.impl.logging.ORBUtilSystemException.duplicateIndirectionOffset(ORBUtilSystemException.java:5589)
at com.sun.corba.se.impl.logging.ORBUtilSystemException.duplicateIndirectionOffset(ORBUtilSystemException.java:5611)
at com.sun.corba.se.impl.orbutil.CacheTable.put_table(CacheTable.java:97)
at com.sun.corba.se.impl.orbutil.CacheTable.put(CacheTable.java:86)
at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1068)
at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:879)
at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_abstract_interface(CDRInputStream_1_0.java:873)
at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_abstract_interface(CDRInputStream_1_0.java:863)
at com.sun.corba.se.impl.encoding.CDRInputStream.read_abstract_interface(CDRInputStream.java:269)
at com.sun.corba.se.impl.io.IIOPInputStream.readObjectDelegate(IIOPInputStream.java:363)
at com.sun.corba.se.impl.io.IIOPInputStream.readObjectOverride(IIOPInputStream.java:526)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:345)
at java.util.TreeMap.buildFromSorted(TreeMap.java:2442)
at java.util.TreeMap.buildFromSorted(TreeMap.java:2384)
at java.util.TreeMap.readObject(TreeMap.java:2330)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.corba.se.impl.io.IIOPInputStream.invokeObjectReader(IIOPInputStream.java:1694)
at com.sun.corba.se.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1212)
at com.sun.corba.se.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:400)
at com.sun.corba.se.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:327)
at com.sun.corba.se.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:293)
at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1034)
at com.sun.corba.se.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:253)
at com.sun.corba.se.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:1989)
at com.sun.corba.se.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2213)
at com.sun.corba.se.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1221)
at com.sun.corba.se.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:400)
at com.sun.corba.se.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:327)
at com.sun.corba.se.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:293)
at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1034)
at com.sun.corba.se.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:253)
at com.sun.corba.se.impl.io.IIOPInputStream.inputObjectField(IIOPInputStream.java:1989)
at com.sun.corba.se.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2213)
at com.sun.corba.se.impl.io.IIOPInputStream.inputObject(IIOPInputStream.java:1221)
at com.sun.corba.se.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:400)
at com.sun.corba.se.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:327)
at com.sun.corba.se.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:293)
at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1034)
at com.sun.corba.se.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:253)
at com.sun.corba.se.impl.io.ValueHandlerImpl.read_Array(ValueHandlerImpl.java:756)
at com.sun.corba.se.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:325)
at com.sun.corba.se.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:293)
at com.sun.corba.se.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:1034)
at com.sun.corba.se.impl.encoding.CDRInputStream.read_value(CDRInputStream.java:253)
at fuego.papi.impl.j2ee._EJBSecureEngineInterface_Stub.getProcesses(Unknown Source)
at fuego.papi.impl.j2ee.EJBSecureEngineInterfaceWrapper.getProcesses(EJBSecureEngineInterfaceWrapper.java:297)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at fuego.papi.impl.AbstractSecureEngineHandler.invokeInternal(AbstractSecureEngineHandler.java:49)
at fuego.papi.impl.j2ee.EJBSecureEngineHandler.doInvoke(EJBSecureEngineHandler.java:105)
at fuego.papi.impl.j2ee.EJBSecureEngineHandler.invoke(EJBSecureEngineHandler.java:56)
at $Proxy14.getProcesses(Unknown Source)
at fuego.papi.impl.AbstractProcessLoader.createProcess(AbstractProcessLoader.java:49)
at fuego.papi.impl.AbstractProcessLoader.createProcess(AbstractProcessLoader.java:36)
at fuego.papi.impl.SessionProcessLoader.load(SessionProcessLoader.java:254)
at fuego.papi.impl.ProcessManager.get(ProcessManager.java:894)
at fuego.papi.impl.ProcessServiceImpl.getProcess(ProcessServiceImpl.java:1364)
at fuego.papi.impl.SessionProcessManager.getProcess(SessionProcessManager.java:143)
at fuego.papi.impl.ProcessServiceSessionImpl.processGet(ProcessServiceSessionImpl.java:2660)
at fuego.papi.impl.ProcessServiceSessionImpl.checkBeginPermissions(ProcessServiceSessionImpl.java:4281)
at fuego.papi.impl.ProcessServiceSessionImpl.processCreateInstance(ProcessServiceSessionImpl.java:3172)
at fuego.papi.impl.ProcessServiceSessionImpl.processCreateInstance(ProcessServiceSessionImpl.java:3158)
at ibm.com.papi.PAPIWithDirectoryFileExample.main(PAPIWithDirectoryFileExample.java:71)
Could not perform the requested operation
fuego.papi.ProcessNotAvailableException: Process '/Process#Default-1.0' not available.
at fuego.papi.impl.AbstractProcessLoader.createProcess(AbstractProcessLoader.java:71)
at fuego.papi.impl.AbstractProcessLoader.createProcess(AbstractProcessLoader.java:36)
at fuego.papi.impl.SessionProcessLoader.load(SessionProcessLoader.java:254)
at fuego.papi.impl.ProcessManager.get(ProcessManager.java:894)
at fuego.papi.impl.ProcessServiceImpl.getProcess(ProcessServiceImpl.java:1364)
at fuego.papi.impl.SessionProcessManager.getProcess(SessionProcessManager.java:143)
at fuego.papi.impl.ProcessServiceSessionImpl.processGet(ProcessServiceSessionImpl.java:2660)
at fuego.papi.impl.ProcessServiceSessionImpl.checkBeginPermissions(ProcessServiceSessionImpl.java:4281)
at fuego.papi.impl.ProcessServiceSessionImpl.processCreateInstance(ProcessServiceSessionImpl.java:3172)
at fuego.papi.impl.ProcessServiceSessionImpl.processCreateInstance(ProcessServiceSessionImpl.java:3158)
at ibm.com.papi.PAPIWithDirectoryFileExample.main(PAPIWithDirectoryFileExample.java:71)
Caused by: fuego.papi.impl.EngineExecutionException: Process execution engine execution error.
at fuego.papi.impl.j2ee.EJBSecureEngineHandler.doInvoke(EJBSecureEngineHandler.java:146)
at fuego.papi.impl.j2ee.EJBSecureEngineHandler.invoke(EJBSecureEngineHandler.java:56)
at $Proxy14.getProcesses(Unknown Source)
at fuego.papi.impl.AbstractProcessLoader.createProcess(AbstractProcessLoader.java:49)
... 10 more
Caused by: org.omg.CORBA.INTERNAL: vmcid: SUN minor code: 275 completed: No
Please help me to resolve the above issue.
Thanks & Regards,
Ankur Oswal -
Problem using PAPI-WS for external process notifcation
Hello,
I'm trying to have an external Java application send a process notification using PAPI-WS.
I have a process instance currently sitting at a notifcation wait step (configured to wait for an external notification) but each time I call processSendNotification I get the an unspported operation exception. I'm not even sure this is the correct ws operation to use but looking at the PAPI API reference it seemed the most likely.
Below is a snippet from the code I'm testing this with and the corresponding output including the exception:
for (InstanceInfoBean instance : instances.getInstances())
String waitStep = "WaitForDelivery";
System.out.println("-> process id = " + instance.getId());
// find which instance are waiting on delivery
if (waitStep.equals(instance.getActivityName()))
System.out.println(" -> " + instance.getAuthor() + " is waiting on delivery!");
papiWebServicePort.processSendNotification(instance.getId(), waitStep, null, null);
Process: WhatToHave
-> process id = /WhatToHave#Default-1.0/2/0
-> process id = /WhatToHave#Default-1.0/1/0
-> Andy is waiting on delivery!
Could not perform the requested operation
stubs.OperationException_Exception: The BEA AquaLogic® BPM Engine version does not support the required operation.Please ask BEA AquaLogic® BPM Administrator for assistance.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
at com.sun.xml.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:127)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:254)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:224)
at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:117)
at $Proxy31.processSendNotification(Unknown Source)
I'm doing this all using BPM Studio 6.0.2 (build 85749) on Linux.
Any help or pointers greatly appreciated,
Thanks,
MikeHello,
I'm trying to have an external Java application send a process notification using PAPI-WS.
I have a process instance currently sitting at a notifcation wait step (configured to wait for an external notification) but each time I call processSendNotification I get the an unspported operation exception. I'm not even sure this is the correct ws operation to use but looking at the PAPI API reference it seemed the most likely.
Below is a snippet from the code I'm testing this with and the corresponding output including the exception:
for (InstanceInfoBean instance : instances.getInstances())
String waitStep = "WaitForDelivery";
System.out.println("-> process id = " + instance.getId());
// find which instance are waiting on delivery
if (waitStep.equals(instance.getActivityName()))
System.out.println(" -> " + instance.getAuthor() + " is waiting on delivery!");
papiWebServicePort.processSendNotification(instance.getId(), waitStep, null, null);
Process: WhatToHave
-> process id = /WhatToHave#Default-1.0/2/0
-> process id = /WhatToHave#Default-1.0/1/0
-> Andy is waiting on delivery!
Could not perform the requested operation
stubs.OperationException_Exception: The BEA AquaLogic® BPM Engine version does not support the required operation.Please ask BEA AquaLogic® BPM Administrator for assistance.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
at com.sun.xml.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:127)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:254)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:224)
at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:117)
at $Proxy31.processSendNotification(Unknown Source)
I'm doing this all using BPM Studio 6.0.2 (build 85749) on Linux.
Any help or pointers greatly appreciated,
Thanks,
Mike -
Abort an instance using ProcessService (Fuego.Papi.ProcessService)
Hi Folks,
I want to abort a process instance using ProcessService (Fuego.Papi.ProcessService)
This is how i am trying to do the same:
+if (ivBPMObject1.bpmObject1Option != "TRUE") {+
ProcessService.connectTo(url : Fuego.Server.directoryURL, user : "pavan",
password : "");
+// ivInstance2Id is the InstanceId of the other split branch which is alive and which needs to be suspended+
lvInstance = ProcessService.getInstance(instance : ivInstance2Id.id);
+// abort+
lvInstance.abort();
ProcessService.disconnectFrom();
+}+
I get the following exception in the line lvInstance.abort() :.
The batch operation could not be executed for all selected instances.
Internal Exceptions:
+>> /MainProcess#Default-1.0/1/2:+
Instance '/MainProcess#Default-1.0/1/0' could not be locked because participant 'Server' is currently locking it
I am running this from the Embedded Workspace of Oracle BPM Studio and I dont see any participant 'Server' in the directory.
How can i suspend/abort this instance?
Is there a way that my user/participant 'pavan' can be given rights/privelege to take 'Server's instances?
I tried using 'Server' as user but i dont know the credentials for 'Server' - so that attempt too failed :(.
can anyone please help me out?
Regards,
user8702013Thank you Ariel,
Yes, I have two 'approvals' happening in parallel - in two branches of a split. when one approval comes 'unapproved', there is no point continuing with the other - i have to abort it.
But if i set the setting to 'generate independent copies', how will i get the 'instanceId' of the second branch when only the first branch has reached the 'join'? (i had thus made the 'shared' to be true).
My requirement is that i have two branches in a split. these two split branches call two different approval subprocess which go into user interaction tasks. but when one one approval is rejected (and reaches the join), i want to abort the other instance (atleast of the called subprocess) so that the redundant approval user task of the second branch can be avoided.
I have been struggling with this for the past couple of days :(
I am trying to see if i can get the 'instances' of the subprocess in question and find the instance to be killed (aborted) by checking the parents (the parent should be my process). i am getting problems there too. am stranded...
Regards,
user8702013 -
Update Instance Variables using PAPI
I have a need to update Instance Variables for a bunch of instances. Can this be done using PAPI? I am writing a global function that can search the instances and update. How can I update these variables...thank you
Hi,
I think that the best way of changing instance variables using papi is by adding a global activity (with instance access) and pass the new variable values as arguments. Pay attention that you have to define those arguments in the activity.
Then, you can assign those values to the instance using PBL.
http://download.oracle.com/docs/cd/E13154_01/bpm/docs65/papi_javadocs/fuego/papi/ProcessServiceSession.html#activityExecute(fuego.papi.Activity,%20fuego.papi.InstanceInfo,%20fuego.papi.Arguments)
I do suggest avoiding sending interruptions to instances, because once the notification is sent (and the papi method returns successfully), the notifications will be processed in another transaction.
Hope this helps,
Ariel A. -
How to change the attribute of process instance by PAPI web service
Is it possible to change the value of the attribute of one process instance by PAPI web servcie?
thanks!That information is stored in the table PPROCINSTANCE in the engine database in the column instancedata, it is a blob.
HTH -
Finding PeopleSoft Process Instance using Oracle session info
Hi:
I'm on Oracle 10.2.0.3 and PeopleSoft Financials 8.9.
Does anybody know how to get PeopleSoft Process Instance using v$session, v$process and other info?
TIA.Hey Sybrand,
Thanks for your reply.
I am actually a dba trying to help PeopleSoft developers. The question is on the edge between Oracle & PeopleSoft. And yes, I took a close look at v$session. It shows Oracle Session info while Process Instance is a PeopleSoft identifier sitting in PSPRCSRQST table. I intuitively feel that there should be a database-level connection between the two.
All ideas appreciated.
I hope they will show PI in v$session in subsequent versions of Oracle... -
How to terminate Correlation using Papi Call in Java
Hi ,
I have process processP1 in which there is a automatic activity A1, within this activity I am creating a correlation with the combination of customer_id and loan_id.
Correlation.initiate(name : CORRELATION_NAME, values : { customer_id, loan_id });
After that, there is a subprocess processP2, after the instance is prcessed completely in processP2, I have another automatic activity A2 in processP1 , I am terminating the correlation .
Correlation.terminate(name :CORRELATION_NAME)
One issue which I am facing is there is a instance for which a correlation was created, it failed in processP2 and was aborted. This particular instance never went to A2 the correlation was not terminated.
Whenever the same combination of customer_id and loan_id is getting created, it is showing as duplicate entry.
Is there a way to clear / terminate that particular correlation? Can It be done using Papi ?
Any suggestions / advice would help.
Thanks,Sreekant wrote:
Hi ,
I have process processP1 in which there is a automatic activity A1, within this activity I am creating a correlation with the combination of customer_id and loan_id.
Correlation.initiate(name : CORRELATION_NAME, values : { customer_id, loan_id });
After that, there is a subprocess processP2, after the instance is prcessed completely in processP2, I have another automatic activity A2 in processP1 , I am terminating the correlation .
Correlation.terminate(name :CORRELATION_NAME)
One issue which I am facing is there is a instance for which a correlation was created, it failed in processP2 and was aborted. This particular instance never went to A2 the correlation was not terminated.
Whenever the same combination of customer_id and loan_id is getting created, it is showing as duplicate entry.
Is there a way to clear / terminate that particular correlation? Can It be done using Papi ?1. Get the instances by using the below method. the below method is avliable in the ProcessServiceSession calss.
InstanceInfo processGetInstanceByCorrelation(String processId,
String correlationName,
Object[] correlationValues)
throws OperationException
2. Notiy these instances using the method. the below method is avliable in the ProcessServiceSession calss
processSendNotification(String targetInstanceOrProcessId,
String activityName,
String targetArgumentsSetName,
Arguments notification)
throws OperationException
>
Any suggestions / advice would help.
Thanks,Hope this helps
Narasimha -
How to notify a Notification Wait activity using PAPI
I am trying to use Papi code to release an instance waiting in the notification wait activity of a process deployed in the enterprise server .... for this I am running the papi code from main method of a java class running in eclipse using the notify.send(........) method ........but when the code hits the notify.send(.......) method it is giving the following error :
Exception in thread "main" java.lang.IllegalStateException: The component must be invoked on a server-side method.
at fuego.components.ProcessInstance.getCurrent(ProcessInstance.java:590)
at fuego.components.Notification.send(Notification.java:229)
at PapiCode.main(PapiCode.java:61
Can someone point out the error and how to resolve it ??Hi,
I am a little confused with the package name of the classes and components you are invoking. If you are using the Client API PAPI, then the package name should be fuego.papi.*.
I think you are using the internal components that should be used within a process implementation that assume running in the context of the Engine instead of a pure client application.
Unless I am interpreting this incorrectly, you should use a client Java Application using PAPI to connect to a deployed process into an OBPM Engine.
I would recommend you take a look at the very good introduction document that talks about PAPI, explains how to compile a program and also talks about how to write your first PAPI program client. It will also outline all the needed jar files need to include from a client application perspective. The link is: http://download.oracle.com/docs/cd/E13154_01/bpm/docs65/papi/index.html.
You may alternatively like to check the main Oracle BPM 10gR3 Documentation page through this link: http://download.oracle.com/docs/cd/E13154_01/bpm/docs65/index.html
HTH,
eduardoc.
Maybe you are looking for
-
When I can reuse Business and Technical Systems in IR and ID
Assuming the case(1 scenario) when I already created All SLD object Business System , technical system, SWC and product for interface scenario when file is send from R/3 MM module(Outbound) to XI through File adapter and than mapped and send to 3 par
-
How do I set the blank tab (+) to go to my home page instead of blank page when opened?
-
Unable to create a workspace after fresh install of APEX 3.2
I cannot creat a workspace as described in the installation guide : "4.4.8 Create a Workspace and Add Oracle Application Express Users" I can see the logo using "http://127.0.0.1:8080/i/htmldb/apex_logo.gif", but not if I use the machine name instead
-
Safari 7.0.6 Won't Load on Mavericks 10.9.4
I just updated to Mavericks 10.9.4 which leads me to believe this is an issue with the newest version. Some websites won't load, some won't properly load, and some load just fine. The crazy thing is that the ones that do and don't load switch. For ex
-
ServerAdmin fails to load file lists for shares when bound to OD
Hello, We're experiencing an issue on a couple of our Mac servers recently with Server Admin. We're an all Open Directory environment with DNS running on BIND on a Linux. When using Server Admin (even locally on the server), browsing file shares in