[JBoss JIRA] Created: (JBPM-1170) Multiple Timers with same name on Node end prematurely
by David Roberts (JIRA)
Multiple Timers with same name on Node end prematurely
------------------------------------------------------
Key: JBPM-1170
URL: http://jira.jboss.com/jira/browse/JBPM-1170
Project: JBoss jBPM
Issue Type: Bug
Affects Versions: jBPM jPDL 3.2.2
Environment: Jbpm 3.2.2, Tomcat 5.028, MySQL 5.0
Reporter: David Roberts
Assigned To: Tom Baeyens
When you have multiple Tasks on a Node, and each task has a Timer called, for example, "Reminder". Lets say each timer is set to repeat every 24 hours. If you complete one of the Tasks on the node, the Timer called "Reminder" on that task instance ends, but so does every other timer for all other tasks on that node with the name "Reminder". Surely this should not happen?
You could avoid this by naming each Timer differenty, example "Reminder 1", "Reminder 2". But the problem may still happen if you have multiple task instances of the SAME task. Then the name of the Reminders will still be the same, so they will all end when completing one of the task instances.
--
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
14 years
[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: 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
14 years
[JBoss JIRA] Created: (JBPM-1395) verify jbpm/soa integration
by Tom Baeyens (JIRA)
verify jbpm/soa integration
---------------------------
Key: JBPM-1395
URL: https://jira.jboss.org/jira/browse/JBPM-1395
Project: JBoss jBPM
Issue Type: Task
Security Level: Public (Everyone can see)
Components: jPDL 3
Reporter: Tom Baeyens
Fix For: jPDL 3.2.4
ESB people have already done some good work on trying to get jBPM integrated into ESB and the rest of the SOA platform. But this work should be verified from a jBPM perspective.
Mainly it should be verified if there is enough coverage of the different transaction scenarios. E.g. a rollback in case of multiple transactional resources.
More can be found in the related SOA issue description
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
14 years
[JBoss JIRA] Created: (JBPM-1164) Null Pointer Exception is thrown when subprocess is leave event is fired.
by Gurpreet Sahota (JIRA)
Null Pointer Exception is thrown when subprocess is leave event is fired.
-------------------------------------------------------------------------
Key: JBPM-1164
URL: http://jira.jboss.com/jira/browse/JBPM-1164
Project: JBoss jBPM
Issue Type: Bug
Affects Versions: jBPM jPDL 3.2.2
Environment: Windows XP Pro, Sun JDK 1.5.0_13
Reporter: Gurpreet Sahota
Assigned To: Tom Baeyens
I have a process flow where process (A) calls a process state that in turn calls subprocess (B). When Subprocess "end" state is signalled then I receive a Null Pointer Exception.
Following is stack trace
java.lang.NullPointerException
at org.jbpm.graph.node.ProcessState.leave(ProcessState.java:204)
at org.jbpm.graph.exe.Token.signal(Token.java:195)
at org.jbpm.graph.exe.Token.signal(Token.java:140)
When debugging, it turns out that "leave" method in ProcessState tries to retrieve subProcessInstance from execution context. This is set to null causing exception. If executionContext.getToken() is used to retrieve the subProcessInstance, then it is not null.
--
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
14 years, 5 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 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
14 years, 7 months
[JBoss JIRA] Created: (JBPM-1423) idenitfy supported deployments
by Tom Baeyens (JIRA)
idenitfy supported deployments
------------------------------
Key: JBPM-1423
URL: https://jira.jboss.org/jira/browse/JBPM-1423
Project: JBoss jBPM
Issue Type: Task
Security Level: Public (Everyone can see)
Components: PVM
Reporter: Tom Baeyens
Priority: Critical
Identify the supported deployment environments and the corresponding configurations.
This basically will come down to transaction configurations in pvm, hibernate, spring, ejb and the likes.
Configurations:
* pvm
* hibernate
* ejb
Controlling transactions:
* Hibernate transaction programmatic
* Direct JDBC connection programmatic
* JTA UserTransaction programmatic (== BMT?)
* CMT through EJB deployment descriptors
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
14 years, 7 months