diff --git a/o2server/x_organization_assemble_authentication/src/main/java/com/x/organization/assemble/authentication/factory/PersonFactory.java b/o2server/x_organization_assemble_authentication/src/main/java/com/x/organization/assemble/authentication/factory/PersonFactory.java index 0f181f5e3baf9dd242300473edd186119614422e..4408b7856eb06ee83c7dc070a13ac107783426bb 100644 --- a/o2server/x_organization_assemble_authentication/src/main/java/com/x/organization/assemble/authentication/factory/PersonFactory.java +++ b/o2server/x_organization_assemble_authentication/src/main/java/com/x/organization/assemble/authentication/factory/PersonFactory.java @@ -120,7 +120,6 @@ public class PersonFactory extends AbstractFactory { p = cb.or(p, cb.equal(root.get(Person_.open4Id), credential)); p = cb.or(p, cb.equal(root.get(Person_.open5Id), credential)); cq.select(root.get(Person_.id)); - Query query = em.createQuery(cq.where(p)); List list = em.createQuery(cq.where(p).distinct(true)).getResultList(); if (list.size() == 1) { return list.get(0); diff --git a/o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/jaxrs/work/ActionAssignCreate.java b/o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/jaxrs/work/ActionAssignCreate.java index 30e2999571a2b74e43192452ae125c118490c254..49bc78517ca3a2127d315f28cbb92d1e130ffacd 100644 --- a/o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/jaxrs/work/ActionAssignCreate.java +++ b/o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/jaxrs/work/ActionAssignCreate.java @@ -3,7 +3,6 @@ package com.x.processplatform.service.processing.jaxrs.work; import java.util.ArrayList; import java.util.Date; import java.util.List; -import java.util.concurrent.Callable; import javax.persistence.EntityManager; import javax.persistence.criteria.CriteriaBuilder; @@ -11,9 +10,6 @@ import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Root; -import org.apache.commons.lang3.BooleanUtils; -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; @@ -27,7 +23,6 @@ import com.x.base.core.project.bean.WrapCopier; import com.x.base.core.project.bean.WrapCopierFactory; import com.x.base.core.project.config.StorageMapping; import com.x.base.core.project.exception.ExceptionEntityNotExist; -import com.x.base.core.project.executor.ProcessPlatformExecutorFactory; import com.x.base.core.project.gson.GsonPropertyObject; import com.x.base.core.project.http.ActionResult; import com.x.base.core.project.http.EffectivePerson; @@ -51,11 +46,15 @@ import com.x.processplatform.service.processing.MessageFactory; import com.x.processplatform.service.processing.ThisApplication; import com.x.processplatform.service.processing.WorkDataHelper; +import org.apache.commons.lang3.BooleanUtils; +import org.apache.commons.lang3.StringUtils; + /** * 创建处于start状态的work * * @author Rui * + * 此方法不需要推入线程池运行 */ class ActionAssignCreate extends BaseAction { @@ -67,86 +66,70 @@ class ActionAssignCreate extends BaseAction { Wo wo = new Wo(); Wi wi = this.convertToWrapIn(jsonElement, Wi.class); Boolean processing = wi.getProcessing(); - CallWrapObject callWrapObject = new CallWrapObject(); - - Callable callable = new Callable() { - public String call() throws Exception { - try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) { - Business business = new Business(emc); - List applicationIds = listApplication(business, wi.getApplication()); - if (ListTools.isEmpty(applicationIds)) { - throw new ExceptionEntityNotExist(wi.getApplication(), Application.class); - } - Process process = getProcess(business, applicationIds, wi.getProcess()); - Application application = business.element().get(process.getApplication(), Application.class); - Begin begin = business.element().getBeginWithProcess(process.getId()); - Work work = create(application, process, begin); - callWrapObject.job = work.getJob(); - callWrapObject.id = work.getId(); - String identityDn = business.organization().identity().get(wi.getIdentity()); - if (StringUtils.isEmpty(identityDn)) { - throw new ExceptionIdentityNotExist(wi.getIdentity()); - } - work.setTitle(wi.getTitle()); - work.setCreatorIdentity(identityDn); - work.setCreatorPerson(business.organization().person().getWithIdentity(identityDn)); - work.setCreatorUnit(business.organization().unit().getWithIdentity(identityDn)); - /* 通过赋值调用的是不能被作为草稿删除的 */ - work.setDataChanged(true); - if (ListTools.isNotEmpty(wi.getAttachmentList())) { - emc.beginTransaction(Attachment.class); - /** 这个attachmentList要手动初始化 */ - // work.setAttachmentList(new ArrayList()); - for (WiAttachment o : wi.getAttachmentList()) { - StorageMapping fromMapping = ThisApplication.context().storageMappings() - .get(Attachment.class, o.getStorage()); - if (null == fromMapping) { - throw new ExceptionFromMappingNotExist(o.getStorage()); - } - StorageMapping toMapping = ThisApplication.context().storageMappings() - .random(Attachment.class); - if (null == toMapping) { - throw new ExceptionToMappingNotExist(Attachment.class); - } - Attachment attachment = new Attachment(work, effectivePerson.getDistinguishedName(), - o.getSite()); - attachment.setActivity(begin.getId()); - attachment.setActivityName(begin.getName()); - attachment.setActivityType(ActivityType.begin); - attachment.setActivityToken(work.getActivityToken()); - attachment.saveContent(toMapping, o.readContent(fromMapping), o.getName()); - emc.persist(attachment, CheckPersistType.all); - } + + Work work = null; + + try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) { + Business business = new Business(emc); + List applicationIds = listApplication(business, wi.getApplication()); + if (ListTools.isEmpty(applicationIds)) { + throw new ExceptionEntityNotExist(wi.getApplication(), Application.class); + } + Process process = getProcess(business, applicationIds, wi.getProcess()); + Application application = business.element().get(process.getApplication(), Application.class); + Begin begin = business.element().getBeginWithProcess(process.getId()); + work = create(application, process, begin); + String identityDn = business.organization().identity().get(wi.getIdentity()); + if (StringUtils.isEmpty(identityDn)) { + throw new ExceptionIdentityNotExist(wi.getIdentity()); + } + work.setTitle(wi.getTitle()); + work.setCreatorIdentity(identityDn); + work.setCreatorPerson(business.organization().person().getWithIdentity(identityDn)); + work.setCreatorUnit(business.organization().unit().getWithIdentity(identityDn)); + /* 通过赋值调用的是不能被作为草稿删除的 */ + work.setDataChanged(true); + if (ListTools.isNotEmpty(wi.getAttachmentList())) { + emc.beginTransaction(Attachment.class); + /** 这个attachmentList要手动初始化 */ + // work.setAttachmentList(new ArrayList()); + for (WiAttachment o : wi.getAttachmentList()) { + StorageMapping fromMapping = ThisApplication.context().storageMappings().get(Attachment.class, + o.getStorage()); + if (null == fromMapping) { + throw new ExceptionFromMappingNotExist(o.getStorage()); } - emc.beginTransaction(Work.class); - emc.persist(work, CheckPersistType.all); - if (null != wi.getData()) { - WorkDataHelper workDataHelper = new WorkDataHelper(emc, work); - workDataHelper.update(wi.getData()); + StorageMapping toMapping = ThisApplication.context().storageMappings().random(Attachment.class); + if (null == toMapping) { + throw new ExceptionToMappingNotExist(Attachment.class); } - emc.commit(); - MessageFactory.work_create(work); + Attachment attachment = new Attachment(work, effectivePerson.getDistinguishedName(), o.getSite()); + attachment.setActivity(begin.getId()); + attachment.setActivityName(begin.getName()); + attachment.setActivityType(ActivityType.begin); + attachment.setActivityToken(work.getActivityToken()); + attachment.saveContent(toMapping, o.readContent(fromMapping), o.getName()); + emc.persist(attachment, CheckPersistType.all); } - return ""; } - }; - - ProcessPlatformExecutorFactory.get(wi.getProcess()).submit(callable).get(); - + emc.beginTransaction(Work.class); + emc.persist(work, CheckPersistType.all); + if (null != wi.getData()) { + WorkDataHelper workDataHelper = new WorkDataHelper(emc, work); + workDataHelper.update(wi.getData()); + } + emc.commit(); + } + MessageFactory.work_create(work); if (BooleanUtils.isTrue(processing)) { ThisApplication.context().applications().putQuery(x_processplatform_service_processing.class, - Applications.joinQueryUri("work", callWrapObject.id, "processing"), null, callWrapObject.job); + Applications.joinQueryUri("work", work.getId(), "processing"), null, work.getJob()); } - wo.setId(callWrapObject.id); + wo.setId(work.getId()); result.setData(wo); return result; } - public static class CallWrapObject { - private String job; - private String id; - } - public static class Wi extends GsonPropertyObject { @FieldDescribe("应用标识") @@ -282,7 +265,7 @@ class ActionAssignCreate extends BaseAction { work.setProcessAlias(process.getAlias()); work.setJob(StringTools.uniqueToken()); work.setStartTime(now); -// work.setErrorRetry(0); + // work.setErrorRetry(0); work.setWorkStatus(WorkStatus.start); work.setDestinationActivity(begin.getId()); work.setDestinationActivityType(ActivityType.begin); diff --git a/o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/jaxrs/work/ActionCreate.java b/o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/jaxrs/work/ActionCreate.java index 7f30a986340e399ce2de9b3b11b48ce8cca5cfc1..2412c7913c1fc13f62d6c4fe7e72260080b24a6b 100644 --- a/o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/jaxrs/work/ActionCreate.java +++ b/o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/jaxrs/work/ActionCreate.java @@ -1,13 +1,11 @@ package com.x.processplatform.service.processing.jaxrs.work; import java.util.Date; -import java.util.concurrent.Callable; import com.google.gson.JsonElement; import com.x.base.core.container.EntityManagerContainer; import com.x.base.core.container.factory.EntityManagerContainerFactory; import com.x.base.core.entity.annotation.CheckPersistType; -import com.x.base.core.project.executor.ProcessPlatformExecutorFactory; import com.x.base.core.project.http.ActionResult; import com.x.base.core.project.http.EffectivePerson; import com.x.base.core.project.jaxrs.WoId; @@ -26,7 +24,8 @@ import com.x.processplatform.service.processing.WorkDataHelper; * 创建处于start状态的work * * @author Rui - * + * + * 此方法不需要推入线程池运行 */ class ActionCreate extends BaseAction { @@ -35,33 +34,24 @@ class ActionCreate extends BaseAction { ActionResult result = new ActionResult<>(); Wo wo = new Wo(); + Work work = null; + try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) { + Business business = new Business(emc); + Process process = business.element().get(processId, Process.class); + Application application = business.element().get(process.getApplication(), Application.class); + Begin begin = business.element().getBeginWithProcess(process.getId()); - Callable callable = new Callable() { - public String call() throws Exception { - try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) { - Business business = new Business(emc); - Process process = business.element().get(processId, Process.class); - Application application = business.element().get(process.getApplication(), Application.class); - Begin begin = business.element().getBeginWithProcess(process.getId()); - - Work work = create(application, process, begin); - emc.beginTransaction(Work.class); - if ((null != jsonElement) && jsonElement.isJsonObject()) { - WorkDataHelper workDataHelper = new WorkDataHelper(emc, work); - workDataHelper.update(jsonElement); - } - emc.persist(work, CheckPersistType.all); - emc.commit(); - wo.setId(work.getId()); - MessageFactory.work_create(work); - } - return ""; + work = create(application, process, begin); + emc.beginTransaction(Work.class); + if ((null != jsonElement) && jsonElement.isJsonObject()) { + WorkDataHelper workDataHelper = new WorkDataHelper(emc, work); + workDataHelper.update(jsonElement); } - }; - - /* 根据流程应用id分派进程号. */ - ProcessPlatformExecutorFactory.get(processId).submit(callable).get(); - + emc.persist(work, CheckPersistType.all); + emc.commit(); + wo.setId(work.getId()); + } + MessageFactory.work_create(work); result.setData(wo); return result; } @@ -85,7 +75,7 @@ class ActionCreate extends BaseAction { work.setProcessAlias(process.getAlias()); work.setJob(StringTools.uniqueToken()); work.setStartTime(now); -// work.setErrorRetry(0); + // work.setErrorRetry(0); work.setWorkStatus(WorkStatus.start); work.setDestinationActivity(begin.getId()); work.setDestinationActivityType(ActivityType.begin);