jBPM4.3 task完成走向问题 本帖最后由 folksdreamY 于 2011-09-09 16:20:30 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 神奇的CSDN,请赐我一个jPBM高手吧! taskService.complete(taskId);就行的,你多了"to ended",如果有两个transition的话,就加上路径 先谢谢你哈!这么多天了,你是第一个帮忙的!难道都是月亮惹的祸?我去掉试了,还是一样的的情况,findActiveActivityNames()的结果依然是task1,pi.isEnded()的结果依然是false!以下是我的测试代码:package com.yknife;import java.util.Iterator;import java.util.List;import java.util.Set;import junit.framework.TestCase;import org.jbpm.api.*;import org.jbpm.api.task.Task;public class MyTask extends TestCase { ProcessEngine processEngine; public MyTask(){ processEngine = Configuration.getProcessEngine(); } public void setUp(){ RepositoryService repositoryService = processEngine.getRepositoryService(); repositoryService.createDeployment().addResourceFromClasspath("task.jpdl.xml").deploy(); } public void testTask(){ ExecutionService es = processEngine.getExecutionService(); ProcessInstance pi = es.startProcessInstanceByKey("task"); TaskService ts = processEngine.getTaskService(); List<Task> list = ts.findPersonalTasks("yknife"); Task task = list.get(0); String taskId = task.getId(); ts.completeTask(taskId); Set set = pi.findActiveActivityNames(); Iterator it = set.iterator(); while(it.hasNext()){ System.out.println(it.next()); } assertTrue(pi.isEnded()); }} 不好意思,一天没登陆,没发现。package com.yknife;import java.util.Iterator;import java.util.List;import java.util.Set;import junit.framework.TestCase;import org.jbpm.api.*;import org.jbpm.api.history.HistoryProcessInstance;import org.jbpm.api.task.Task;public class MyTask extends TestCase { ProcessEngine processEngine; public MyTask(){ processEngine = Configuration.getProcessEngine(); } public void setUp(){ RepositoryService repositoryService = processEngine.getRepositoryService(); repositoryService.createDeployment().addResourceFromClasspath("task.jpdl.xml").deploy(); } public void testTask(){ ExecutionService es = processEngine.getExecutionService(); HistoryService hs = processEngine.getHistoryService(); ProcessInstance pi = es.startProcessInstanceByKey("task"); TaskService ts = processEngine.getTaskService(); List<Task> list = ts.findPersonalTasks("yknife"); Task task = list.get(0); String taskId = task.getId(); ts.completeTask(taskId); //查看历史流程表,可以断言流程已经结束了 HistoryProcessInstance hpi = hs.createHistoryProcessInstanceQuery().processInstanceId(pi.getId()).uniqueResult(); assertTrue("ended".equals(hpi.getState())); //查看任务表任务,可以通过任务不存在了 List<Task> taskList = ts.createTaskQuery().processInstanceId(pi.getId()).list(); assertTrue(taskList.size()==0); }}测试失败的原因在于,在断言的时候,你的流程还是没有结束任务时候的流程,当你结束任务的时候,你需要再重新查一下流程,pi = es.findProcessInstanceById(pi.getId());再断言,不过你只有一个任务,在任务结束后,pi查出来应该是空的,这个时候你需要通过历史流程服务来查了。 findActiveActivityNames()的结果依然是task1对于这个问题,你需要建2个任务,完成一个任务后,再试试下面的代码,需要重查一下流程。pi = es.findProcessInstanceById(pi.getId());Set set = pi.findActiveActivityNames(); Iterator it = set.iterator(); while(it.hasNext()){ System.out.println(it.next()); } 谢谢啦,问题解决啦!我发现关键的问题在pi变量在completeTask()后没有刷新,pi依然还是未完成的任务前的pi,所以findActiveActivityNames()结果依然是task1。 网页中网格老是显示不正常 如何解决貌似是内存溢出 关于JSP中request.getParameter()判断得到否为空的问题 进入Filter验证session之后,出现乱码!! 怎么做,一个表格的数据,到一定长度,自动换行 jsp故障,求各位大哥一定帮帮忙 谁知道哪儿有webwork中文版资料下载 请指教 数据库写进的问题 javabean问题 怎样将繁体中文转化为简体中文 从网上下载的Middlegen-2.1.zip,解压后,build.xml文件有错误 javax.imageio.IIOException: Unsupported Image Type
以下是我的测试代码:package com.yknife;import java.util.Iterator;
import java.util.List;
import java.util.Set;import junit.framework.TestCase;
import org.jbpm.api.*;
import org.jbpm.api.task.Task;public class MyTask extends TestCase {
ProcessEngine processEngine;
public MyTask(){
processEngine = Configuration.getProcessEngine();
}
public void setUp(){
RepositoryService repositoryService = processEngine.getRepositoryService();
repositoryService.createDeployment().addResourceFromClasspath("task.jpdl.xml").deploy();
}
public void testTask(){
ExecutionService es = processEngine.getExecutionService();
ProcessInstance pi = es.startProcessInstanceByKey("task");
TaskService ts = processEngine.getTaskService();
List<Task> list = ts.findPersonalTasks("yknife");
Task task = list.get(0);
String taskId = task.getId();
ts.completeTask(taskId);
Set set = pi.findActiveActivityNames();
Iterator it = set.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
assertTrue(pi.isEnded());
}
}
import java.util.List;
import java.util.Set;import junit.framework.TestCase;
import org.jbpm.api.*;
import org.jbpm.api.history.HistoryProcessInstance;
import org.jbpm.api.task.Task;public class MyTask extends TestCase {
ProcessEngine processEngine;
public MyTask(){
processEngine = Configuration.getProcessEngine();
}
public void setUp(){
RepositoryService repositoryService = processEngine.getRepositoryService();
repositoryService.createDeployment().addResourceFromClasspath("task.jpdl.xml").deploy();
}
public void testTask(){
ExecutionService es = processEngine.getExecutionService();
HistoryService hs = processEngine.getHistoryService();
ProcessInstance pi = es.startProcessInstanceByKey("task");
TaskService ts = processEngine.getTaskService();
List<Task> list = ts.findPersonalTasks("yknife");
Task task = list.get(0);
String taskId = task.getId();
ts.completeTask(taskId);
//查看历史流程表,可以断言流程已经结束了
HistoryProcessInstance hpi = hs.createHistoryProcessInstanceQuery().processInstanceId(pi.getId()).uniqueResult();
assertTrue("ended".equals(hpi.getState()));
//查看任务表任务,可以通过任务不存在了
List<Task> taskList = ts.createTaskQuery().processInstanceId(pi.getId()).list();
assertTrue(taskList.size()==0);
}
}
测试失败的原因在于,在断言的时候,你的流程还是没有结束任务时候的流程,当你结束任务的时候,你需要再重新查一下流程,pi = es.findProcessInstanceById(pi.getId());
再断言,不过你只有一个任务,在任务结束后,pi查出来应该是空的,这个时候你需要通过历史流程服务来查了。
Set set = pi.findActiveActivityNames();
Iterator it = set.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
我发现关键的问题在pi变量在completeTask()后没有刷新,pi依然还是未完成的任务前的pi,所以findActiveActivityNames()结果依然是task1。