I currently working with IBM ProcessServer and I created a BPEL process doing some stuff.

I wanted to use the Human Task API inside a snippet. I got this error message:

javax.naming.NameNotFoundException: Name comp/env/ejb not found in context “java:”

How to make it work:

Add a reference to the HumanTaskManager EJB at your EJB project, in my case this was TestProcessEJB . There is a ejb-jar.xml under ejbModule/META-INF/. Don’t forget to add the JNDI name to the EJB reference at the references tab. If this JNDI name is not set you will receive such an error message:

Stack-Trace: com.ibm.websphere.naming.CannotInstantiateObjectException: Exception occurred while the JNDI NamingManager was processing a javax.naming.Reference object.  Root exception is javax.naming.NameNotFoundException: Context: ctrNode01Cell/nodes/wps/servers/server1, name: ejb/HumanTaskManagerHome: First component in name HumanTaskManagerHome not found.  Root exception is org.omg.CosNaming.NamingContextPackage.NotFound: IDL:omg.org/CosNaming/NamingContext/NotFound:1.0

java.lang.ClassCastException: Unable to load class: com.ibm.task.api._HumanTaskManagerHome_Stub

Now have have to package task137650.jar  with your enterprise application. In my case I had to place this file to TEST_ProcessWeb\WebContent\WEB-INF\lib\task137650.jar. In my case I found it here: IBM\Rational\SDP\6.0\runtimes\bi_v6\ProcessChoreographer\client

If you work with the BusinessFlowManager Bean inside your snippet you have to add bpe137650.jar.

Now this code would work inside a Java Snippet:

TKIID tkiid = null;
try
{
System.out.println(”Prozess Starter ” + processInstance().getStarter());
// Obtain the default initial JNDI context

Context initialContext = new InitialContext();
Object resultHTMHome = initialContext.lookup(”java:comp/env/ejb/HumanTaskManagerHome”);

// Get the home interface
HumanTaskManagerHome taskHome =
(HumanTaskManagerHome) javax.rmi.PortableRemoteObject.narrow(resultHTMHome, HumanTaskManagerHome.class);

// Create the EJB
HumanTaskManager taskManager = taskHome.create();

QueryResultSet result = taskManager.query(”DISTINCT TASK.TKIID”,
“TASK.NAME = ‘ATestTask’”,
(String)null, (Integer)null, (TimeZone)null);
if (result.size() > 0)
{
result.first();
tkiid = (TKIID) result.getOID(1);
System.out.println(”TKIID+ ” + tkiid.toString() );
Task startCreateECOTask = taskManager.getTask(tkiid);
String ownerOfStartCreateECOTask = startCreateECOTask.getOwner();startCreateECOTask.
System.out.println(”ownerOfStartCreateECOTask ” + ownerOfStartCreateECOTask);
}
}
catch (Exception e)
{
e.printStackTrace(System.out);
}