From 69b925000610b0dd9243f378f37ac6d777ab325a Mon Sep 17 00:00:00 2001 From: zhourui Date: Tue, 11 Aug 2020 17:27:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=A0=BC=E5=BC=8F=E8=B0=83?= =?UTF-8?q?=E6=95=B4,=E5=8A=9F=E8=83=BD=E6=97=A0=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../designer/ProjectionExecuteQueue.java | 168 +++++++++--------- .../jaxrs/work/ActionProjection.java | 86 ++++----- 2 files changed, 131 insertions(+), 123 deletions(-) diff --git a/o2server/x_processplatform_assemble_designer/src/main/java/com/x/processplatform/assemble/designer/ProjectionExecuteQueue.java b/o2server/x_processplatform_assemble_designer/src/main/java/com/x/processplatform/assemble/designer/ProjectionExecuteQueue.java index a0eebf72a4..8eb74a5f2c 100644 --- a/o2server/x_processplatform_assemble_designer/src/main/java/com/x/processplatform/assemble/designer/ProjectionExecuteQueue.java +++ b/o2server/x_processplatform_assemble_designer/src/main/java/com/x/processplatform/assemble/designer/ProjectionExecuteQueue.java @@ -1,16 +1,14 @@ package com.x.processplatform.assemble.designer; -import java.util.ArrayList; import java.util.List; -import java.util.Objects; import org.apache.commons.lang3.BooleanUtils; -import org.apache.commons.lang3.StringUtils; import com.google.gson.JsonElement; import com.google.gson.reflect.TypeToken; import com.x.base.core.container.EntityManagerContainer; import com.x.base.core.container.factory.EntityManagerContainerFactory; +import com.x.base.core.entity.dataitem.DataItem; import com.x.base.core.entity.dataitem.DataItemConverter; import com.x.base.core.entity.dataitem.ItemCategory; import com.x.base.core.project.exception.ExceptionEntityNotExist; @@ -35,7 +33,7 @@ public class ProjectionExecuteQueue extends AbstractQueue { private static Logger logger = LoggerFactory.getLogger(ProjectionExecuteQueue.class); - private DataItemConverter converter = new DataItemConverter(Item.class); + private DataItemConverter converter = new DataItemConverter<>(Item.class); @Override protected void execute(String id) throws Exception { @@ -59,99 +57,105 @@ public class ProjectionExecuteQueue extends AbstractQueue { private void work(Business business, Process process, List projections) throws Exception { String sequence = ""; - List os = new ArrayList<>(); - Data data = null; + List os; do { os = business.entityManagerContainer().listEqualAndSequenceAfter(Work.class, Work.process_FIELDNAME, process.getId(), 100, sequence); if (!os.isEmpty()) { - business.entityManagerContainer().beginTransaction(Work.class); - business.entityManagerContainer().beginTransaction(Task.class); - business.entityManagerContainer().beginTransaction(TaskCompleted.class); - business.entityManagerContainer().beginTransaction(Read.class); - business.entityManagerContainer().beginTransaction(ReadCompleted.class); - business.entityManagerContainer().beginTransaction(Review.class); - for (Work o : os) { - sequence = o.getSequence(); - data = this.data(business, o); - ProjectionFactory.projectionWork(projections, data, o); - for (Task task : business.entityManagerContainer().listEqualAndEqual(Task.class, Task.job_FIELDNAME, - o.getJob(), Task.process_FIELDNAME, o.getProcess())) { - ProjectionFactory.projectionTask(projections, data, task); - } - for (TaskCompleted taskCompleted : business.entityManagerContainer().listEqualAndEqual( - TaskCompleted.class, TaskCompleted.job_FIELDNAME, o.getJob(), - TaskCompleted.process_FIELDNAME, o.getProcess())) { - ProjectionFactory.projectionTaskCompleted(projections, data, taskCompleted); - } - for (Read read : business.entityManagerContainer().listEqualAndEqual(Read.class, Read.job_FIELDNAME, - o.getJob(), Read.process_FIELDNAME, o.getProcess())) { - ProjectionFactory.projectionRead(projections, data, read); - } - for (ReadCompleted readCompleted : business.entityManagerContainer().listEqualAndEqual( - ReadCompleted.class, ReadCompleted.job_FIELDNAME, o.getJob(), - ReadCompleted.process_FIELDNAME, o.getProcess())) { - ProjectionFactory.projectionReadCompleted(projections, data, readCompleted); - } - for (Review review : business.entityManagerContainer().listEqualAndEqual(Review.class, - Review.job_FIELDNAME, o.getJob(), Review.process_FIELDNAME, o.getProcess())) { - ProjectionFactory.projectionReview(projections, data, review); - } - } - business.entityManagerContainer().commit(); + sequence = workProjection(business, projections, sequence, os); } } while (!os.isEmpty()); } + private String workProjection(Business business, List projections, String sequence, List os) + throws Exception { + business.entityManagerContainer().beginTransaction(Work.class); + business.entityManagerContainer().beginTransaction(Task.class); + business.entityManagerContainer().beginTransaction(TaskCompleted.class); + business.entityManagerContainer().beginTransaction(Read.class); + business.entityManagerContainer().beginTransaction(ReadCompleted.class); + business.entityManagerContainer().beginTransaction(Review.class); + for (Work o : os) { + sequence = o.getSequence(); + Data data = this.data(business, o); + ProjectionFactory.projectionWork(projections, data, o); + for (Task task : business.entityManagerContainer().listEqualAndEqual(Task.class, Task.job_FIELDNAME, + o.getJob(), Task.process_FIELDNAME, o.getProcess())) { + ProjectionFactory.projectionTask(projections, data, task); + } + for (TaskCompleted taskCompleted : business.entityManagerContainer().listEqualAndEqual(TaskCompleted.class, + TaskCompleted.job_FIELDNAME, o.getJob(), TaskCompleted.process_FIELDNAME, o.getProcess())) { + ProjectionFactory.projectionTaskCompleted(projections, data, taskCompleted); + } + for (Read read : business.entityManagerContainer().listEqualAndEqual(Read.class, Read.job_FIELDNAME, + o.getJob(), Read.process_FIELDNAME, o.getProcess())) { + ProjectionFactory.projectionRead(projections, data, read); + } + for (ReadCompleted readCompleted : business.entityManagerContainer().listEqualAndEqual(ReadCompleted.class, + ReadCompleted.job_FIELDNAME, o.getJob(), ReadCompleted.process_FIELDNAME, o.getProcess())) { + ProjectionFactory.projectionReadCompleted(projections, data, readCompleted); + } + for (Review review : business.entityManagerContainer().listEqualAndEqual(Review.class, Review.job_FIELDNAME, + o.getJob(), Review.process_FIELDNAME, o.getProcess())) { + ProjectionFactory.projectionReview(projections, data, review); + } + } + business.entityManagerContainer().commit(); + return sequence; + } + private void workCompleted(Business business, Process process, List projections) throws Exception { String sequence = ""; - List os = new ArrayList<>(); - Data data = null; + List os; do { os = business.entityManagerContainer().listEqualAndSequenceAfter(WorkCompleted.class, WorkCompleted.process_FIELDNAME, process.getId(), 100, sequence); if (!os.isEmpty()) { - business.entityManagerContainer().beginTransaction(WorkCompleted.class); - business.entityManagerContainer().beginTransaction(Task.class); - business.entityManagerContainer().beginTransaction(TaskCompleted.class); - business.entityManagerContainer().beginTransaction(Read.class); - business.entityManagerContainer().beginTransaction(ReadCompleted.class); - business.entityManagerContainer().beginTransaction(Review.class); - for (WorkCompleted o : os) { - sequence = o.getSequence(); - data = this.data(business, o); - ProjectionFactory.projectionWorkCompleted(projections, data, o); - for (Task task : business.entityManagerContainer().listEqualAndEqual(Task.class, Task.job_FIELDNAME, - o.getJob(), Task.process_FIELDNAME, o.getProcess())) { - ProjectionFactory.projectionTask(projections, data, task); - } - for (TaskCompleted taskCompleted : business.entityManagerContainer().listEqualAndEqual( - TaskCompleted.class, TaskCompleted.job_FIELDNAME, o.getJob(), - TaskCompleted.process_FIELDNAME, o.getProcess())) { - ProjectionFactory.projectionTaskCompleted(projections, data, taskCompleted); - } - for (Read read : business.entityManagerContainer().listEqualAndEqual(Read.class, Read.job_FIELDNAME, - o.getJob(), Read.process_FIELDNAME, o.getProcess())) { - ProjectionFactory.projectionRead(projections, data, read); - } - for (ReadCompleted readCompleted : business.entityManagerContainer().listEqualAndEqual( - ReadCompleted.class, ReadCompleted.job_FIELDNAME, o.getJob(), - ReadCompleted.process_FIELDNAME, o.getProcess())) { - ProjectionFactory.projectionReadCompleted(projections, data, readCompleted); - } - for (Review review : business.entityManagerContainer().listEqualAndEqual(Review.class, - Review.job_FIELDNAME, o.getJob(), Review.process_FIELDNAME, o.getProcess())) { - ProjectionFactory.projectionReview(projections, data, review); - } - } - business.entityManagerContainer().commit(); + sequence = workCompletedProjection(business, projections, sequence, os); } } while (!os.isEmpty()); } + private String workCompletedProjection(Business business, List projections, String sequence, + List os) throws Exception { + business.entityManagerContainer().beginTransaction(WorkCompleted.class); + business.entityManagerContainer().beginTransaction(Task.class); + business.entityManagerContainer().beginTransaction(TaskCompleted.class); + business.entityManagerContainer().beginTransaction(Read.class); + business.entityManagerContainer().beginTransaction(ReadCompleted.class); + business.entityManagerContainer().beginTransaction(Review.class); + for (WorkCompleted o : os) { + sequence = o.getSequence(); + Data data = this.data(business, o); + ProjectionFactory.projectionWorkCompleted(projections, data, o); + for (Task task : business.entityManagerContainer().listEqualAndEqual(Task.class, Task.job_FIELDNAME, + o.getJob(), Task.process_FIELDNAME, o.getProcess())) { + ProjectionFactory.projectionTask(projections, data, task); + } + for (TaskCompleted taskCompleted : business.entityManagerContainer().listEqualAndEqual(TaskCompleted.class, + TaskCompleted.job_FIELDNAME, o.getJob(), TaskCompleted.process_FIELDNAME, o.getProcess())) { + ProjectionFactory.projectionTaskCompleted(projections, data, taskCompleted); + } + for (Read read : business.entityManagerContainer().listEqualAndEqual(Read.class, Read.job_FIELDNAME, + o.getJob(), Read.process_FIELDNAME, o.getProcess())) { + ProjectionFactory.projectionRead(projections, data, read); + } + for (ReadCompleted readCompleted : business.entityManagerContainer().listEqualAndEqual(ReadCompleted.class, + ReadCompleted.job_FIELDNAME, o.getJob(), ReadCompleted.process_FIELDNAME, o.getProcess())) { + ProjectionFactory.projectionReadCompleted(projections, data, readCompleted); + } + for (Review review : business.entityManagerContainer().listEqualAndEqual(Review.class, Review.job_FIELDNAME, + o.getJob(), Review.process_FIELDNAME, o.getProcess())) { + ProjectionFactory.projectionReview(projections, data, review); + } + } + business.entityManagerContainer().commit(); + return sequence; + } + private Data data(Business business, Work work) throws Exception { - List items = business.entityManagerContainer().listEqualAndEqual(Item.class, Item.bundle_FIELDNAME, - work.getJob(), Item.itemCategory_FIELDNAME, ItemCategory.pp); + List items = business.entityManagerContainer().listEqualAndEqual(Item.class, DataItem.bundle_FIELDNAME, + work.getJob(), DataItem.itemCategory_FIELDNAME, ItemCategory.pp); if (items.isEmpty()) { return new Data(); } else { @@ -159,7 +163,7 @@ public class ProjectionExecuteQueue extends AbstractQueue { if (jsonElement.isJsonObject()) { return XGsonBuilder.convert(jsonElement, Data.class); } else { - /* 如果不是Object强制返回一个Map对象 */ + // 如果不是Object强制返回一个Map对象 return new Data(); } } @@ -169,8 +173,8 @@ public class ProjectionExecuteQueue extends AbstractQueue { if (BooleanUtils.isTrue(workCompleted.getMerged())) { return workCompleted.getProperties().getData(); } - List items = business.entityManagerContainer().listEqualAndEqual(Item.class, Item.bundle_FIELDNAME, - workCompleted.getJob(), Item.itemCategory_FIELDNAME, ItemCategory.pp); + List items = business.entityManagerContainer().listEqualAndEqual(Item.class, DataItem.bundle_FIELDNAME, + workCompleted.getJob(), DataItem.itemCategory_FIELDNAME, ItemCategory.pp); if (items.isEmpty()) { return new Data(); } else { @@ -178,7 +182,7 @@ public class ProjectionExecuteQueue extends AbstractQueue { if (jsonElement.isJsonObject()) { return XGsonBuilder.convert(jsonElement, Data.class); } else { - /* 如果不是Object强制返回一个Map对象 */ + // 如果不是Object强制返回一个Map对象 return new Data(); } } diff --git a/o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/jaxrs/work/ActionProjection.java b/o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/jaxrs/work/ActionProjection.java index 9e6fa199a9..66399cb224 100644 --- a/o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/jaxrs/work/ActionProjection.java +++ b/o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/jaxrs/work/ActionProjection.java @@ -24,6 +24,7 @@ import com.x.processplatform.core.entity.content.Work; import com.x.processplatform.core.entity.element.Process; import com.x.processplatform.core.entity.element.Projection; import com.x.processplatform.core.entity.element.util.ProjectionFactory; +import com.x.processplatform.service.processing.Business; import com.x.processplatform.service.processing.WorkDataHelper; class ActionProjection extends BaseAction { @@ -52,66 +53,69 @@ class ActionProjection extends BaseAction { } job = work.getJob(); - data = new WorkDataHelper(emc, work).get(); - } - Callable> callable = new Callable>() { - public ActionResult call() throws Exception { - ActionResult result = new ActionResult<>(); - Wo wo = new Wo(); - wo.setValue(false); - try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) { - List projections = listProjections(process); - if (ListTools.isNotEmpty(projections)) { - emc.beginTransaction(Work.class); - emc.beginTransaction(Task.class); - emc.beginTransaction(TaskCompleted.class); - emc.beginTransaction(Read.class); - emc.beginTransaction(ReadCompleted.class); - emc.beginTransaction(Review.class); - for (Work o : emc.listEqual(Work.class, Work.job_FIELDNAME, job)) { - ProjectionFactory.projectionWork(projections, data, o); - } - for (Task o : emc.listEqual(Task.class, Task.job_FIELDNAME, job)) { - ProjectionFactory.projectionTask(projections, data, o); - } - for (TaskCompleted o : emc.listEqual(TaskCompleted.class, TaskCompleted.job_FIELDNAME, job)) { - ProjectionFactory.projectionTaskCompleted(projections, data, o); - } - for (Read o : emc.listEqual(Read.class, Read.job_FIELDNAME, job)) { - ProjectionFactory.projectionRead(projections, data, o); - } - for (ReadCompleted o : emc.listEqual(ReadCompleted.class, ReadCompleted.job_FIELDNAME, job)) { - ProjectionFactory.projectionReadCompleted(projections, data, o); - } - for (Review o : emc.listEqual(Review.class, Review.job_FIELDNAME, job)) { - ProjectionFactory.projectionReview(projections, data, o); - } - emc.commit(); - wo.setValue(true); - } + Callable> callable = () -> { + ActionResult result = new ActionResult<>(); + Wo wo = new Wo(); + wo.setValue(false); + try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) { + List projections = listProjections(process); + if (ListTools.isNotEmpty(projections)) { + projection(new Business(emc), job, data, projections); + wo.setValue(true); } - result.setData(wo); - return result; } + result.setData(wo); + return result; }; return ProcessPlatformExecutorFactory.get(job).submit(callable).get(); } + private void projection(Business business, String job, Data data, List projections) throws Exception { + EntityManagerContainer emc = business.entityManagerContainer(); + emc.beginTransaction(Work.class); + emc.beginTransaction(Task.class); + emc.beginTransaction(TaskCompleted.class); + emc.beginTransaction(Read.class); + emc.beginTransaction(ReadCompleted.class); + emc.beginTransaction(Review.class); + for (Work o : emc.listEqual(Work.class, Work.job_FIELDNAME, job)) { + ProjectionFactory.projectionWork(projections, data, o); + } + for (Task o : emc.listEqual(Task.class, Task.job_FIELDNAME, job)) { + ProjectionFactory.projectionTask(projections, data, o); + } + for (TaskCompleted o : emc.listEqual(TaskCompleted.class, TaskCompleted.job_FIELDNAME, job)) { + ProjectionFactory.projectionTaskCompleted(projections, data, o); + } + for (Read o : emc.listEqual(Read.class, Read.job_FIELDNAME, job)) { + ProjectionFactory.projectionRead(projections, data, o); + } + for (ReadCompleted o : emc.listEqual(ReadCompleted.class, ReadCompleted.job_FIELDNAME, job)) { + ProjectionFactory.projectionReadCompleted(projections, data, o); + } + for (Review o : emc.listEqual(Review.class, Review.job_FIELDNAME, job)) { + ProjectionFactory.projectionReview(projections, data, o); + } + emc.commit(); + } + private List listProjections(Process process) { + List list = new ArrayList<>(); String text = process.getProjection(); if (XGsonBuilder.isJsonArray(text)) { - return XGsonBuilder.instance().fromJson(text, new TypeToken>() { + list = XGsonBuilder.instance().fromJson(text, new TypeToken>() { }.getType()); } - return new ArrayList(); + return list; } public static class Wo extends WrapBoolean { + private static final long serialVersionUID = -3206075665001702872L; } } \ No newline at end of file -- GitLab