0 0

jbpm问题,运行特别的慢,页面504错误,求大神帮忙呀,急~~ [30

.代码:
TaskService taskService = this.jBPMUtil.getProcessEngine().getTaskService();
// 根据用户id查找当前任务列表
List<Task> list = taskService.findGroupTasks(uid);//uid是当前用户ID
List<TaskView> taskViewsList = new ArrayList<TaskView>();
//TaskView 是自己写的一个实体类
TaskView taskView = new TaskView();
String listId = "" ;
for (Task task:list) {
listId = task.getId();

Integer id = (Integer) taskService.getVariable(listId, "id");
String type = (String) taskService.getVariable(listId, "type");
taskView.setAuditNode("1");
taskView.setId(id);
taskView.setType(type);
taskView.setTaskId(listId);
taskViewsList.add(taskView);
}
公司用的工作流取当前用户任务的一个例子,之前运行是没问题的 一直没人改,后来突然报504错误了,检查发现是这个方法运行的特别慢,后台还在执行这个方法的时候页面就已经报错了。
研究了一下工作流:
List<Task> list = taskService.findGroupTasks(uid);这个方法取出来的LIST 数据大概在1000条左右,循环这个list却用了一分钟多,发现问题是在 循环中取值的这两个方法特别慢
Integer id = (Integer) taskService.getVariable(listId, "id");
String type = (String) taskService.getVariable(listId, "type");
求教各位大神 有没有办法把这两个方法提到循环外面来,或者其他什么方法可以解决运行时间太长的办法?
2014年7月15日 14:05

2个答案 按时间排序 按投票排序

0 0

getVariable()这个获取数据的方法,考虑缓存。如果是从库里取的数据,那么肯定是影响操作速度的。尽量减少数据库的操作。是你优化的一个方向。

2014年7月18日 13:01
0 0

TaskView taskView = new TaskView();   这个是创建了一个实例?
String listId = "" ; 
for (Task task:list) {
listId = task.getId();

Integer id = (Integer) taskService.getVariable(listId, "id");
String type = (String) taskService.getVariable(listId, "type");
taskView.setAuditNode("1");
taskView.setId(id);
taskView.setType(type);
taskView.setTaskId(listId);
taskViewsList.add(taskView);

每次遍历的数据填充这个实例?

}

我看着有点别扭 帮你修改下 可能我不对

TaskView taskView ;
String listId = "" ;
for (Task task:list) {
taskView = new TaskView();
listId = task.getId();

Integer id = (Integer) taskService.getVariable(listId, "id");
String type = (String) taskService.getVariable(listId, "type");
taskView.setAuditNode("1");
taskView.setId(id);
taskView.setType(type);
taskView.setTaskId(listId);
taskViewsList.add(taskView);
}

2014年7月15日 23:19

相关推荐

Global site tag (gtag.js) - Google Analytics