提交 bacf6c6e 编写于 作者: O o2null

Merge branch 'fix/#421' into 'wrdp'

流程启动不再使用队列,以提升极限压测性能

See merge request o2oa/o2oa!2351
......@@ -76,7 +76,7 @@ public class ExternalDataSource extends ConfigObject {
@FieldDescribe("空闲阈值,默认300秒.")
private Integer maxIdleTime;
public static final Integer DEFAULT_MAXTOTAL = 50;
public static final Integer DEFAULT_MAXTOTAL = 100;
public static final Integer DEFAULT_MAXIDLE = 0;
......
......@@ -75,20 +75,20 @@ class ActionCreate extends BaseAction {
throw new ExceptionApplicationAccessDenied(effectivePerson.getDistinguishedName(), application.getId());
}
if (BooleanUtils.isTrue(wi.getLatest())) {
/* 判断是否是要直接打开之前创建的草稿,草稿的判断标准:有待办无任何已办 */
// 判断是否是要直接打开之前创建的草稿,草稿的判断标准:有待办无任何已办
lastestWorkId = this.latest(business, process, identity);
workId = lastestWorkId;
}
}
if (StringUtils.isEmpty(workId)) {
WoId woId = ThisApplication.context().applications().postQuery(x_processplatform_service_processing.class,
Applications.joinQueryUri("work", "process", process.getId()), wi.getData(), process.getId())
Applications.joinQueryUri("work", "process", process.getId()), wi.getData(), null)
.getData(WoId.class);
workId = woId.getId();
}
/* 设置Work信息 */
// 设置Work信息
if (BooleanUtils.isFalse(wi.getLatest()) || (StringUtils.isEmpty(lastestWorkId))) {
/* 如果不是草稿那么需要进行设置 */
// 如果不是草稿那么需要进行设置
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
Business business = new Business(emc);
Organization organization = business.organization();
......@@ -111,21 +111,21 @@ class ActionCreate extends BaseAction {
ThisApplication.context().applications().putQuery(x_processplatform_service_processing.class,
Applications.joinQueryUri("work", workId, "processing", "nonblocking"), null);
} else {
/* 如果是草稿,准备后面的直接打开 */
// 如果是草稿,准备后面的直接打开
workId = lastestWorkId;
}
/* 拼装返回结果 */
// 拼装返回结果
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
Business business = new Business(emc);
Work work = emc.find(workId, Work.class);
/* 如果work是从开始->执行任务->结束,这里work已经结束那么有可能这里已经没有work了. */
// 如果work是从开始->执行任务->结束,这里work已经结束那么有可能这里已经没有work了.
if (null != work) {
List<String> ids = business.workLog()
.listWithFromActivityTokenForwardNotConnected(work.getActivityToken());
/* 先取得没有结束的WorkLog */
// 先取得没有结束的WorkLog
List<WorkLog> list = emc.list(WorkLog.class, ids);
wos = this.refercenceWorkLog(business, list);
/* 标识当前用户的待办 */
// 标识当前用户的待办
for (Wo o : wos) {
o.setCurrentTaskIndex(-1);
for (int i = 0; i < o.getTaskList().size(); i++) {
......@@ -368,21 +368,22 @@ class ActionCreate extends BaseAction {
return ObjectUtils.compare(o1.getCompletedTime(), o2.getCompletedTime(), true);
}
});
/* 补充召回 */
List<WoTaskCompleted> results = new ArrayList<>();
for (WoTaskCompleted o : list) {
results.add(o);
if (o.getProcessingType().equals(ProcessingType.retract)) {
WoTaskCompleted retract = new WoTaskCompleted();
o.copyTo(retract);
retract.setRouteName("撤回");
retract.setOpinion("撤回");
retract.setStartTime(retract.getRetractTime());
retract.setCompletedTime(retract.getRetractTime());
results.add(retract);
}
}
wo.setTaskCompletedList(results);
wo.setTaskCompletedList(list);
// /* 补充召回 */
// List<WoTaskCompleted> results = new ArrayList<>();
// for (WoTaskCompleted o : list) {
// results.add(o);
// if (o.getProcessingType().equals(ProcessingType.retract)) {
// WoTaskCompleted retract = new WoTaskCompleted();
// o.copyTo(retract);
// retract.setRouteName("撤回");
// retract.setOpinion("撤回");
// retract.setStartTime(retract.getRetractTime());
// retract.setCompletedTime(retract.getRetractTime());
// results.add(retract);
// }
// }
// wo.setTaskCompletedList(results);
}
}
\ No newline at end of file
......@@ -45,9 +45,9 @@ class ActionCreateForce extends BaseAction {
ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, String processFlag, JsonElement jsonElement)
throws Exception {
Audit audit = logger.audit(effectivePerson);
/* 新建工作id */
// 新建工作id
String workId = "";
/* 已存在草稿id */
// 已存在草稿id
String lastestWorkId = "";
String identity = null;
Process process = null;
......@@ -69,20 +69,20 @@ class ActionCreateForce extends BaseAction {
throw new ExceptionApplicationAccessDenied(effectivePerson.getDistinguishedName(), application.getId());
}
if (BooleanUtils.isTrue(wi.getLatest())) {
/* 判断是否是要直接打开之前创建的草稿,草稿的判断标准:有待办无任何已办 */
// 判断是否是要直接打开之前创建的草稿,草稿的判断标准:有待办无任何已办
lastestWorkId = this.latest(business, process, identity);
workId = lastestWorkId;
}
}
if (StringUtils.isEmpty(workId)) {
WoId woId = ThisApplication.context().applications().postQuery(x_processplatform_service_processing.class,
Applications.joinQueryUri("work", "process", process.getId()), wi.getData(), process.getId())
Applications.joinQueryUri("work", "process", process.getId()), wi.getData(), null)
.getData(WoId.class);
workId = woId.getId();
}
/* 设置Work信息 */
// 设置Work信息
if (BooleanUtils.isFalse(wi.getLatest()) || (StringUtils.isEmpty(lastestWorkId))) {
/* 如果不是草稿那么需要进行设置 */
// 如果不是草稿那么需要进行设置
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
Business business = new Business(emc);
Organization organization = business.organization();
......@@ -101,25 +101,25 @@ class ActionCreateForce extends BaseAction {
}
emc.commit();
}
/* 驱动工作,使用非队列方式 */
// 驱动工作,使用非队列方式
ThisApplication.context().applications().putQuery(x_processplatform_service_processing.class,
Applications.joinQueryUri("work", workId, "processing", "nonblocking"), null, processFlag);
Applications.joinQueryUri("work", workId, "processing", "nonblocking"), null, null);
} else {
/* 如果是草稿,准备后面的直接打开 */
// 如果是草稿,准备后面的直接打开
workId = lastestWorkId;
}
/* 拼装返回结果 */
// 拼装返回结果
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
Business business = new Business(emc);
Work work = emc.find(workId, Work.class);
/* 如果work是从开始->执行任务->结束,这里work已经结束那么有可能这里已经没有work了. */
// 如果work是从开始->执行任务->结束,这里work已经结束那么有可能这里已经没有work了.
if (null != work) {
List<String> ids = business.workLog()
.listWithFromActivityTokenForwardNotConnected(work.getActivityToken());
/* 先取得没有结束的WorkLog */
// 先取得没有结束的WorkLog
List<WorkLog> list = emc.list(WorkLog.class, ids);
wos = this.refercenceWorkLog(business, list);
/* 标识当前用户的待办 */
// 标识当前用户的待办
for (Wo o : wos) {
o.setCurrentTaskIndex(-1);
for (int i = 0; i < o.getTaskList().size(); i++) {
......@@ -317,7 +317,7 @@ class ActionCreateForce extends BaseAction {
if (BooleanUtils.isNotTrue(o.getConnected())) {
this.referenceTask(business, wo);
} else {
/** 已经完成的不会有待办,返回一个空数组 */
// 已经完成的不会有待办,返回一个空数组
wo.setTaskList(new ArrayList<WoTask>());
}
this.referenceTaskCompleted(business, wo);
......@@ -338,7 +338,7 @@ class ActionCreateForce extends BaseAction {
} else if (identities.size() == 1) {
return identities.get(0);
} else {
/* 有多个身份需要逐一判断是否包含. */
// 有多个身份需要逐一判断是否包含.
for (String o : identities) {
if (StringUtils.equals(o, wi.getIdentity())) {
return o;
......@@ -371,21 +371,22 @@ class ActionCreateForce extends BaseAction {
return ObjectUtils.compare(o1.getCompletedTime(), o2.getCompletedTime(), true);
}
});
/* 补充召回 */
List<WoTaskCompleted> results = new ArrayList<>();
for (WoTaskCompleted o : list) {
results.add(o);
if (o.getProcessingType().equals(ProcessingType.retract)) {
WoTaskCompleted retract = new WoTaskCompleted();
o.copyTo(retract);
retract.setRouteName("撤回");
retract.setOpinion("撤回");
retract.setStartTime(retract.getRetractTime());
retract.setCompletedTime(retract.getRetractTime());
results.add(retract);
}
}
wo.setTaskCompletedList(results);
wo.setTaskCompletedList(list);
// /* 补充召回 */
// List<WoTaskCompleted> results = new ArrayList<>();
// for (WoTaskCompleted o : list) {
// results.add(o);
// if (o.getProcessingType().equals(ProcessingType.retract)) {
// WoTaskCompleted retract = new WoTaskCompleted();
// o.copyTo(retract);
// retract.setRouteName("撤回");
// retract.setOpinion("撤回");
// retract.setStartTime(retract.getRetractTime());
// retract.setCompletedTime(retract.getRetractTime());
// results.add(retract);
// }
// }
// wo.setTaskCompletedList(results);
}
}
\ No newline at end of file
package com.x.processplatform.assemble.surface.jaxrs.work;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import com.google.gson.JsonElement;
import com.x.base.core.container.EntityManagerContainer;
import com.x.base.core.container.factory.EntityManagerContainerFactory;
......@@ -24,14 +27,12 @@ import com.x.base.core.project.logger.Audit;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.organization.Unit;
import com.x.base.core.project.tools.DefaultCharset;
import com.x.base.core.project.tools.ListTools;
import com.x.base.core.project.tools.SortTools;
import com.x.organization.core.express.Organization;
import com.x.processplatform.assemble.surface.Business;
import com.x.processplatform.assemble.surface.ThisApplication;
import com.x.processplatform.assemble.surface.WorkControl;
import com.x.processplatform.core.entity.content.ProcessingType;
import com.x.processplatform.core.entity.content.Task;
import com.x.processplatform.core.entity.content.TaskCompleted;
import com.x.processplatform.core.entity.content.Work;
......@@ -39,10 +40,6 @@ import com.x.processplatform.core.entity.content.WorkLog;
import com.x.processplatform.core.entity.element.Application;
import com.x.processplatform.core.entity.element.Process;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
/*
* 根据应用名称和流程名称进行创建,和直接用process创建基本相同
* */
......@@ -89,7 +86,7 @@ class ActionCreateWithApplicationProcess extends BaseAction {
if (StringUtils.isEmpty(workId)) {
WoId woId = ThisApplication.context().applications()
.postQuery(x_processplatform_service_processing.class,
"work/process/" + URLEncoder.encode(process.getId(), DefaultCharset.name), wi.getData())
Applications.joinQueryUri("work", "process", process.getId()), wi.getData(), null)
.getData(WoId.class);
workId = woId.getId();
}
......@@ -117,7 +114,7 @@ class ActionCreateWithApplicationProcess extends BaseAction {
}
/* 驱动工作,使用非队列方式 */
ThisApplication.context().applications().putQuery(x_processplatform_service_processing.class,
Applications.joinQueryUri("work", workId, "processing", "nonblocking"), null,processFlag);
Applications.joinQueryUri("work", workId, "processing", "nonblocking"), null, null);
} else {
/* 如果是草稿,准备后面的直接打开 */
workId = lastestWorkId;
......@@ -336,7 +333,7 @@ class ActionCreateWithApplicationProcess extends BaseAction {
} else if (identities.size() == 1) {
return identities.get(0);
} else {
/* 有多个身份需要逐一判断是否包含. */
// 有多个身份需要逐一判断是否包含.
for (String o : identities) {
if (StringUtils.equals(o, wi.getIdentity())) {
return o;
......@@ -369,21 +366,22 @@ class ActionCreateWithApplicationProcess extends BaseAction {
return ObjectUtils.compare(o1.getCompletedTime(), o2.getCompletedTime(), true);
}
});
/* 补充召回 */
List<WoTaskCompleted> results = new ArrayList<>();
for (WoTaskCompleted o : list) {
results.add(o);
if (o.getProcessingType().equals(ProcessingType.retract)) {
WoTaskCompleted retract = new WoTaskCompleted();
o.copyTo(retract);
retract.setRouteName("撤回");
retract.setOpinion("撤回");
retract.setStartTime(retract.getRetractTime());
retract.setCompletedTime(retract.getRetractTime());
results.add(retract);
}
}
wo.setTaskCompletedList(results);
wo.setTaskCompletedList(list);
// /* 补充召回 */
// List<WoTaskCompleted> results = new ArrayList<>();
// for (WoTaskCompleted o : list) {
// results.add(o);
// if (o.getProcessingType().equals(ProcessingType.retract)) {
// WoTaskCompleted retract = new WoTaskCompleted();
// o.copyTo(retract);
// retract.setRouteName("撤回");
// retract.setOpinion("撤回");
// retract.setStartTime(retract.getRetractTime());
// retract.setCompletedTime(retract.getRetractTime());
// results.add(retract);
// }
// }
// wo.setTaskCompletedList(results);
}
}
\ No newline at end of file
......@@ -19,6 +19,7 @@ import com.x.base.core.project.organization.Unit;
import com.x.base.core.project.tools.DefaultCharset;
import com.x.base.core.project.tools.ListTools;
import com.x.base.core.project.tools.SortTools;
import com.x.base.core.project.Applications;
import com.x.base.core.project.x_processplatform_service_processing;
import com.x.organization.core.express.Organization;
import com.x.processplatform.assemble.surface.Business;
......@@ -80,7 +81,7 @@ class ActionCreateWithApplicationProcessForce extends BaseAction {
if (StringUtils.isEmpty(workId)) {
WoId woId = ThisApplication.context().applications()
.postQuery(x_processplatform_service_processing.class,
"work/process/" + URLEncoder.encode(process.getId(), DefaultCharset.name), wi.getData())
Applications.joinQueryUri("work", "process", process.getId()), wi.getData(), null)
.getData(WoId.class);
workId = woId.getId();
}
......@@ -360,21 +361,22 @@ class ActionCreateWithApplicationProcessForce extends BaseAction {
return ObjectUtils.compare(o1.getCompletedTime(), o2.getCompletedTime(), true);
}
});
/* 补充召回 */
List<WoTaskCompleted> results = new ArrayList<>();
for (WoTaskCompleted o : list) {
results.add(o);
if (o.getProcessingType().equals(ProcessingType.retract)) {
WoTaskCompleted retract = new WoTaskCompleted();
o.copyTo(retract);
retract.setRouteName("撤回");
retract.setOpinion("撤回");
retract.setStartTime(retract.getRetractTime());
retract.setCompletedTime(retract.getRetractTime());
results.add(retract);
}
}
wo.setTaskCompletedList(results);
wo.setTaskCompletedList(list);
// /* 补充召回 */
// List<WoTaskCompleted> results = new ArrayList<>();
// for (WoTaskCompleted o : list) {
// results.add(o);
// if (o.getProcessingType().equals(ProcessingType.retract)) {
// WoTaskCompleted retract = new WoTaskCompleted();
// o.copyTo(retract);
// retract.setRouteName("撤回");
// retract.setOpinion("撤回");
// retract.setStartTime(retract.getRetractTime());
// retract.setCompletedTime(retract.getRetractTime());
// results.add(retract);
// }
// }
// wo.setTaskCompletedList(results);
}
}
\ No newline at end of file
......@@ -4,16 +4,15 @@ import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.container.AsyncResponse;
import javax.ws.rs.container.Suspended;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import com.x.base.core.project.Application;
import com.x.base.core.project.annotation.JaxrsDescribe;
import com.x.base.core.project.annotation.JaxrsMethodDescribe;
import com.x.base.core.project.annotation.JaxrsParameterDescribe;
import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson;
import com.x.base.core.project.http.HttpMediaType;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册