Apr 04
After deploying a new process I sure that you would like to run it
It’s easy. First of all, you must create a new process instance:
jbpmContext = jbpmConfiguration.createJbpmContext();
processInstance = jbpmContext.newProcessInstance("processname");
Then you can initialize it by adding some variables to the process:
contextInstance = processInstance.getContextInstance();
contextInstance.setVariable("var", myVar);
To start it you have to send a signal to the process first token :
processInstance.getRootToken().signal();


May 4th, 2008 at 11:37 pm
Why are you learning jBPM? Are you involved in some university project or it’s just for fun?
And a final question: is P for Process or for Performance?
May 5th, 2008 at 8:34 am
It sounds like a SIO question…
May 21st, 2008 at 10:56 pm
Useful post, I spent many days trying to find it out, but at last I get it (looking some examples and of course reading the -boring- JBpm doc).
Now I am trying to start a process instance with Web Services from a remote client (a nagios server that could start a work-flow when an alarm is detected), but I realized that it is kind of complicated, because the few examples that I found on the Internet are oriented to start a process instance from a node of the JBpm and not from a remote client.
I will really apreciatte if maybe you know how to solve this problem or maybe you could give me some tips to accomplish this task.
Thanks
Christian
May 21st, 2008 at 11:05 pm
One last question:
How can you initialize the object “jbpmConfiguration” if you don’t have an ExecutionContext:
JbpmConfiguration jbpmConfiguration=???
jbpmContext = jbpmConfiguration.createJbpmContext();
May 22nd, 2008 at 7:53 am
Hi Christian,
I never tried to start a process using WS but I suppose it doesn’t matter. Once at server start it normally.
To init the JbpmConfiguration you need to read the xml config file. jBPM API encapsulates this operation at parseResourse function. You only need to do the following :
JbpmConfiguration jbpmConfiguration = JbpmConfiguration.parseResource(”/config/jbpm.cfg.xml”); // or wherever is your jbpm.cfg.xml file
I hope it helps you.
June 3rd, 2008 at 3:43 pm
Thanks pigui, I’ll take in count your suggestions.
June 27th, 2008 at 9:56 am
Hi.
I tred to start process using java class.But coudnt.here is my code and error has been occured:
public class uzak {
/**
* @param args
*/
JbpmConfiguration jbpmConfiguration = null;
//JbpmConfiguration.getInstance();
public static void startProcessDefinition() {
String processDefinitionName = new String(”websale”);
JbpmConfiguration jbpmConfiguration =JbpmConfiguration.parseResource(”jbpm.cfg.xml”);
JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
try {
GraphSession graphSession = jbpmContext.getGraphSession();
ProcessDefinition definition = graphSession.findLatestProcessDefinition(processDefinitionName);
System.out.println(graphSession.getProcessDefinition(2));
ProcessInstance instance = definition.createProcessInstance();
instance.signal();
jbpmContext.save(instance);
} finally {
jbpmContext.close();
}
}
public static void main(String[] args) {
uzak.startProcessDefinition();
}
}
here is error
Table not found in statement [select top ? processdef0_.ID_ as ID1_0_, processdef0_.NAME_ as NAME3_0_, processdef0_.DESCRIPTION_ as DESCRIPT4_0_, processdef0_.VERSION_ as VERSION5_0_, processdef0_.ISTERMINATIONIMPLICIT_ as ISTERMIN6_0_, processdef0_.STARTSTATE_ as STARTSTATE7_0_ from JBPM_PROCESSDEFINITION processdef0_ where processdef0_.NAME_=? order by processdef0_.VERSION_ desc]
org.hibernate.exception.SQLGrammarException: could not execute query
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.loader.Loader.doList(Loader.java:2223)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
at org.hibernate.loader.Loader.list(Loader.java:2099)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at org.hibernate.impl.AbstractQueryImpl.uniqueResult(AbstractQueryImpl.java:811)
at org.jbpm.db.GraphSession.findLatestProcessDefinition(GraphSession.java:153)
at uzak.startProcessDefinition(uzak.java:43)
at uzak.main(uzak.java:55)
Caused by: java.sql.SQLException: Table not found in statement [select top ? processdef0_.ID_ as ID1_0_, processdef0_.NAME_ as NAME3_0_, processdef0_.DESCRIPTION_ as DESCRIPT4_0_, processdef0_.VERSION_ as VERSION5_0_, processdef0_.ISTERMINATIONIMPLICIT_ as ISTERMIN6_0_, processdef0_.STARTSTATE_ as STARTSTATE7_0_ from JBPM_PROCESSDEFINITION processdef0_ where processdef0_.NAME_=? order by processdef0_.VERSION_ desc]
at org.hsqldb.jdbc.Util.throwError(Unknown Source)
at org.hsqldb.jdbc.jdbcPreparedStatement.(Unknown Source)
at org.hsqldb.jdbc.jdbcConnection.prepareStatement(Unknown Source)
at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:505)
at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:423)
at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:139)
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1547)
at org.hibernate.loader.Loader.doQuery(Loader.java:673)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
at org.hibernate.loader.Loader.doList(Loader.java:2220)
… 11 more
11:45:00,774 [main] ERROR GraphSession : org.hibernate.exception.SQLGrammarException: could not execute query
11:45:00,774 [main] DEBUG JbpmContext : closing JbpmContext
11:45:00,774 [main] DEBUG Services : closing service ‘persistence’: org.jbpm.persistence.db.DbPersistenceService@11a0d35
Exception in thread “main” org.jbpm.JbpmException: couldn’t find process definition ‘websale’
at org.jbpm.db.GraphSession.findLatestProcessDefinition(GraphSession.java:170)
at uzak.startProcessDefinition(uzak.java:43)
at uzak.main(uzak.java:55)
Caused by: org.hibernate.exception.SQLGrammarException: could not execute query
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.loader.Loader.doList(Loader.java:2223)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
at org.hibernate.loader.Loader.list(Loader.java:2099)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at org.hibernate.impl.AbstractQueryImpl.uniqueResult(AbstractQueryImpl.java:811)
at org.jbpm.db.GraphSession.findLatestProcessDefinition(GraphSession.java:153)
… 2 more
Caused by: java.sql.SQLException: Table not found in statement [select top ? processdef0_.ID_ as ID1_0_, processdef0_.NAME_ as NAME3_0_, processdef0_.DESCRIPTION_ as DESCRIPT4_0_, processdef0_.VERSION_ as VERSION5_0_, processdef0_.ISTERMINATIONIMPLICIT_ as ISTERMIN6_0_, processdef0_.STARTSTATE_ as STARTSTATE7_0_ from JBPM_PROCESSDEFINITION processdef0_ where processdef0_.NAME_=? order by processdef0_.VERSION_ desc]
at org.hsqldb.jdbc.Util.throwError(Unknown Source)
at org.hsqldb.jdbc.jdbcPreparedStatement.(Unknown Source)
at org.hsqldb.jdbc.jdbcConnection.prepareStatement(Unknown Source)
at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:505)
at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:423)
at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:139)
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1547)
at org.hibernate.loader.Loader.doQuery(Loader.java:673)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
at org.hibernate.loader.Loader.doList(Loader.java:2220)
… 11 more
11:45:00,774 [main] DEBUG DbPersistenceService : committing hibernate transaction org.hibernate.transaction.JDBCTransaction@3aef16
11:45:00,774 [main] DEBUG DbPersistenceService : closing hibernate session
11:45:00,774 [main] DEBUG Services : closing service ‘tx’: org.jbpm.tx.TxService@12c4c57
June 27th, 2008 at 11:29 am
@btl_ayd
* Did you created jbpm tables into your database?
http://blogs.dfwikilabs.org/pigui/2007/11/23/installing-jboss-jbpm-332-on-apache-tomcat-55-and-mysql/
* Did you deployed the process definition?
http://blogs.dfwikilabs.org/pigui/2008/03/17/deploying-jbpm-processes/
August 11th, 2008 at 5:50 am
Thanks Pigui !
September 29th, 2008 at 6:32 am
Hi Pigui,
I get the same error mentioned above.
*********************************
Error:
22:01:49,985 ERROR [STDERR] java.sql.SQLException: Column not found: PROCESSDEF0
_.ID_ in statement [select top ? processdef0_.ID_ as ID1_0_, processdef0_.NAME_
as NAME3_0_, processdef0_.DESCRIPTION_ as DESCRIPT4_0_, processdef0_.VERSION_ as
VERSION5_0_, processdef0_.ISTERMINATIONIMPLICIT_ as ISTERMIN6_0_, processdef0_.
STARTSTATE_ as STARTSTATE7_0_ from JBPM_PROCESSDEFINITION]
22:01:49,989 ERROR [STDERR] at org.hsqldb.jdbc.Util.sqlException(Unknown Sou
rce)
22:01:49,990 ERROR [STDERR] at org.hsqldb.jdbc.jdbcStatement.fetchResult(Unk
nown Source)
22:01:49,992 ERROR [STDERR] at org.hsqldb.jdbc.jdbcStatement.execute(Unknown
Source)
22:01:49,993 ERROR [STDERR] at org.hsqldb.util.DatabaseManagerSwing.executeS
QL(Unknown Source)
22:01:49,994 ERROR [STDERR] at org.hsqldb.util.DatabaseManagerSwing.access$1
000(Unknown Source)
22:01:49,995 ERROR [STDERR] at org.hsqldb.util.DatabaseManagerSwing$Statemen
tExecRunnable.run(Unknown Source)
22:01:49,997 ERROR [STDERR] at java.awt.event.InvocationEvent.dispatch(Invoc
ationEvent.java:209)
22:01:49,998 ERROR [STDERR] at java.awt.EventQueue.dispatchEvent(EventQueue.
java:461)
22:01:49,999 ERROR [STDERR] at java.awt.EventDispatchThread.pumpOneEventForH
ierarchy(EventDispatchThread.java:242)
22:01:50,000 ERROR [STDERR] at java.awt.EventDispatchThread.pumpEventsForHie
rarchy(EventDispatchThread.java:163)
22:01:50,001 ERROR [STDERR] at java.awt.EventDispatchThread.pumpEvents(Event
DispatchThread.java:157)
22:01:50,003 ERROR [STDERR] at java.awt.EventDispatchThread.pumpEvents(Event
DispatchThread.java:149)
22:01:50,004 ERROR [STDERR] at java.awt.EventDispatchThread.run(EventDispatc
hThread.java:110)
22:31:59,497 WARN [ProxyWarnLog] Narrowing proxy to class org.jbpm.graph.node.S
tartState – this operation breaks ==
22:34:14,103 WARN [ProxyWarnLog] Narrowing proxy to class org.jbpm.graph.node.S
tartState – this operation breaks ==
22:37:35,986 WARN [ProxyWarnLog] Narrowing proxy to class org.jbpm.graph.node.S
tartState – this operation breaks ==
22:38:26,333 WARN [ProxyWarnLog] Narrowing proxy to class org.jbpm.graph.node.S
********************************
I checked ur reply for the same! but couldnt solve the issue..
I use HSQL Databse and I have attached my code snippet
jbpmConfiguration = JbpmConfiguration.parseResource(”/config/jbpm.cfg.xml”);
JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
try{
GraphSession graphSession = jbpmContext.getGraphSession();
ProcessDefinition processDefinition = graphSession.findLatestProcessDefinition(”loanProcess”);
System.out.println(”ProcessDEfn Id :”+processDefinition.getId());
ProcessInstance instance = new ProcessInstance(processDefinition);
prepareTestData(instance.getContextInstance());
Token token = instance.getRootToken();
token.signal();
Could you please sort out the issue!
Cheers,
Kodee
September 29th, 2008 at 8:41 am
@Kodee
Error says “Column not found”. Did you check it?
September 29th, 2008 at 9:12 am
@pigui
Thanks pigui,
but where should I check the same?
September 30th, 2008 at 7:45 am
@Kodee
I’m sorry, I never user a HSQLDB. You must check into database if this field exists.
Did you used the sql creation script in this blog? It will work only if you are using jBPM 3.2.2… or it can be a problem in your bpm environment configuration.
October 16th, 2008 at 10:03 pm
Hi,
I’m working with HSQLDB too… Did you check if your hbn configuration has auto-commit=true ? some things are not persisted by hibernate by default, even if you call close() method from JbpmContext or JbpmConfiguration.
Cheers,
October 20th, 2008 at 10:18 am
hi pigui, i dont understand what does the TerminateImplicit_ column do in JBPM_PROCESSDEFINITION ?
I have tried with creating processInstance by terminateImplicit’s value is 1 or 0, and successful with both cases
October 21st, 2008 at 10:15 am
Hi,
I started working with jbpm. I have two tasks to be done.
1) executing the Process which is created graphically from Java client program.
The above step is done. But i stucked with the following step.
2) I have to create the entire processdefinition using java client and finally it should get converted into xml.
Ex: i have to get the jbpm related details, then start with creating each and every node using java(From start to end) for the entire flow.
Can anyone please gv me some idea how can i start with this…………….
October 22nd, 2008 at 9:43 am
@ekj
hi,
Are you reading database schema? That’s a hard job… Don’t waste your time and read the JavaDoc, it gives more info.
I never used this process definition flag because I never needed to. When is it useful?
You can design a process which can have several “end nodes”. You want process to finish when somebody arribes to one of this nodes, but “by definition” you need to complete all tasks to end it. This flag let’s you complete a process instance without finishing all task. That’s great, don’t you think? It’s very useful when you have some decision nodes that create a tree-shaped process.
I hope it help you. See you.
October 22nd, 2008 at 9:49 am
@Raji
Hi,
I don’t understand your problem…. what are you trying to do? Eclipse client generates the xml file automatically. You only need to deploy it and start working…
I wrote a post about deployment:
http://blogs.dfwikilabs.org/pigui/2008/03/17/deploying-jbpm-processes/
October 22nd, 2008 at 12:26 pm
@pigui
.
thank you, In my software business, I want to make a sign so that user cannot create a process instance from its process definition. At begin, I thought TerminateImplicit_ property can solve that problem
may be I have to extend the JBPM_ProcessDefinition table to reach my purpose.
thanks
October 31st, 2008 at 5:08 am
Hi pigui,
Thanx for reply.
I am able to deploy the created process definition which is created using jpdl. and also checked it in the jbpm console.
According to our requirement, we have to create that graphical diagram thing using jbpm api. so we started and created one simple flow. the code follows:
ProcessDefinition processDefinition=ProcessDefinition.createNewProcessDefinition();
processDefinition.setName(”ChannelProcess”);
ProcessInstance instance= processDefinition.createProcessInstance();
Token t = instance.getRootToken();
ExecutionContext ecxt = new ExecutionContext(t);
StartState startState=new StartState();
startState.setName(”ChannelDemo”);
EndState endState=new EndState();
endState.setName(”end”);
processDefinition.addNode(startState);
Node node1 = new Node();
node1.setName(”node1″);
processDefinition.addNode(node1);
Transition tn=new Transition();
tn.setName(”to_node1″);
tn.setFrom(startState);
tn.setTo(node1);
Event e = new Event(”node-enter”);
Action action = new Action();
e.addAction(action);
Delegation dele = new Delegation(new MyAction());
action.setActionDelegation(dele);
node1.addEvent(e);
startState.addLeavingTransition(tn);
Transition tn1=new Transition();
tn1.setName(”to_endnode”);
tn1.setFrom(node1);
tn1.setTo(endState);
node1.addLeavingTransition(tn1);
t.setNode(startState);
System.out.println(node1.hasLeavingTransition(”to_nextnode”));
t.signal(tn);
Now my thing is whether it is possible to convert this created(start—node—end) information into xml or not……..
October 31st, 2008 at 8:50 am
@Raji
Hi,
you can create any process definition using an eclipse plugin:
http://blogs.dfwikilabs.org/pigui/2007/11/23/jboss-jbpm-review/
Then you can deploy it from eclipse or by typing some code:
http://blogs.dfwikilabs.org/pigui/2008/03/17/deploying-jbpm-processes/
A finally run it.
Why are you creating this process definition by typing code?
November 4th, 2008 at 10:55 am
@pigui
Hi,
Thanx for the reply……..
anyhow the requirement got changed.
Now my issue is: calling the jbpm processdefinition from a servlet and deploy this in jboss app server and then test it………
do u have any idea or links related to this………
thanx
Raji
November 4th, 2008 at 8:21 pm
@Raji
Hi,
I never tried JBoss App Server but deploying a processdefinition is the same with all servers:
You can do it from eclipse o by code (You need to configure it, look for it at jbpm wiki).
Once deployed, you will be able to run and test the process.
November 21st, 2008 at 1:28 pm
@pigui,
Hi,
ya thanks and i have done that particular task as a web app.
Now iam trying to implement jbpm’s bpel…….i got only one link to go through but unable to proceed with that. do u have any idea of developing processdefinition using bpel.
November 21st, 2008 at 1:47 pm
@Raji
Hi
this document is very useful if you want to learn how to do things using bpel.
https://jira.jboss.org/jira/secure/attachment/12311453/jbpm.bpel.guide.pdf
December 29th, 2008 at 6:59 am
@pigui,
Hi
As per the requirement we have to use jbpm bpel and able to run the sample examples given in the only site:
http://docs.jboss.com/jbpm/bpel/v1.1/userguide/tutorial.hello.html
But jboss using wstools to deploy the bpel process by invoking a command:
ant deploy.process
and client code using ant test
the client code follows:
/*
* JBoss, Home of Professional Open Source
* Copyright 2005, JBoss Inc., and individual contributors as indicated
* by the @authors tag.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the JBPM BPEL PUBLIC LICENSE AGREEMENT as
* published by JBoss Inc.; either version 1.0 of the License, or
* (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*/
package org.jbpm.bpel.tutorial.hello;
import javax.naming.InitialContext;
import javax.xml.namespace.QName;
import javax.xml.rpc.Call;
import junit.framework.Test;
import junit.framework.TestCase;
import java.net.*;
import org.jbpm.bpel.tools.ModuleDeployTestSetup;
/**
* @author Alejandro Guizar
* @version $Revision: 1.4 $ $Date: 2007/11/06 22:06:25 $
*/
public class HelloTest extends TestCase {
private HelloWorldService helloService;
protected void setUp() throws Exception {
InitialContext iniCtx = new InitialContext();
/*
* “service/Hello” is the JNDI name of the service interface instance relative to the client
* environment context. This name matches the in application-client.xml
*/
helloService = (HelloWorldService) iniCtx.lookup(”java:comp/env/service/Hello”);
}
/*public void testSayHello_proxy() throws Exception {
// obtain dynamic proxy for web service port
Greeter proxy = helloService.getGreeterPort();
// use proxy as local java object
String greeting = proxy.sayHello(”Popeye”);
// check proper greeting
System.out.println(”i came here first111111111111″);
listClassPath();
assertEquals(”Hello, Popeye!”, greeting);
}*/
public void testSayHello_dii() throws Exception {
String portTypeNS = “http://jbpm.org/examples/hello”;
// obtain dynamic invocation instance
Call call = helloService.createCall(new QName(portTypeNS, “GreeterPort”), “sayHello”);
// invoke operation using request/response interaction mode
String greeting = (String) call.invoke(new Object[] { “Olive” });
// check proper greeting
System.out.println(”i came here second”);
assertEquals(”Hello, Olive!”, greeting);
}
/************************ klp start *************/
/*public void testSayHello_dii() throws Exception {
String portTypeNS = “http://convert”;
// obtain dynamic invocation instance
Call call = helloService.createCall(new QName(portTypeNS, “GreeterPorter”), “printArgMsg”);
// invoke operation using request/response interaction mode
String greeting = (String) call.invoke(new Object[] { “Olive” });
// check proper greeting
System.out.println(”i came here second”);
//assertEquals(”Hello, Olive!”, greeting);
}*/
/************************ klp end*************/
public static Test suite() {
return new ModuleDeployTestSetup(HelloTest.class, “hello-client.jar”);
}
/* public static void listClassPath(){
ClassLoader sysClassLoader = ClassLoader.getSystemClassLoader();
//Get the URLs
URL[] urls = ((URLClassLoader)sysClassLoader).getURLs();
for(int i=0; i< urls.length; i++)
{
System.out.println(urls[i].getFile());
}
}*/
}
we want to deploy our bpel process in tomcat axis2, so can u pls help me on this……..thanx in advance
April 9th, 2009 at 1:27 pm
Hi,
I have a jbpm process. I have deployed it on jboss server. Now I have a servlet on another server. And I want to call this jbpm process from my servlet. How do I call it?
Can you provide the stub to configure and call the jbpm on a different server.
It is urgently needed.Thanks…
April 11th, 2009 at 2:10 pm
@rajani
Hi,
you can use your favourite remote invocation method: RMI, SOAP, XML-RPC….
April 13th, 2009 at 9:04 am
Hi,
If you can provide some example code. It will be very helpful.This is the code I was trying to execute. I have a jbpm process” hello” deployed on jboss ESB server. But I am not getting, how to set the jbpmConfiguration. as my jbpm is on another server. how my program will know where is the process
protected void doView(RenderRequest request, RenderResponse response)
throws PortletException, IOException, UnavailableException {
response.setContentType(”text/html”);
PrintWriter writer = response.getWriter();
writer.write(”Hello Rajani!!!!”);
System.out.println(”iam here………….”);
JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance(”hello/processdefinition.xml”);
JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
ProcessInstance processInstance = jbpmContext.newProcessInstance(”hello”);
//ContextInstance contextInstance = processInstance.getContextInstance();
//contextInstance.setVariable(”greeting”, “greeting”);
processInstance.signal();
writer.close();
}
April 14th, 2009 at 8:36 am
thanks Pigui,
But an you pls provide a sample code and the JbpmConfiguration.I am trying with the code povided by you in this post.But still confused for setting the jbpm cnfiguration. Can you pls help with a stub.
April 14th, 2009 at 2:36 pm
@rajani
I’m sorry, I have not much time to help you with any code.
I recommend you to use Java RMI:
http://java.sun.com/javase/technologies/core/basic/rmi/index.jsp