[JBoss JIRA] Created: (JBPM-1140) Empty <handler> element in <decision> cause org.jbpm.graph.def.DelegationException
by Rafa? ?ukowski (JIRA)
Empty <handler> element in <decision> cause org.jbpm.graph.def.DelegationException
----------------------------------------------------------------------------------
Key: JBPM-1140
URL: http://jira.jboss.com/jira/browse/JBPM-1140
Project: JBoss jBPM
Issue Type: Bug
Components: Core Engine
Affects Versions: jBPM jPDL 3.2.2
Reporter: Rafa? ?ukowski
Assigned To: Tom Baeyens
Priority:…
[View More] Trivial
That is my first issue, forgive me any mistakes and possible redundancy or duplication;)
Using graphical designer I've created process file with empty <handler> :
<decision name="decision1">
<handler></handler>
<transition to="optional" name="to optional"></transition><transition to="first" name="to optional"></transition>
</decision>
And this is not working (org.jbpm.graph.def.DelegationException). After deleting <handler></handler> process is running correctly.
Don't know if this is error in engine or in designer. Maby this kind of decision node is incorrect, and then designer should avoid this situation. My opinion is that engine should ignore empty handlers and go on without errors...
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
[View Less]
14 years, 4 months
[JBoss JIRA] Created: (JBPM-1147) iCalendar Wrapper for jBPM tasks
by Adrian Apthorp (JIRA)
iCalendar Wrapper for jBPM tasks
--------------------------------
Key: JBPM-1147
URL: http://jira.jboss.com/jira/browse/JBPM-1147
Project: JBoss jBPM
Issue Type: Feature Request
Reporter: Adrian Apthorp
Assigned To: Tom Baeyens
Provide iCalendar Wrapper for jBPM tasks for HTTP and Mail channels.
The following code sample is an example servlet for retrieving tasks in iCalendar format to demonstrate mapping of …
[View More]Taskinstance to iCalendar VTODO.
[code]
package org.jbpm.examples.simple.web;
import java.io.IOException;
import java.net.URI;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Iterator;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
// Use iCal4j package
import net.fortuna.ical4j.model.DateTime;
import net.fortuna.ical4j.model.Property;
import net.fortuna.ical4j.model.TimeZoneRegistry;
import net.fortuna.ical4j.model.TimeZoneRegistryFactory;
import net.fortuna.ical4j.model.component.VEvent;
import net.fortuna.ical4j.model.component.VToDo;
import net.fortuna.ical4j.model.component.VTimeZone;
import net.fortuna.ical4j.model.property.Attach;
import net.fortuna.ical4j.model.property.Attendee;
import net.fortuna.ical4j.model.property.CalScale;
import net.fortuna.ical4j.model.property.Comment;
import net.fortuna.ical4j.model.property.Completed;
import net.fortuna.ical4j.model.property.Contact;
import net.fortuna.ical4j.model.property.Created;
import net.fortuna.ical4j.model.property.Description;
import net.fortuna.ical4j.model.property.Location;
import net.fortuna.ical4j.model.property.Method;
import net.fortuna.ical4j.model.property.Organizer;
import net.fortuna.ical4j.model.property.Priority;
import net.fortuna.ical4j.model.property.ProdId;
import net.fortuna.ical4j.model.property.Version;
import net.fortuna.ical4j.util.UidGenerator;
import org.jbpm.JbpmConfiguration;
import org.jbpm.JbpmContext;
import org.jbpm.mail.AddressResolver;
import org.jbpm.taskmgmt.exe.TaskInstance;
import org.jbpm.context.exe.ContextInstance;
import org.jbpm.graph.exe.*;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* Servlet implementation class for Servlet: ICalServlet
*
*/
public class ICalServlet extends javax.servlet.http.HttpServlet implements
javax.servlet.Servlet {
static final long serialVersionUID = 1L;
private static Log log = LogFactory.getLog(ICalServlet.class);
private String localMachine;
private String PORT = "8080";
private static final String TASK_URI = "/jbpm-console/sa/task.jsf?id=";
public ICalServlet() {
super();
try {
localMachine = java.net.InetAddress.getLocalHost().getHostName();
log.info("Hostname of local machine: " + localMachine);
} catch (java.net.UnknownHostException uhe) {
log.info("Can't Retrieve Hostname");
localMachine = "localhost";
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String pathInfo = null;
log.debug("Request Path:" + request.getPathInfo());
if (request.getPathInfo() != null) {
pathInfo = request.getPathInfo().toLowerCase();
}
boolean isTaskList = pathInfo != null && pathInfo.endsWith("tasklist.ics");
boolean isFreeBusy = pathInfo != null && pathInfo.endsWith("freebusy.ifb");
if (isTaskList) {
doTaskList(request, response);
} else if (isFreeBusy) {
/*
* doGetFreeBusy(request, response);
*/
}
}
/**
*
* http://localhost:8080/calendar/reply?actor=user
*
*/
public final void doTaskList(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
String actorName = req.getParameter("actor");
log.info("Actor:" + actorName);
JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance();
JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
resp.setContentType("text/calendar");
try {
java.util.List toDoList = jbpmContext.getTaskMgmtSession()
.findTaskInstances(actorName);
/*
* jbpmContext.getTaskMgmtSession().findPooledTaskInstances(actorName)
*/
if (toDoList == null) {
resp.sendError(HttpServletResponse.SC_NOT_FOUND,
"No Tasks Found For User");
return;
}
net.fortuna.ical4j.model.Calendar calendar = new net.fortuna.ical4j.model.Calendar();
calendar.getProperties().add(
new ProdId("-//aapthorp//jBPM iCal wrapper//EN"));
calendar.getProperties().add(Version.VERSION_2_0);
calendar.getProperties().add(CalScale.GREGORIAN);
calendar.getProperties().add(Method.REQUEST);
for (Iterator iter = toDoList.iterator(); iter.hasNext();) {
TaskInstance task = (TaskInstance) iter.next();
ProcessInstance processInstance = task.getProcessInstance();
ContextInstance contextInstance = processInstance.getContextInstance();
TimeZoneRegistry registry = TimeZoneRegistryFactory.getInstance()
.createRegistry();
String taskId = String.valueOf(task.getId());
String actorId = task.getActorId();
String taskName = task.getName();
// Due Date - This property defines the date and time that a to do is
// expected to be completed.
net.fortuna.ical4j.model.DateTime dueDate = new net.fortuna.ical4j.model.DateTime(
task.getDueDate());
// Start Date - This property specifies when the calendar component
// begins. There is no direct jBPM equivalent so we use a task variable.
java.util.Calendar beginDate = new GregorianCalendar();
net.fortuna.ical4j.model.TimeZone timezone = registry
.getTimeZone(beginDate.getTimeZone().getID());
net.fortuna.ical4j.model.DateTime startDate = null;
if (contextInstance.hasVariable("start")) {
beginDate.setTime((java.util.Date) contextInstance.getVariable(
"start", task.getToken()));
startDate = new net.fortuna.ical4j.model.DateTime(beginDate.getTime());
startDate.setTimeZone(timezone);
}
dueDate.setTimeZone(timezone);
/*
* Create the VTODO
*
* For testing purposes with user agents that can't handle VTODO's we
* can creat a Vevent VEvent toDo = new VEvent(null,dueDate,taskName+" -
* "+taskId);
*
*/
log.info("Create VTODO: task - " + taskId + " start - " + startDate
+ " due - " + dueDate);
VToDo toDo = new VToDo(startDate, dueDate, taskName + " - " + taskId);
// Creation Date
toDo.getProperties()
.add(
new Created(new net.fortuna.ical4j.model.DateTime(task
.getCreate())));
// End Date a.k.a. Completed Date. This property defines the date and
// time that a to-do was actually completed.
if (task.getEnd() != null) {
toDo.getProperties().add(
new Completed(
new net.fortuna.ical4j.model.DateTime(task.getEnd())));
}
// Generate a UID for the toDo
toDo.getProperties().add((new UidGenerator(taskId)).generateUid());
// Attach URL to Task
toDo.getProperties().add(
new Attach(new URI("http://" + localMachine + ":" + PORT + TASK_URI
+ taskId.toString())));
// Set Contact - We set a task variable for this.
if (contextInstance.hasVariable("Name")) {
toDo.getProperties().add(
new Contact((String) contextInstance.getVariable("Name", task
.getToken())));
}
// Set Location - We set a task variable for this.
if (contextInstance.hasVariable("Address")) {
toDo.getProperties().add(
new Location((String) contextInstance.getVariable("Address", task
.getToken())));
}
// Set Priority
toDo.getProperties().add(new Priority(task.getPriority()));
if (task.getDescription() != null) {
toDo.getProperties().add(new Description(task.getDescription()));
}
java.util.List commentList = task.getComments();
if (commentList != null) {
for (Iterator commentIter = commentList.iterator(); commentIter
.hasNext();) {
org.jbpm.graph.exe.Comment myComment = (org.jbpm.graph.exe.Comment) commentIter
.next();
toDo.getProperties().add(
new net.fortuna.ical4j.model.property.Comment(myComment.getId()
+ ":" + myComment.getTime() + ":" + myComment.getActorId()
+ ":" + myComment.getMessage()));
}
}
// Set Attendee
net.fortuna.ical4j.model.ParameterList attendeePL = new net.fortuna.ical4j.model.ParameterList();
attendeePL.add(new net.fortuna.ical4j.model.parameter.Cn(actorId));
attendeePL.add(new net.fortuna.ical4j.model.parameter.Role(
"REQ-PARTICIPANT"));
attendeePL.add(new net.fortuna.ical4j.model.parameter.PartStat(
"NEEDS-ACTION"));
attendeePL.add(new net.fortuna.ical4j.model.parameter.Rsvp("TRUE"));
AddressResolver addressResolver = (AddressResolver) JbpmConfiguration.Configs
.getObject("jbpm.mail.address.resolver");
URI attendeeURI = new URI("MAILTO", (String) addressResolver
.resolveAddress(actorId), null);
toDo.getProperties().add(new Attendee(attendeePL, attendeeURI));
// Set Organizer
String orgAddress = getFromAddress();
if (orgAddress != null) {
URI mailToURI = new URI("MAILTO", orgAddress, null);
toDo.getProperties().add(new Organizer(mailToURI));
}
calendar.getComponents().add(toDo);
}
resp.getOutputStream().write(calendar.toString().getBytes());
} catch (Exception e) {
e.printStackTrace();
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
"Caught exception: " + e);
} finally {
jbpmContext.close();
}
}
public String getFromAddress() {
if (JbpmConfiguration.Configs.hasObject("jbpm.mail.from.address")) {
return JbpmConfiguration.Configs.getString("jbpm.mail.from.address");
}
return "jbpm@noreply";
}
}
[/code]
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
[View Less]
14 years, 10 months
[JBoss JIRA] Created: (JBPM-1139) The ClassUtil class is not thread-safe
by Wojciech Gdela (JIRA)
The ClassUtil class is not thread-safe
--------------------------------------
Key: JBPM-1139
URL: http://jira.jboss.com/jira/browse/JBPM-1139
Project: JBoss jBPM
Issue Type: Bug
Components: Core Engine
Affects Versions: jBPM jPDL 3.2.3
Reporter: Wojciech Gdela
Assigned To: Tom Baeyens
Attachments: ClassUtil-concurrency-issue.zip
The ClassUtil class is not thread-safe. The exception will occur …
[View More]when two thread simultanously try do deserialize variables from two different process definitions. Look at the code:
{code}
public ContextObjectInputStream(final InputStream in,
ProcessInstance processInstance) throws IOException {
super(in);
this.setProcessInstance(processInstance);
ClassUtil.setProcessInstance(processInstance);
}
...
protected Class resolveClass(final ObjectStreamClass desc)
throws IOException, ClassNotFoundException {
return ClassUtil.forName(desc.getName(), ContextObjectInputStream.class);
}
...
ContextObjectInputStream cois = new ContextObjectInputStream(bais, definition.createProcessInstance());
// when here another thread tries to execute the same code with another process instance there will be a problem
return cois.readObject();
{/code}
Further description of issue is in attached test case.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
[View Less]
14 years, 11 months
[JBoss JIRA] Created: (JBPM-1113) Maximum number of cursors exceeded: ResultSet not closed?
by Martin Vecera (JIRA)
Maximum number of cursors exceeded: ResultSet not closed?
---------------------------------------------------------
Key: JBPM-1113
URL: http://jira.jboss.com/jira/browse/JBPM-1113
Project: JBoss jBPM
Issue Type: Bug
Components: Core Engine
Affects Versions: jBPM jPDL 3.2.2
Environment: SOA-P 4.2.0.beta2 (JBossESB 4.2.1), Oracle 10g
Reporter: Martin Vecera
Assigned To: Tom Baeyens
We deployed …
[View More]a performance test (see attached file) based on bpm_orchestration2.
When we generated a large backlog of messages (10,000) there started to be problems with cursors. This doesn't happen when BPM is not used. See attached file for server log.
11:59:10,560 WARN [JDBCSupport] SQLException caught, SQLState 72000 code:1000- assuming deadlock detected, try:23
java.sql.SQLException: ORA-01000: maximum open cursors exceeded
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:955)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1168)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3316)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3400)
at org.jboss.resource.adapter.jdbc.WrappedPreparedStatement.executeUpdate(WrappedPreparedStatement.java:251)
at org.jboss.messaging.core.impl.JDBCPersistenceManager$1HandleBeforeCommit1PCRunner.doTransaction(JDBCPersistenceManager.java:1593)
at org.jboss.messaging.core.impl.JDBCSupport$JDBCTxRunner2.execute(JDBCSupport.java:465)
at org.jboss.messaging.core.impl.JDBCSupport$JDBCTxRunner2.executeWithRetry(JDBCSupport.java:503)
at org.jboss.messaging.core.impl.JDBCPersistenceManager.handleBeforeCommit1PC(JDBCPersistenceManager.java:1680)
at org.jboss.messaging.core.impl.JDBCPersistenceManager$TransactionCallback.beforeCommit(JDBCPersistenceManager.java:2790)
at org.jboss.messaging.core.impl.tx.Transaction.commit(Transaction.java:208)
at org.jboss.jms.server.endpoint.ServerConnectionEndpoint.sendTransaction(ServerConnectionEndpoint.java:474)
at org.jboss.jms.server.endpoint.advised.ConnectionAdvised.org$jboss$jms$server$endpoint$advised$ConnectionAdvised$sendTransaction$aop(ConnectionAdvised.java:101)
at org.jboss.jms.server.endpoint.advised.ConnectionAdvised$sendTransaction_N3268650789275322226.invokeNext(ConnectionAdvised$sendTransaction_N3268650789275322226.java)
at org.jboss.jms.server.container.SecurityAspect.handleSendTransaction(SecurityAspect.java:195)
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:585)
at org.jboss.aop.advice.PerInstanceAdvice.invoke(PerInstanceAdvice.java:121)
at org.jboss.jms.server.endpoint.advised.ConnectionAdvised$sendTransaction_N3268650789275322226.invokeNext(ConnectionAdvised$sendTransaction_N3268650789275322226.java)
at org.jboss.jms.server.container.ServerLogInterceptor.invoke(ServerLogInterceptor.java:105)
at org.jboss.jms.server.endpoint.advised.ConnectionAdvised$sendTransaction_N3268650789275322226.invokeNext(ConnectionAdvised$sendTransaction_N3268650789275322226.java)
at org.jboss.jms.server.endpoint.advised.ConnectionAdvised.sendTransaction(ConnectionAdvised.java)
at org.jboss.jms.wireformat.ConnectionSendTransactionRequest.serverInvoke(ConnectionSendTransactionRequest.java:82)
at org.jboss.jms.server.remoting.JMSServerInvocationHandler.invoke(JMSServerInvocationHandler.java:143)
at org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:795)
at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:573)
at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:387)
at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:166)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
[View Less]
15 years, 10 months
[JBoss JIRA] Created: (JBPM-1141) The jBPM 'websale' sample application fails - project JIRA for SOA-446
by Len DiMaggio (JIRA)
The jBPM 'websale' sample application fails - project JIRA for SOA-446
----------------------------------------------------------------------
Key: JBPM-1141
URL: http://jira.jboss.com/jira/browse/JBPM-1141
Project: JBoss jBPM
Issue Type: Bug
Components: Training
Affects Versions: jBPM jPDL 3.2.2
Environment: JBoss Developer Studio
Build id: 1.0.0.GA
SOA-P GA
/opt/GA/soa-4.2.0.GA.zip
/opt/GA/standalone-soa-…
[View More]4.2.0.GA.zip
RHEL5
Linux ldimaggi.csb 2.6.18-53.1.13.el5 #1 SMP Mon Feb 11 13:27:52 EST 2008 i686 i686 i386 GNU/Linux
Sun Java 1.5
java version "1.5.0_14"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_14-b03)
Java HotSpot(TM) Client VM (build 1.5.0_14-b03, mixed mode)
RDBMS
H2, version: 1.0.66 (2008-01-18)
CPU
cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 13
model name : Intel(R) Pentium(R) M processor 1.70GHz
stepping : 6
cpu MHz : 1700.000
cache size : 2048 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr mce cx8 mtrr pge mca cmov pat clflush dts acpi mmx fxsr sse sse2 ss tm pbe up est tm2
bogomips : 3398.35
Reporter: Len DiMaggio
Assigned To: Tom Baeyens
Details are in:
http://jira.jboss.com/jira/browse/SOA-446
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
[View Less]
16 years, 2 months