提交 5abbcb48 编写于 作者: R Ray

完成脚本替换

上级 88f78ede
......@@ -3,7 +3,6 @@ package com.x.base.core.entity;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
......@@ -56,7 +55,7 @@ public abstract class StorageObject extends SliceJpaObject {
public static final String DELETE_OPERATE = "delete";
public abstract String path();
public abstract String path() throws Exception;
public abstract String getStorage();
......@@ -82,7 +81,7 @@ public abstract class StorageObject extends SliceJpaObject {
public abstract void setDeepPath(Boolean deepPath);
public String path(String operate) {
public String path(String operate) throws Exception {
return this.path();
}
......@@ -407,7 +406,7 @@ public abstract class StorageObject extends SliceJpaObject {
}
}
private long hdfsUpdateContent(StorageMapping mapping, byte[] bytes) throws IOException {
private long hdfsUpdateContent(StorageMapping mapping, byte[] bytes) throws Exception {
try (org.apache.hadoop.fs.FileSystem fileSystem = org.apache.hadoop.fs.FileSystem
.get(hdfsConfiguration(mapping))) {
org.apache.hadoop.fs.Path path = new org.apache.hadoop.fs.Path(getPrefix(mapping), this.path());
......@@ -424,7 +423,7 @@ public abstract class StorageObject extends SliceJpaObject {
return bytes.length;
}
private Long hdfsReadContent(StorageMapping mapping, OutputStream output) throws IOException {
private Long hdfsReadContent(StorageMapping mapping, OutputStream output) throws Exception {
long length = -1L;
try (org.apache.hadoop.fs.FileSystem fileSystem = org.apache.hadoop.fs.FileSystem
.get(hdfsConfiguration(mapping))) {
......@@ -440,7 +439,7 @@ public abstract class StorageObject extends SliceJpaObject {
return length;
}
private boolean hdfsExistContent(StorageMapping mapping) throws IOException {
private boolean hdfsExistContent(StorageMapping mapping) throws Exception {
try (org.apache.hadoop.fs.FileSystem fileSystem = org.apache.hadoop.fs.FileSystem
.get(hdfsConfiguration(mapping))) {
org.apache.hadoop.fs.Path path = new org.apache.hadoop.fs.Path(getPrefix(mapping), this.path());
......@@ -448,7 +447,7 @@ public abstract class StorageObject extends SliceJpaObject {
}
}
private void hdfsDeleteContent(StorageMapping mapping) throws IOException {
private void hdfsDeleteContent(StorageMapping mapping) throws Exception {
try (org.apache.hadoop.fs.FileSystem fileSystem = org.apache.hadoop.fs.FileSystem
.get(hdfsConfiguration(mapping))) {
org.apache.hadoop.fs.Path path = new org.apache.hadoop.fs.Path(getPrefix(mapping), this.path());
......
......@@ -31,28 +31,31 @@ public class ScriptingFactory {
private static CompiledScript compiledScriptInitialScriptText;
public static final String BINDING_NAME_RESOURCES = "java_resources";
// public static final String BINDING_NAME_ORGANIZATION = "organization";
// public static final String BINDING_NAME_WEBSERVICESCLIENT = "webservicesClient";
public static final String BINDING_NAME_WORKCONTEXT = "java_workContext";
public static final String BINDING_NAME_DATA = "java_data";
public static final String BINDING_NAME_ASSIGNDATA = "assignData";
public static final String BINDING_NAME_ASSIGNDATA = "java_assignData";
// public static final String BINDING_NAME_JAXWSPARAMETERS = "java_jaxwsParameters";
public static final String BINDING_NAME_JAXWSRESPONSE = "java_jaxwsResponse";
public static final String BINDING_NAME_JAXRSPARAMETERS = "java_jaxrsParameters";
public static final String BINDING_NAME_JAXRSRESPONSE = "java_jaxrsResponse";
public static final String BINDING_NAME_JAXRSHEADERS = "java_jaxrsHeaders";
public static final String BINDING_NAME_JAXRSBODY = "java_jaxrsBody";
public static final String BINDING_NAME_REQUESTTEXT = "java_requestText";
public static final String BINDING_NAME_EXPIRE = "java_expire";
public static final String BINDING_NAME_EFFECTIVEPERSON = "java_effectivePerson";
// public static final String BINDING_NAME_PARAMETERS = "java_parameters";
// public static final String BINDING_NAME_ROUTES = "routes";
// public static final String BINDING_NAME_ROUTE = "routes";
// public static final String BINDING_NAME_ROUTE = "java_route";
public static final String BINDING_NAME_IDENTITY = "identity";
// public static final String BINDING_NAME_IDENTITY = "identity";
public static final String BINDING_NAME_JAXRSRESPONSE = "jaxrsResponse";
public static final String BINDING_NAME_JAXWSRESPONSE = "jaxwsResponse";
// public static final String BINDING_NAME_SERVICEVALUE = "serviceValue";
// public static final String BINDING_NAME_TASK = "task";
// public static final String BINDING_NAME_SERIAL = "serial";
// public static final String BINDING_NAME_PROCESS = "process";
public static final String BINDING_NAME_JAXRSBODY = "jaxrsBody";
public static final String BINDING_NAME_JAXRSHEAD = "jaxrsHead";
public static final String BINDING_NAME_SERVICEVALUE = "serviceValue";
public static final String BINDING_NAME_TASK = "task";
public static final String BINDING_NAME_EXPIRE = "expire";
public static final String BINDING_NAME_SERIAL = "serial";
public static final String BINDING_NAME_PROCESS = "process";
public static final String BINDING_NAME_DATA = "data";
public static final String BINDING_NAME_SERVICE_RESOURCES = "java_resources";
public static final String BINDING_NAME_SERVICE_EFFECTIVEPERSON = "java_effectivePerson";
......@@ -61,6 +64,8 @@ public class ScriptingFactory {
public static final String BINDING_NAME_SERVICE_REQUEST = "java_request";
public static final String BINDING_NAME_SERVICE_PARAMETERS = "java_parameters";
public static final String BINDING_NAME_SERVICE_PERSON = "person";
public static ScriptEngine newScriptEngine() {
return (new ScriptEngineManager()).getEngineByName(Config.SCRIPTING_ENGINE_NAME);
}
......
package com.x.bbs.entity;
import com.x.base.core.entity.AbstractPersistenceProperties;
import com.x.base.core.entity.JpaObject;
import com.x.base.core.entity.SliceJpaObject;
import com.x.base.core.entity.annotation.CheckPersist;
import com.x.base.core.entity.annotation.ContainerEntity;
import com.x.base.core.project.annotation.FieldDescribe;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Lob;
import javax.persistence.OrderColumn;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
import org.apache.openjpa.persistence.PersistentCollection;
import org.apache.openjpa.persistence.jdbc.ContainerTable;
import org.apache.openjpa.persistence.jdbc.ElementColumn;
import org.apache.openjpa.persistence.jdbc.ElementIndex;
import org.apache.openjpa.persistence.jdbc.Index;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
import com.x.base.core.entity.AbstractPersistenceProperties;
import com.x.base.core.entity.JpaObject;
import com.x.base.core.entity.SliceJpaObject;
import com.x.base.core.entity.annotation.CheckPersist;
import com.x.base.core.entity.annotation.ContainerEntity;
import com.x.base.core.project.annotation.FieldDescribe;
/**
* 论坛信息表
......
package com.x.bbs.entity;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.Lob;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
import org.apache.openjpa.persistence.PersistentCollection;
import org.apache.openjpa.persistence.jdbc.ContainerTable;
import org.apache.openjpa.persistence.jdbc.ElementColumn;
import org.apache.openjpa.persistence.jdbc.ElementIndex;
import org.apache.openjpa.persistence.jdbc.Index;
import org.apache.openjpa.persistence.jdbc.OrderColumn;
import com.x.base.core.entity.AbstractPersistenceProperties;
import com.x.base.core.entity.JpaObject;
import com.x.base.core.entity.SliceJpaObject;
import com.x.base.core.entity.annotation.CheckPersist;
import com.x.base.core.entity.annotation.ContainerEntity;
import com.x.base.core.project.annotation.FieldDescribe;
import org.apache.openjpa.persistence.PersistentCollection;
import org.apache.openjpa.persistence.jdbc.Index;
import org.apache.openjpa.persistence.jdbc.OrderColumn;
import org.apache.openjpa.persistence.jdbc.*;
import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
/**
* 版块信息表
......
......@@ -92,12 +92,12 @@ public class BBSSubjectAttachment extends StorageObject {
}
@Override
public String path() throws Exception {
public String path() {
if (null == this.sectionId) {
throw new Exception("sectionId can not be null.");
throw new IllegalStateException("sectionId can not be null.");
}
if (StringUtils.isEmpty(id)) {
throw new Exception("id can not be empty.");
throw new IllegalStateException("id can not be empty.");
}
String str = DateTools.format(this.getCreateTime(), DateTools.formatCompact_yyyyMMdd);
str += PATHSEPARATOR;
......
......@@ -120,18 +120,18 @@ public class FileInfo extends StorageObject {
}
@Override
public String path() throws Exception {
public String path() {
if (StringUtils.isEmpty(this.appId)) {
throw new Exception("appId can not be null.");
throw new IllegalStateException("appId can not be null.");
}
if (StringUtils.isEmpty(this.categoryId)) {
throw new Exception("categoryId can not be null.");
throw new IllegalStateException("categoryId can not be null.");
}
if (StringUtils.isEmpty(documentId)) {
throw new Exception("documentId can not be null.");
throw new IllegalStateException("documentId can not be null.");
}
if (StringUtils.isEmpty(id)) {
throw new Exception("id can not be empty.");
throw new IllegalStateException("id can not be empty.");
}
String str = DateTools.format(this.getCreateTime(), DateTools.formatCompact_yyyyMMdd);
str += PATHSEPARATOR;
......@@ -281,8 +281,9 @@ public class FileInfo extends StorageObject {
public static final String readUnitList_FIELDNAME = "readUnitList";
@FieldDescribe("可以访问的组织.")
@PersistentCollection(fetch = FetchType.EAGER)
@ContainerTable(name = TABLE + ContainerTableNameMiddle + readUnitList_FIELDNAME, joinIndex = @Index(name = TABLE
+ IndexNameMiddle + readUnitList_FIELDNAME + JoinIndexNameSuffix))
@ContainerTable(name = TABLE + ContainerTableNameMiddle
+ readUnitList_FIELDNAME, joinIndex = @Index(name = TABLE + IndexNameMiddle + readUnitList_FIELDNAME
+ JoinIndexNameSuffix))
@OrderColumn(name = ORDERCOLUMNCOLUMN)
@ElementColumn(length = length_255B, name = ColumnNamePrefix + readUnitList_FIELDNAME)
@ElementIndex(name = TABLE + IndexNameMiddle + readUnitList_FIELDNAME + ElementIndexNameSuffix)
......@@ -304,8 +305,9 @@ public class FileInfo extends StorageObject {
public static final String editUnitList_FIELDNAME = "editUnitList";
@FieldDescribe("可以修改的组织.")
@PersistentCollection(fetch = FetchType.EAGER)
@ContainerTable(name = TABLE + ContainerTableNameMiddle + editUnitList_FIELDNAME, joinIndex = @Index(name = TABLE
+ IndexNameMiddle + editUnitList_FIELDNAME + JoinIndexNameSuffix))
@ContainerTable(name = TABLE + ContainerTableNameMiddle
+ editUnitList_FIELDNAME, joinIndex = @Index(name = TABLE + IndexNameMiddle + editUnitList_FIELDNAME
+ JoinIndexNameSuffix))
@OrderColumn(name = ORDERCOLUMNCOLUMN)
@ElementColumn(length = length_255B, name = ColumnNamePrefix + editUnitList_FIELDNAME)
@ElementIndex(name = TABLE + IndexNameMiddle + editUnitList_FIELDNAME + ElementIndexNameSuffix)
......
......@@ -226,21 +226,21 @@ public class File extends StorageObject {
}
@Override
public String path() throws Exception {
public String path() {
if (null == this.person) {
throw new Exception("person can not be null.");
throw new IllegalStateException("person can not be null.");
}
if (StringUtils.isEmpty(id)) {
throw new Exception("id can not be empty.");
throw new IllegalStateException("id can not be empty.");
}
if (StringUtils.isEmpty(reference)) {
throw new Exception("reference can not be empty.");
throw new IllegalStateException("reference can not be empty.");
}
if (Objects.isNull(this.getCreateTime())) {
throw new Exception("createTime can not be empty.");
throw new IllegalStateException("createTime can not be empty.");
}
if (Objects.isNull(this.referenceType)) {
throw new Exception("referenceType can not be empty.");
throw new IllegalStateException("referenceType can not be empty.");
}
String str = this.person;
......
......@@ -87,10 +87,10 @@ public class OriginFile extends StorageObject {
@Override
public String path() throws Exception {
if (StringUtils.isEmpty(id)) {
throw new Exception("id can not be empty.");
throw new IllegalStateException("id can not be empty.");
}
if (StringUtils.isEmpty(type)) {
throw new Exception("type can not be empty.");
throw new IllegalStateException("type can not be empty.");
}
String str = this.type;
str += PATHSEPARATOR;
......
......@@ -28,7 +28,7 @@ import com.x.base.core.project.jaxrs.WrapBoolean;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.message.MessageConnector;
import com.x.base.core.project.script.ScriptFactory;
import com.x.base.core.project.scripting.ScriptingFactory;
import com.x.base.core.project.tools.ListTools;
import com.x.message.assemble.communicate.Business;
import com.x.message.assemble.communicate.ThisApplication;
......@@ -38,7 +38,7 @@ import com.x.message.core.entity.Message;
class ActionCreate extends BaseAction {
private static Logger logger = LoggerFactory.getLogger(ActionCreate.class);
private static ConcurrentMap<String,CompiledScript> scriptMap = new ConcurrentHashMap<>();
private static ConcurrentMap<String, CompiledScript> scriptMap = new ConcurrentHashMap<>();
ActionResult<Wo> execute(EffectivePerson effectivePerson, JsonElement jsonElement) throws Exception {
List<Message> messages = new ArrayList<>();
......@@ -47,10 +47,10 @@ class ActionCreate extends BaseAction {
Business business = new Business(emc);
Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
List<String> consumers = Config.messages().getConsumers(wi.getType());
Map<String,String> consumersV2 = Config.messages().getConsumersV2(wi.getType());
for(String consumer: consumers){
if(!consumersV2.containsKey(consumer)){
consumersV2.put(consumer,"");
Map<String, String> consumersV2 = Config.messages().getConsumersV2(wi.getType());
for (String consumer : consumers) {
if (!consumersV2.containsKey(consumer)) {
consumersV2.put(consumer, "");
}
}
Instant instant = this.instant(effectivePerson, business, wi, new ArrayList<>(consumersV2.keySet()));
......@@ -59,19 +59,18 @@ class ActionCreate extends BaseAction {
Wi cpwi = wi;
String func = consumersV2.get(consumer);
try {
if(StringUtils.isNoneBlank(func)){
cpwi = (Wi)BeanUtils.cloneBean(wi);
if (StringUtils.isNoneBlank(func)) {
cpwi = (Wi) BeanUtils.cloneBean(wi);
JsonObject body = cpwi.getBody().deepCopy().getAsJsonObject();
CompiledScript compiledScript = scriptMap.get(func);
if(compiledScript == null) {
if (compiledScript == null) {
String eval = Config.messageSendRuleScript();
if(StringUtils.isNotEmpty(eval)) {
eval = "function" + StringUtils.substringAfter(eval, "function") + " " + func + "();";
compiledScript = ScriptFactory.compile(eval);
if (StringUtils.isNotEmpty(eval)) {
compiledScript = ScriptingFactory.functionalizationCompile(eval);
scriptMap.put(func, compiledScript);
}
}
if(compiledScript != null) {
if (compiledScript != null) {
ScriptContext scriptContext = new SimpleScriptContext();
Bindings bindings = scriptContext.getBindings(ScriptContext.ENGINE_SCOPE);
bindings.put("body", body);
......@@ -81,7 +80,8 @@ class ActionCreate extends BaseAction {
if (o != null) {
if (o instanceof Boolean) {
if (!((Boolean) o).booleanValue()) {
logger.info("消息类型{}.{}的消息[{}]不满足发送条件,跳过...", wi.getType(), consumer, wi.getTitle());
logger.info("消息类型{}.{}的消息[{}]不满足发送条件,跳过...", wi.getType(), consumer,
wi.getTitle());
continue;
}
}
......@@ -190,7 +190,8 @@ class ActionCreate extends BaseAction {
}
break;
case MessageConnector.CONSUME_MPWEIXIN:
if (BooleanUtils.isTrue(Config.mPweixin().getEnable()) && BooleanUtils.isTrue(Config.mPweixin().getMessageEnable())) {
if (BooleanUtils.isTrue(Config.mPweixin().getEnable())
&& BooleanUtils.isTrue(Config.mPweixin().getMessageEnable())) {
ThisApplication.mpWeixinConsumeQueue.send(message);
}
break;
......
......@@ -30,14 +30,15 @@ import com.x.base.core.project.http.HttpToken;
import com.x.base.core.project.jaxrs.WoText;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.script.ScriptFactory;
import com.x.base.core.project.scripting.JsonScriptingExecutor;
import com.x.base.core.project.scripting.ScriptingFactory;
import com.x.organization.assemble.authentication.Business;
import com.x.organization.core.entity.OauthCode;
import com.x.organization.core.entity.Person;
class ActionInfo extends BaseAction {
private static Logger logger = LoggerFactory.getLogger(ActionInfo.class);
private static final Logger LOGGER = LoggerFactory.getLogger(ActionInfo.class);
public static final Pattern SCRIPT_PATTERN = Pattern.compile("^\\((.+?)\\)$");
......@@ -94,7 +95,7 @@ class ActionInfo extends BaseAction {
if (optional.isPresent()) {
return (CompiledScript) optional.get();
} else {
CompiledScript compiledScript = ScriptFactory.compile(ScriptFactory.functionalization(text));
CompiledScript compiledScript = ScriptingFactory.functionalizationCompile(text);
CacheManager.put(cache, cacheKey, compiledScript);
return compiledScript;
}
......@@ -105,8 +106,9 @@ class ActionInfo extends BaseAction {
if (Config.token().isInitialManager(oauthCode.getPerson())) {
InitialManager initialManager = Config.token().initialManagerInstance();
ScriptContext scriptContext = new SimpleScriptContext();
scriptContext.getBindings(ScriptContext.ENGINE_SCOPE).put("person", initialManager);
ScriptContext scriptContext = ScriptingFactory.scriptContextEvalInitialServiceScript();
scriptContext.getBindings(ScriptContext.ENGINE_SCOPE).put(ScriptingFactory.BINDING_NAME_SERVICE_PERSON,
initialManager);
for (String str : StringUtils.split(oauthCode.getScope(), ",")) {
String property = StringEscapeUtils.unescapeJson(oauth.getMapping().get(str));
......@@ -115,7 +117,7 @@ class ActionInfo extends BaseAction {
String value = "";
if (matcher.matches()) {
CompiledScript compiledScript = this.compliedScript(oauthCode.getClientId(), str, matcher.group(1));
value = ScriptFactory.asString(compiledScript.eval(scriptContext));
value = JsonScriptingExecutor.evalString(compiledScript, scriptContext);
} else {
value = Objects.toString(PropertyUtils.getProperty(initialManager, property));
}
......@@ -124,7 +126,8 @@ class ActionInfo extends BaseAction {
} else {
Person person = business.entityManagerContainer().find(oauthCode.getPerson(), Person.class);
ScriptContext scriptContext = new SimpleScriptContext();
scriptContext.getBindings(ScriptContext.ENGINE_SCOPE).put("person", person);
scriptContext.getBindings(ScriptContext.ENGINE_SCOPE).put(ScriptingFactory.BINDING_NAME_SERVICE_PERSON,
person);
for (String str : StringUtils.split(oauthCode.getScope(), ",")) {
String property = oauth.getMapping().get(str);
Pattern pattern = Pattern.compile(com.x.base.core.project.config.Person.REGULAREXPRESSION_SCRIPT);
......@@ -133,7 +136,7 @@ class ActionInfo extends BaseAction {
if (matcher.matches()) {
CompiledScript compiledScript = this.compliedScript(oauthCode.getClientId(), str,
StringEscapeUtils.unescapeJson(matcher.group(1)));
value = ScriptFactory.asString(compiledScript.eval(scriptContext));
value = JsonScriptingExecutor.evalString(compiledScript, scriptContext);
} else {
value = Objects.toString(PropertyUtils.getProperty(person, property));
}
......
......@@ -11,10 +11,9 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.script.Bindings;
import javax.script.CompiledScript;
import javax.script.ScriptContext;
import javax.script.SimpleScriptContext;
import com.x.base.core.project.cache.CacheManager;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.text.StringEscapeUtils;
import org.apache.poi.ss.usermodel.Cell;
......@@ -29,13 +28,16 @@ import com.x.base.core.container.factory.EntityManagerContainerFactory;
import com.x.base.core.entity.annotation.CheckPersistType;
import com.x.base.core.entity.type.GenderType;
import com.x.base.core.project.annotation.FieldDescribe;
import com.x.base.core.project.cache.Cache.CacheKey;
import com.x.base.core.project.cache.CacheManager;
import com.x.base.core.project.config.Config;
import com.x.base.core.project.gson.GsonPropertyObject;
import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.script.ScriptFactory;
import com.x.base.core.project.scripting.JsonScriptingExecutor;
import com.x.base.core.project.scripting.ScriptingFactory;
import com.x.base.core.project.tools.Crypto;
import com.x.base.core.project.tools.DateTools;
import com.x.base.core.project.tools.ListTools;
......@@ -46,7 +48,6 @@ import com.x.organization.core.entity.Identity;
import com.x.organization.core.entity.Person;
import com.x.organization.core.entity.PersonAttribute;
import com.x.organization.core.entity.Role;
import com.x.base.core.project.cache.Cache.CacheKey;
class ActionInput extends BaseAction {
......@@ -93,12 +94,13 @@ class ActionInput extends BaseAction {
Pattern pattern = Pattern.compile(com.x.base.core.project.config.Person.REGULAREXPRESSION_SCRIPT);
Matcher matcher = pattern.matcher(Config.person().getPassword());
if (matcher.matches()) {
String eval = ScriptFactory.functionalization(StringEscapeUtils.unescapeJson(matcher.group(1)));
ScriptContext scriptContext = new SimpleScriptContext();
CompiledScript cs = ScriptingFactory
.functionalizationCompile(StringEscapeUtils.unescapeJson(matcher.group(1)));
ScriptContext scriptContext = ScriptingFactory.scriptContextEvalInitialServiceScript();
Bindings bindings = scriptContext.getBindings(ScriptContext.ENGINE_SCOPE);
for (PersonItem o : people) {
bindings.put("person", o);
String pass = ScriptFactory.scriptEngine.eval(eval, scriptContext).toString();
bindings.put(ScriptingFactory.BINDING_NAME_SERVICE_PERSON, o);
String pass = JsonScriptingExecutor.evalString(cs, scriptContext);
o.setPassword(pass);
}
} else {
......@@ -204,11 +206,6 @@ class ActionInput extends BaseAction {
for (PersonItem o : people) {
for (PersonItem item : people) {
if (o != item) {
// if (StringUtils.equals(o.getName(), item.getName())) {
// this.setMemo(workbook, configurator, o, "姓名冲突.");
// validate = false;
// continue;
// }
if (StringUtils.equals(o.getMobile(), item.getMobile())) {
this.setMemo(workbook, configurator, o, "手机号冲突,本次导入中不唯一.");
validate = false;
......@@ -236,13 +233,6 @@ class ActionInput extends BaseAction {
}
if (validate) {
for (PersonItem o : people) {
// p = emc.flag(o.getName(), Person.class);
// if (null != p) {
// this.setMemo(workbook, configurator, o,
// "姓名: " + o.getName() + " 与已经存在用户: " + p.getName() + " 冲突.");
// validate = false;
// continue;
// }
p = emc.flag(o.getMobile(), Person.class);
if (null != p) {
this.setMemo(workbook, configurator, o,
......
......@@ -11,8 +11,8 @@ import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import javax.script.Bindings;
import javax.script.CompiledScript;
import javax.script.ScriptContext;
import javax.script.SimpleScriptContext;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
......@@ -25,7 +25,8 @@ import com.x.base.core.project.gson.GsonPropertyObject;
import com.x.base.core.project.http.EffectivePerson;
import com.x.base.core.project.jaxrs.StandardJaxrsAction;
import com.x.base.core.project.organization.OrganizationDefinition;
import com.x.base.core.project.script.ScriptFactory;
import com.x.base.core.project.scripting.JsonScriptingExecutor;
import com.x.base.core.project.scripting.ScriptingFactory;
import com.x.base.core.project.tools.ListTools;
import com.x.base.core.project.tools.StringTools;
import com.x.organization.assemble.control.Business;
......@@ -252,12 +253,12 @@ abstract class BaseAction extends StandardJaxrsAction {
Pattern pattern = Pattern.compile(com.x.base.core.project.config.Person.REGULAREXPRESSION_SCRIPT);
Matcher matcher = pattern.matcher(str);
if (matcher.matches()) {
String eval = ScriptFactory.functionalization(StringEscapeUtils.unescapeJson(matcher.group(1)));
ScriptContext scriptContext = new SimpleScriptContext();
CompiledScript cs = ScriptingFactory
.functionalizationCompile(StringEscapeUtils.unescapeJson(matcher.group(1)));
ScriptContext scriptContext = ScriptingFactory.scriptContextEvalInitialServiceScript();
Bindings bindings = scriptContext.getBindings(ScriptContext.ENGINE_SCOPE);
bindings.put("person", person);
Object o = ScriptFactory.scriptEngine.eval(eval, scriptContext);
return o.toString();
bindings.put(ScriptingFactory.BINDING_NAME_SERVICE_PERSON, person);
return JsonScriptingExecutor.evalString(cs, scriptContext);
} else {
return str;
}
......
package com.x.processplatform.assemble.surface.jaxrs.read;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
import com.x.base.core.container.EntityManagerContainer;
import com.x.base.core.container.factory.EntityManagerContainerFactory;
import com.x.base.core.entity.JpaObject;
import com.x.base.core.project.bean.WrapCopier;
import com.x.base.core.project.bean.WrapCopierFactory;
import com.x.base.core.project.exception.ExceptionAccessDenied;
import com.x.base.core.project.exception.ExceptionEntityNotExist;
import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.processplatform.assemble.surface.Business;
import com.x.processplatform.core.entity.content.Read;
import com.x.processplatform.core.entity.content.ReadCompleted;
class ActionListWithWorkOrWorkCompleted extends BaseAction {
private static final Logger LOGGER = LoggerFactory.getLogger(ActionListWithWorkOrWorkCompleted.class);
ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, String workOrWorkCompleted) throws Exception {
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
ActionResult<List<Wo>> result = new ActionResult<>();
Business business = new Business(emc);
if (!business.readableWithWorkOrWorkCompleted(effectivePerson, workOrWorkCompleted,
new ExceptionEntityNotExist(workOrWorkCompleted))) {
throw new ExceptionAccessDenied(effectivePerson);
}
final String job = business.job().findWithWorkOrWorkCompleted(workOrWorkCompleted);
List<Wo> wos = this.list(business, job);
wos = wos.stream().sorted(Comparator.comparing(Wo::getCreateTime)).collect(Collectors.toList());
result.setData(wos);
return result;
}
}
private List<Wo> list(Business business, String job) throws Exception {
List<Read> os = business.entityManagerContainer().listEqual(Read.class, ReadCompleted.job_FIELDNAME, job);
return Wo.copier.copy(os);
}
public static class Wo extends Read {
static final long serialVersionUID = 5610132069178497370L;
static WrapCopier<Read, Wo> copier = WrapCopierFactory.wo(Read.class, Wo.class, null,
JpaObject.FieldsInvisible);
}
}
\ No newline at end of file
......@@ -207,7 +207,7 @@ public class ReadAction extends StandardJaxrsAction {
asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
}
@JaxrsMethodDescribe(value = "统计当前用户在指定应用下的待,按流程分类.", action = ActionListCountWithProcess.class)
@JaxrsMethodDescribe(value = "统计当前用户在指定应用下的待,按流程分类.", action = ActionListCountWithProcess.class)
@GET
@Path("list/count/application/{applicationFlag}/process")
@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
......@@ -225,6 +225,25 @@ public class ReadAction extends StandardJaxrsAction {
asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
}
@JaxrsMethodDescribe(value = "根据工作或完成工作获取待阅.", action = ActionListWithWorkOrWorkCompleted.class)
@GET
@Path("list/workorworkcompleted/{workOrWorkCompleted}")
@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
@Consumes(MediaType.APPLICATION_JSON)
public void listWithWorkOrWorkCompleted(@Suspended final AsyncResponse asyncResponse,
@Context HttpServletRequest request,
@JaxrsParameterDescribe("工作或完成工作标识") @PathParam("workOrWorkCompleted") String workOrWorkCompleted) {
ActionResult<List<ActionListWithWorkOrWorkCompleted.Wo>> result = new ActionResult<>();
EffectivePerson effectivePerson = this.effectivePerson(request);
try {
result = new ActionListWithWorkOrWorkCompleted().execute(effectivePerson, workOrWorkCompleted);
} catch (Exception e) {
logger.error(e, effectivePerson, request, null);
result.error(e);
}
asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
}
@JaxrsMethodDescribe(value = "获取待阅内容,", action = ActionGet.class)
@GET
@Path("{id}")
......
......@@ -20,7 +20,7 @@ import com.x.processplatform.core.entity.content.ReadCompleted;
class ActionListWithWorkOrWorkCompleted extends BaseAction {
private static Logger logger = LoggerFactory.getLogger(ActionListWithWorkOrWorkCompleted.class);
private static final Logger LOGGER = LoggerFactory.getLogger(ActionListWithWorkOrWorkCompleted.class);
ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, String workOrWorkCompleted) throws Exception {
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
......@@ -47,8 +47,7 @@ class ActionListWithWorkOrWorkCompleted extends BaseAction {
private List<Wo> list(Business business, String job) throws Exception {
List<ReadCompleted> os = business.entityManagerContainer().listEqual(ReadCompleted.class,
ReadCompleted.job_FIELDNAME, job);
List<Wo> wos = Wo.copier.copy(os);
return wos;
return Wo.copier.copy(os);
}
public static class Wo extends ReadCompleted {
......
......@@ -108,22 +108,21 @@ public class Attachment extends StorageObject {
this.setActivityName(work.getActivityName());
}
/** 更新运行方法 */
@Override
public String path() throws Exception {
if(StringUtils.isNotEmpty(fromPath)){
public String path() {
if (StringUtils.isNotEmpty(fromPath)) {
return fromPath;
}
if (null == this.workCreateTime) {
throw new Exception("workCreateTime can not be null.");
throw new IllegalStateException("workCreateTime can not be null.");
}
if (StringUtils.isEmpty(job)) {
throw new Exception("job can not be empty.");
throw new IllegalStateException("job can not be empty.");
}
if (StringUtils.isEmpty(id)) {
throw new Exception("id can not be empty.");
throw new IllegalStateException("id can not be empty.");
}
String str = DateTools.format(workCreateTime, DateTools.formatCompact_yyyyMMdd);
if (BooleanUtils.isTrue(this.getDeepPath())) {
......@@ -141,18 +140,18 @@ public class Attachment extends StorageObject {
}
@Override
public String path(String operate) throws Exception {
if(StringUtils.isNotEmpty(fromPath) && !DELETE_OPERATE.equals(operate)){
public String path(String operate) {
if (StringUtils.isNotEmpty(fromPath) && !DELETE_OPERATE.equals(operate)) {
return fromPath;
}
if (null == this.workCreateTime) {
throw new Exception("workCreateTime can not be null.");
throw new IllegalStateException("workCreateTime can not be null.");
}
if (StringUtils.isEmpty(job)) {
throw new Exception("job can not be empty.");
throw new IllegalStateException("job can not be empty.");
}
if (StringUtils.isEmpty(id)) {
throw new Exception("id can not be empty.");
throw new IllegalStateException("id can not be empty.");
}
String str = DateTools.format(workCreateTime, DateTools.formatCompact_yyyyMMdd);
if (BooleanUtils.isTrue(this.getDeepPath())) {
......@@ -393,8 +392,9 @@ public class Attachment extends StorageObject {
public static final String readUnitList_FIELDNAME = "readUnitList";
@FieldDescribe("可以访问的组织.")
@PersistentCollection(fetch = FetchType.EAGER)
@ContainerTable(name = TABLE + ContainerTableNameMiddle + readUnitList_FIELDNAME, joinIndex = @Index(name = TABLE
+ IndexNameMiddle + readUnitList_FIELDNAME + JoinIndexNameSuffix))
@ContainerTable(name = TABLE + ContainerTableNameMiddle
+ readUnitList_FIELDNAME, joinIndex = @Index(name = TABLE + IndexNameMiddle + readUnitList_FIELDNAME
+ JoinIndexNameSuffix))
@OrderColumn(name = ORDERCOLUMNCOLUMN)
@ElementColumn(length = length_255B, name = ColumnNamePrefix + readUnitList_FIELDNAME)
@ElementIndex(name = TABLE + IndexNameMiddle + readUnitList_FIELDNAME + ElementIndexNameSuffix)
......@@ -416,8 +416,9 @@ public class Attachment extends StorageObject {
public static final String editUnitList_FIELDNAME = "editUnitList";
@FieldDescribe("可以修改的组织.")
@PersistentCollection(fetch = FetchType.EAGER)
@ContainerTable(name = TABLE + ContainerTableNameMiddle + editUnitList_FIELDNAME, joinIndex = @Index(name = TABLE
+ IndexNameMiddle + editUnitList_FIELDNAME + JoinIndexNameSuffix))
@ContainerTable(name = TABLE + ContainerTableNameMiddle
+ editUnitList_FIELDNAME, joinIndex = @Index(name = TABLE + IndexNameMiddle + editUnitList_FIELDNAME
+ JoinIndexNameSuffix))
@OrderColumn(name = ORDERCOLUMNCOLUMN)
@ElementColumn(length = length_255B, name = ColumnNamePrefix + editUnitList_FIELDNAME)
@ElementIndex(name = TABLE + IndexNameMiddle + editUnitList_FIELDNAME + ElementIndexNameSuffix)
......@@ -464,8 +465,9 @@ public class Attachment extends StorageObject {
public static final String divisionList_FIELDNAME = "divisionList";
@FieldDescribe("分组.")
@PersistentCollection(fetch = FetchType.EAGER)
@ContainerTable(name = TABLE + ContainerTableNameMiddle + divisionList_FIELDNAME, joinIndex = @Index(name = TABLE
+ IndexNameMiddle + divisionList_FIELDNAME + JoinIndexNameSuffix))
@ContainerTable(name = TABLE + ContainerTableNameMiddle
+ divisionList_FIELDNAME, joinIndex = @Index(name = TABLE + IndexNameMiddle + divisionList_FIELDNAME
+ JoinIndexNameSuffix))
@OrderColumn(name = ORDERCOLUMNCOLUMN)
@ElementColumn(length = length_255B, name = ColumnNamePrefix + divisionList_FIELDNAME)
@ElementIndex(name = TABLE + IndexNameMiddle + divisionList_FIELDNAME + ElementIndexNameSuffix)
......
......@@ -13,15 +13,9 @@ public class WorkProperties extends JsonProperties {
private static final long serialVersionUID = -62236689373222398L;
@FieldDescribe("强制待办处理人")
// properties的泛型在前后都必须申明类型!!!!LinkedHashMap<String, String>()这样的写法是对的.
// properties的泛型在前后都必须申明类型!!!!LinkedHashMap<String, String>()这样的写法是对的.
// properties的泛型在前后都必须申明类型!!!!LinkedHashMap<String, String>()这样的写法是对的.
private List<String> manualForceTaskIdentityList = new ArrayList<String>();
@FieldDescribe("授权对象")
// properties的泛型在前后都必须申明类型!!!!LinkedHashMap<String, String>()这样的写法是对的.
// properties的泛型在前后都必须申明类型!!!!LinkedHashMap<String, String>()这样的写法是对的.
// properties的泛型在前后都必须申明类型!!!!LinkedHashMap<String, String>()这样的写法是对的.
private Map<String, String> manualEmpowerMap = new LinkedHashMap<String, String>();
@FieldDescribe("服务回调值")
......
......@@ -341,13 +341,13 @@ public class Process extends SliceJpaObject {
@CheckPersist(allowEmpty = true)
private String expireScript;
public static final String expireScriptText_FIELDNAME = "expireScriptText";
@FieldDescribe("过期时间设定脚本文本.")
@Lob
@Basic(fetch = FetchType.EAGER)
@Column(length = JpaObject.length_1M, name = ColumnNamePrefix + expireScriptText_FIELDNAME)
@CheckPersist(allowEmpty = true)
private String expireScriptText;
// public static final String expireScriptText_FIELDNAME = "expireScriptText";
// @FieldDescribe("过期时间设定脚本文本.")
// @Lob
// @Basic(fetch = FetchType.EAGER)
// @Column(length = JpaObject.length_1M, name = ColumnNamePrefix + expireScriptText_FIELDNAME)
// @CheckPersist(allowEmpty = true)
// private String expireScriptText;
public static final String checkDraft_FIELDNAME = "checkDraft";
@FieldDescribe("是否进行无内容的草稿删除校验.")
......@@ -708,13 +708,13 @@ public class Process extends SliceJpaObject {
this.expireScript = expireScript;
}
public String getExpireScriptText() {
return expireScriptText;
}
public void setExpireScriptText(String expireScriptText) {
this.expireScriptText = expireScriptText;
}
// public String getExpireScriptText() {
// return expireScriptText;
// }
//
// public void setExpireScriptText(String expireScriptText) {
// this.expireScriptText = expireScriptText;
// }
public List<String> getControllerList() {
return controllerList;
......
......@@ -81,9 +81,9 @@ public class SerialBuilder {
List<SerialTextureItem> list = XGsonBuilder.instance().fromJson(data, collectionType);
if (!list.isEmpty()) {
ScriptContext scriptContext = aeiObjects.scriptContext();
Bindings bindings = scriptContext.getBindings(ScriptContext.ENGINE_SCOPE);
bindings.put(ScriptingFactory.BINDING_NAME_SERIAL, this.serial);
bindings.put(ScriptingFactory.BINDING_NAME_PROCESS, this.process);
// Bindings bindings = scriptContext.getBindings(ScriptContext.ENGINE_SCOPE);
// bindings.put(ScriptingFactory.BINDING_NAME_SERIAL, this.serial);
// bindings.put(ScriptingFactory.BINDING_NAME_PROCESS, this.process);
for (SerialTextureItem o : list) {
if ((!StringUtils.equalsIgnoreCase(o.getKey(), "number"))
&& StringUtils.isNotEmpty(o.getScript())) {
......
......@@ -14,6 +14,7 @@ import com.x.base.core.project.gson.XGsonBuilder;
import com.x.processplatform.core.entity.content.Attachment;
import com.x.processplatform.core.entity.content.Read;
import com.x.processplatform.core.entity.content.ReadCompleted;
import com.x.processplatform.core.entity.content.Record;
import com.x.processplatform.core.entity.content.Review;
import com.x.processplatform.core.entity.content.Task;
import com.x.processplatform.core.entity.content.TaskCompleted;
......@@ -32,6 +33,7 @@ public class WorkContext {
private AeiObjects aeiObjects = null;
private Task task;
private TaskCompleted taskCompleted;
private Route route;
public void bindTask(Task task) {
this.task = task;
......@@ -41,6 +43,10 @@ public class WorkContext {
this.taskCompleted = taskCompleted;
}
public void bindRoute(Route route) {
this.route = route;
}
public WorkContext(AeiObjects aeiObjects) throws Exception {
this.aeiObjects = aeiObjects;
this.business = aeiObjects.business();
......@@ -53,21 +59,10 @@ public class WorkContext {
this.task = task;
}
// public WorkContext(Business business, Work work, Activity activity, Task task) {
// this.business = business;
// this.work = work;
// this.activity = activity;
// this.gson = XGsonBuilder.instance();
// this.task = task;
// }
//
// public WorkContext(Business business, Work work, Activity activity, TaskCompleted taskCompleted) {
// this.business = business;
// this.work = work;
// this.activity = activity;
// this.gson = XGsonBuilder.instance();
// this.taskCompleted = taskCompleted;
// }
public WorkContext(AeiObjects aeiObjects, TaskCompleted taskCompleted) throws Exception {
this(aeiObjects);
this.taskCompleted = taskCompleted;
}
public String getWork() {
return gson.toJson(work);
......@@ -92,6 +87,21 @@ public class WorkContext {
}
}
public String getRecordList() throws Exception {
try {
List<Record> list = new ArrayList<>();
if (null != this.aeiObjects) {
list.addAll(aeiObjects.getRecords());
list.addAll(aeiObjects.getCreateRecords());
}
return gson.toJson(
list.stream().filter(o -> StringUtils.equals(o.getWork(), this.aeiObjects.getWork().getId()))
.collect(Collectors.toList()));
} catch (Exception e) {
throw new IllegalStateException("getRecordList error.", e);
}
}
public String getRouteList() {
try {
List<Route> list = new ArrayList<>();
......@@ -104,6 +114,18 @@ public class WorkContext {
}
}
/**
*
* @return 当前注入的路由
* @throws Exception
*/
public String getRoute() {
if (null != route) {
return gson.toJson(route);
}
return "";
}
public void setTitle(String title) throws Exception {
business.entityManagerContainer().beginTransaction(Work.class);
work.setTitle(title);
......
......@@ -37,12 +37,12 @@ public class WorkDataHelper {
public WorkDataHelper(EntityManagerContainer emc, Work work) throws Exception {
if ((null == emc) || (null == work)) {
throw new Exception("create instance error.");
throw new IllegalStateException("create instance error.");
}
this.job = work.getJob();
this.distributeFactor = work.getDistributeFactor();
if (StringUtils.isEmpty(this.job)) {
throw new Exception("can not create DataHelper job is empty.");
throw new IllegalStateException("can not create DataHelper job is empty.");
}
this.emc = emc;
this.converter = new DataItemConverter<>(Item.class);
......@@ -65,7 +65,7 @@ public class WorkDataHelper {
this.items = this.load();
}
private List<Item> load() throws Exception {
private List<Item> load() throws Exception {
EntityManager em = emc.get(Item.class);
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Item> cq = cb.createQuery(Item.class);
......
......@@ -4,6 +4,16 @@ public class WrapScriptObject {
private String value;
private String type;
public void type(String type) {
this.type = type;
}
public String type() {
return this.type;
}
public String get() {
return this.value;
}
......
......@@ -98,47 +98,58 @@ public class ElementFactory extends AbstractFactory {
return t;
}
// public Activity getActivity(String id) throws Exception {
// Activity activity = null;
// activity = this.get(id, ActivityType.manual);
// if (null == activity) {
// activity = this.get(id, ActivityType.begin);
// if (null == activity) {
// activity = this.get(id, ActivityType.cancel);
// if (null == activity) {
// activity = this.get(id, ActivityType.choice);
// if (null == activity) {
// activity = this.get(id, ActivityType.delay);
// if (null == activity) {
// activity = this.get(id, ActivityType.embed);
// if (null == activity) {
// activity = this.get(id, ActivityType.split);
// if (null == activity) {
// activity = this.get(id, ActivityType.invoke);
// if (null == activity) {
// activity = this.get(id, ActivityType.agent);
// if (null == activity) {
// activity = this.get(id, ActivityType.merge);
// if (null == activity) {
// activity = this.get(id, ActivityType.parallel);
// if (null == activity) {
// activity = this.get(id, ActivityType.service);
// if (null == activity) {
// activity = this.get(id, ActivityType.end);
// }
// }
// }
// }
// }
// }
// }
// }
// }
// }
// }
// }
// return activity;
// }
public Activity getActivity(String id) throws Exception {
Activity activity = null;
activity = this.get(id, ActivityType.manual);
if (null != activity) {
return activity;
}
activity = this.get(id, ActivityType.begin);
if (null != activity) {
return activity;
}
activity = this.get(id, ActivityType.cancel);
if (null != activity) {
return activity;
}
activity = this.get(id, ActivityType.choice);
if (null != activity) {
return activity;
}
activity = this.get(id, ActivityType.delay);
if (null != activity) {
return activity;
}
activity = this.get(id, ActivityType.embed);
if (null != activity) {
return activity;
}
activity = this.get(id, ActivityType.split);
if (null != activity) {
return activity;
}
activity = this.get(id, ActivityType.invoke);
if (null != activity) {
return activity;
}
activity = this.get(id, ActivityType.agent);
if (null != activity) {
return activity;
}
activity = this.get(id, ActivityType.merge);
if (null != activity) {
return activity;
}
activity = this.get(id, ActivityType.parallel);
if (null != activity) {
return activity;
}
activity = this.get(id, ActivityType.service);
if (null != activity) {
return activity;
}
return this.get(id, ActivityType.end);
}
public Activity get(String id, ActivityType activityType) throws Exception {
switch (activityType) {
......@@ -407,10 +418,9 @@ public class ElementFactory extends AbstractFactory {
p = cb.and(p, cb.or(cb.equal(root.get(Mapping_.process), process), cb.equal(root.get(Mapping_.process), ""),
cb.isNull(root.get(Mapping_.process))));
List<Mapping> os = em.createQuery(cq.where(p)).getResultList();
os.stream().collect(Collectors.groupingBy(o -> {
return o.getApplication() + o.getTableName();
})).forEach((k, v) -> list
.add(v.stream().filter(i -> StringUtils.isNotEmpty(i.getProcess())).findFirst().orElse(v.get(0))));
os.stream().collect(Collectors.groupingBy(o -> o.getApplication() + o.getTableName()))
.forEach((k, v) -> list.add(v.stream().filter(i -> StringUtils.isNotEmpty(i.getProcess()))
.findFirst().orElse(v.get(0))));
CacheManager.put(cacheCategory, cacheKey, list);
}
return list;
......@@ -651,10 +661,10 @@ public class ElementFactory extends AbstractFactory {
scriptName = Objects.toString(PropertyUtils.getProperty(o, Process.afterEndScript_FIELDNAME));
scriptText = Objects.toString(PropertyUtils.getProperty(o, Process.afterEndScriptText_FIELDNAME));
break;
case Business.EVENT_PROCESSEXPIRE:
scriptName = Objects.toString(PropertyUtils.getProperty(o, Process.expireScript_FIELDNAME));
scriptText = Objects.toString(PropertyUtils.getProperty(o, Process.expireScriptText_FIELDNAME));
break;
// case Business.EVENT_PROCESSEXPIRE:
// scriptName = Objects.toString(PropertyUtils.getProperty(o, Process.expireScript_FIELDNAME));
// scriptText = Objects.toString(PropertyUtils.getProperty(o, Process.expireScriptText_FIELDNAME));
// break;
default:
break;
}
......
......@@ -7,10 +7,7 @@ import java.util.Map;
import java.util.concurrent.Callable;
import java.util.concurrent.TimeUnit;
import javax.script.Bindings;
import javax.script.CompiledScript;
import javax.script.ScriptContext;
import javax.script.SimpleScriptContext;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.BooleanUtils;
......@@ -26,52 +23,36 @@ import com.x.base.core.project.http.EffectivePerson;
import com.x.base.core.project.jaxrs.WrapStringList;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.script.ScriptFactory;
import com.x.base.core.project.scripting.JsonScriptingExecutor;
import com.x.base.core.project.tools.ListTools;
import com.x.base.core.project.webservices.WebservicesClient;
import com.x.processplatform.core.entity.content.Data;
import com.x.processplatform.core.entity.content.Task;
import com.x.processplatform.core.entity.content.TaskCompleted;
import com.x.processplatform.core.entity.content.Work;
import com.x.processplatform.core.entity.element.Activity;
import com.x.processplatform.core.entity.element.ActivityType;
import com.x.processplatform.core.entity.element.Manual;
import com.x.processplatform.core.entity.element.Process;
import com.x.processplatform.core.entity.element.Route;
import com.x.processplatform.core.express.ProcessingAttributes;
import com.x.processplatform.core.express.service.processing.jaxrs.task.WrapAppend;
import com.x.processplatform.service.processing.ApplicationDictHelper;
import com.x.processplatform.service.processing.Business;
import com.x.processplatform.service.processing.ThisApplication;
import com.x.processplatform.service.processing.WorkContext;
import com.x.processplatform.service.processing.WorkDataHelper;
import com.x.processplatform.service.processing.configurator.ProcessingConfigurator;
import com.x.processplatform.service.processing.processor.AeiObjects;
import com.x.processplatform.service.processing.processor.manual.TaskIdentities;
import com.x.processplatform.service.processing.processor.manual.TaskIdentity;
class ActionAppend extends BaseAction {
private static Logger logger = LoggerFactory.getLogger(ActionAppend.class);
private static final Logger LOGGER = LoggerFactory.getLogger(ActionAppend.class);
ActionResult<Wo> execute(EffectivePerson effectivePerson, String id, JsonElement jsonElement) throws Exception {
final Wi wi = this.convertToWrapIn(jsonElement, Wi.class);
String executorSeed = null;
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
Task task = emc.fetch(id, Task.class, ListTools.toList(Task.job_FIELDNAME));
if (null == task) {
throw new ExceptionEntityNotExist(id, Task.class);
}
executorSeed = task.getJob();
}
String executorSeed = initJob(id);
Callable<ActionResult<Wo>> callable = new Callable<ActionResult<Wo>>() {
public ActionResult<Wo> call() throws Exception {
ActionResult<Wo> result = new ActionResult<>();
Wo wo = new Wo();
String workId = "";
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
Business business = new Business(emc);
Task task = emc.find(id, Task.class);
......@@ -82,109 +63,128 @@ class ActionAppend extends BaseAction {
if (null == work) {
throw new ExceptionEntityNotExist(task.getWork(), Work.class);
}
workId = work.getId();
Manual manual = (Manual) business.element().get(task.getActivity(), ActivityType.manual);
Route route = getRoute(business, task, manual);
List<String> identities = new ArrayList<>();
if (ListTools.isNotEmpty(wi.getIdentityList())) {
identities.addAll(wi.getIdentityList());
}
if (route != null) {
if (StringUtils.equals(route.getType(), Route.TYPE_APPENDTASK)
&& StringUtils.equals(manual.getId(), route.getActivity())) {
if (StringUtils.equals(route.getAppendTaskIdentityType(),
Route.APPENDTASKIDENTITYTYPE_SCRIPT)) {
Data data = new Data();
WorkDataHelper workDataHelper = new WorkDataHelper(business.entityManagerContainer(),
work);
data = workDataHelper.get();
ScriptContext scriptContext = scriptContext(business, work, data, manual, task);
CompiledScript compiledScript = business.element().getCompiledScript(
task.getApplication(), route, Business.EVENT_ROUTEAPPENDTASKIDENTITY);
Object objectValue = compiledScript.eval(scriptContext);
List<String> os = ScriptFactory.asDistinguishedNameList(objectValue);
if (ListTools.isNotEmpty(os)) {
identities.addAll(os);
}
}
}
if (ifEvalScript(manual, route)) {
evalScript(business, identities, manual, route, work, task);
}
Process process = business.element().get(task.getProcess(), Process.class);
identities = business.organization().identity().list(ListTools.trim(identities, true, true));
TaskIdentities taskIdentities = empower(business, process, task, identities);
identities = taskIdentities.identities();
if (ListTools.isNotEmpty(identities)) {
// List<TaskCompleted> os = emc.listEqualAndInAndNotEqual(TaskCompleted.class,
// TaskCompleted.activityToken_FIELDNAME, work.getActivityToken(),
// TaskCompleted.identity_FIELDNAME, identities, TaskCompleted.joinInquire_FIELDNAME,
// true);
// 同一环节办理后再转交给已经有已办的人员,需要将已办置为joinInquire=false
List<TaskCompleted> os = emc.listEqualAndInAndNotEqual(TaskCompleted.class,
TaskCompleted.activityToken_FIELDNAME, work.getActivityToken(),
TaskCompleted.identity_FIELDNAME, identities, TaskCompleted.joinInquire_FIELDNAME,
false);
if (ListTools.isNotEmpty(os)) {
emc.beginTransaction(TaskCompleted.class);
for (TaskCompleted o : os) {
o.setJoinInquire(false);
o.setProcessingType(TaskCompleted.PROCESSINGTYPE_BEAPPENDEDTASK);
}
}
// 后面还要合并,clone一个新实例
wo.getValueList().addAll(new ArrayList<>(identities));
identities = ListUtils.sum(ListUtils.subtract(work.getManualTaskIdentityList(),
ListTools.toList(task.getIdentity())), identities);
identities = business.organization().identity().list(ListTools.trim(identities, true, true));
emc.beginTransaction(Work.class);
work.setManualTaskIdentityList(identities);
for (TaskIdentity taskIdentity : taskIdentities) {
if (BooleanUtils.isNotTrue(taskIdentity.getIgnoreEmpower())
&& StringUtils.isNotEmpty(taskIdentity.getFromIdentity())) {
work.getProperties().getManualEmpowerMap().put(taskIdentity.getIdentity(),
taskIdentity.getFromIdentity());
}
}
//properties中的集合对象需要重新new对象set进去,这样jpa才会更新数据
Map<String, String> manualEmpowerMap = new LinkedHashMap<String, String>();
manualEmpowerMap.putAll(work.getProperties().getManualEmpowerMap());
work.getProperties().setManualEmpowerMap(manualEmpowerMap);
// 转派后设置过期为空
// emc.beginTransaction(Task.class);
// task.setExpired(false);
// task.setExpireTime(null);
emc.commit();
}
Wo wo = new Wo();
clean(wo, emc, business, task, work, identities, taskIdentities);
result.setData(wo);
}
return result;
}
};
return ProcessPlatformExecutorFactory.get(executorSeed).submit(callable).get(300, TimeUnit.SECONDS);
}
public static ScriptContext scriptContext(Business business, Work work, Data data, Activity activity, Task task)
throws Exception {
ScriptContext scriptContext = new SimpleScriptContext();
Bindings bindings = scriptContext.getBindings(ScriptContext.ENGINE_SCOPE);
WorkContext workContext = new WorkContext(business, work, activity, task);
bindings.put(ScriptFactory.BINDING_NAME_WORKCONTEXT, workContext);
bindings.put(ScriptFactory.BINDING_NAME_DATA, data);
bindings.put(ScriptFactory.BINDING_NAME_ORGANIZATION, business.organization());
bindings.put(ScriptFactory.BINDING_NAME_WEBSERVICESCLIENT, new WebservicesClient());
bindings.put(ScriptFactory.BINDING_NAME_DICTIONARY,
new ApplicationDictHelper(business.entityManagerContainer(), work.getApplication()));
bindings.put(ScriptFactory.BINDING_NAME_APPLICATIONS, ThisApplication.context().applications());
// 重新创建的ScriptContext是需要初始化的
ScriptFactory.initialScriptText().eval(scriptContext);
return scriptContext;
private String initJob(String id) throws Exception {
String executorSeed;
try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
Task task = emc.fetch(id, Task.class, ListTools.toList(Task.job_FIELDNAME));
if (null == task) {
throw new ExceptionEntityNotExist(id, Task.class);
}
executorSeed = task.getJob();
}
return executorSeed;
}
// public class CallableExecute implements Callable<ActionResult<Wo>> {
//
// public ActionResult<Wo> call() throws Exception {
// ActionResult<Wo> result = new ActionResult<>();
// Wo wo = new Wo();
// try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
// Business business = new Business(emc);
// Task task = emc.find(id, Task.class);
// if (null == task) {
// throw new ExceptionEntityNotExist(id, Task.class);
// }
// Work work = emc.find(task.getWork(), Work.class);
// if (null == work) {
// throw new ExceptionEntityNotExist(task.getWork(), Work.class);
// }
// Manual manual = (Manual) business.element().get(task.getActivity(), ActivityType.manual);
// Route route = getRoute(business, task, manual);
// List<String> identities = new ArrayList<>();
// if (ListTools.isNotEmpty(wi.getIdentityList())) {
// identities.addAll(wi.getIdentityList());
// }
// if (ifEvalScript(manual, route)) {
// evalScript(business, identities, manual, route, work, task);
// }
// Process process = business.element().get(task.getProcess(), Process.class);
// identities = business.organization().identity().list(ListTools.trim(identities, true, true));
// TaskIdentities taskIdentities = empower(business, process, task, identities);
// identities = taskIdentities.identities();
// if (ListTools.isNotEmpty(identities)) {
// List<TaskCompleted> os = emc.listEqualAndInAndNotEqual(TaskCompleted.class,
// TaskCompleted.activityToken_FIELDNAME, work.getActivityToken(),
// TaskCompleted.identity_FIELDNAME, identities, TaskCompleted.joinInquire_FIELDNAME, false);
// if (ListTools.isNotEmpty(os)) {
// emc.beginTransaction(TaskCompleted.class);
// for (TaskCompleted o : os) {
// o.setJoinInquire(false);
// o.setProcessingType(TaskCompleted.PROCESSINGTYPE_BEAPPENDEDTASK);
// }
// }
// wo.getValueList().addAll(new ArrayList<>(identities));
// identities = ListUtils.sum(
// ListUtils.subtract(work.getManualTaskIdentityList(), ListTools.toList(task.getIdentity())),
// identities);
// identities = business.organization().identity().list(ListTools.trim(identities, true, true));
// emc.beginTransaction(Work.class);
// work.setManualTaskIdentityList(identities);
// for (TaskIdentity taskIdentity : taskIdentities) {
// if (BooleanUtils.isNotTrue(taskIdentity.getIgnoreEmpower())
// && StringUtils.isNotEmpty(taskIdentity.getFromIdentity())) {
// work.getProperties().getManualEmpowerMap().put(taskIdentity.getIdentity(),
// taskIdentity.getFromIdentity());
// }
// }
// // properties中的集合对象需要重新new对象set进去,这样jpa才会更新数据
// Map<String, String> manualEmpowerMap = new LinkedHashMap<>();
// manualEmpowerMap.putAll(work.getProperties().getManualEmpowerMap());
// work.getProperties().setManualEmpowerMap(manualEmpowerMap);
// emc.commit();
// }
// result.setData(wo);
// }
// return result;
// }
// }
// public static ScriptContext scriptContext(Business business, Work work, Data data, Activity activity, Task task)
// throws Exception {
// ScriptContext scriptContext = new SimpleScriptContext();
// Bindings bindings = scriptContext.getBindings(ScriptContext.ENGINE_SCOPE);
// WorkContext workContext = new WorkContext(business, work, activity, task);
// bindings.put(ScriptingFactory.BINDING_NAME_WORKCONTEXT, workContext);
// bindings.put(ScriptingFactory.BINDING_NAME_DATA, data);
// bindings.put(ScriptFactory.BINDING_NAME_ORGANIZATION, business.organization());
// bindings.put(ScriptFactory.BINDING_NAME_WEBSERVICESCLIENT, new WebservicesClient());
// bindings.put(ScriptFactory.BINDING_NAME_DICTIONARY,
// new ApplicationDictHelper(business.entityManagerContainer(), work.getApplication()));
// bindings.put(ScriptFactory.BINDING_NAME_APPLICATIONS, ThisApplication.context().applications());
// // 重新创建的ScriptContext是需要初始化的
// ScriptFactory.initialScriptText().eval(scriptContext);
// return scriptContext;
// }
private TaskIdentities empower(Business business, Process process, Task task, List<String> identities)
throws Exception {
TaskIdentities taskIdentities = new TaskIdentities();
......@@ -203,11 +203,63 @@ class ActionAppend extends BaseAction {
return null;
}
private void evalScript(Business business, List<String> identities, Manual manual, Route route, Work work,
Task task) throws Exception {
AeiObjects aeiObjects = new AeiObjects(business, work, manual, new ProcessingConfigurator(),
new ProcessingAttributes());
CompiledScript compiledScript = business.element().getCompiledScript(task.getApplication(), route,
Business.EVENT_ROUTEAPPENDTASKIDENTITY);
JsonScriptingExecutor.evalDistinguishedNames(compiledScript, aeiObjects.scriptContext(), identities::addAll);
}
private boolean ifEvalScript(Manual manual, Route route) {
return (route != null) && StringUtils.equals(route.getType(), Route.TYPE_APPENDTASK)
&& StringUtils.equals(manual.getId(), route.getActivity())
&& StringUtils.equals(route.getAppendTaskIdentityType(), Route.APPENDTASKIDENTITYTYPE_SCRIPT);
}
private void clean(Wo wo, EntityManagerContainer emc, Business business, Task task, Work work,
List<String> identities, TaskIdentities taskIdentities) throws Exception {
List<TaskCompleted> os = emc.listEqualAndInAndNotEqual(TaskCompleted.class,
TaskCompleted.activityToken_FIELDNAME, work.getActivityToken(), TaskCompleted.identity_FIELDNAME,
identities, TaskCompleted.joinInquire_FIELDNAME, false);
if (ListTools.isNotEmpty(os)) {
emc.beginTransaction(TaskCompleted.class);
for (TaskCompleted o : os) {
o.setJoinInquire(false);
o.setProcessingType(TaskCompleted.PROCESSINGTYPE_BEAPPENDEDTASK);
}
}
wo.getValueList().addAll(new ArrayList<>(identities));
identities = ListUtils.sum(
ListUtils.subtract(work.getManualTaskIdentityList(), ListTools.toList(task.getIdentity())), identities);
identities = business.organization().identity().list(ListTools.trim(identities, true, true));
emc.beginTransaction(Work.class);
work.setManualTaskIdentityList(identities);
for (TaskIdentity taskIdentity : taskIdentities) {
if (BooleanUtils.isNotTrue(taskIdentity.getIgnoreEmpower())
&& StringUtils.isNotEmpty(taskIdentity.getFromIdentity())) {
work.getProperties().getManualEmpowerMap().put(taskIdentity.getIdentity(),
taskIdentity.getFromIdentity());
}
}
// properties中的集合对象需要重新new对象set进去,这样jpa才会更新数据
Map<String, String> manualEmpowerMap = new LinkedHashMap<>();
manualEmpowerMap.putAll(work.getProperties().getManualEmpowerMap());
work.getProperties().setManualEmpowerMap(manualEmpowerMap);
emc.commit();
}
public static class Wi extends WrapAppend {
private static final long serialVersionUID = -3293122515327864483L;
}
public static class Wo extends WrapStringList {
private static final long serialVersionUID = 6457473592503074552L;
}
}
......@@ -25,7 +25,8 @@ import com.x.base.core.project.http.EffectivePerson;
import com.x.base.core.project.jaxrs.WoId;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.script.ScriptFactory;
import com.x.base.core.project.scripting.JsonScriptingExecutor;
import com.x.base.core.project.scripting.ScriptingFactory;
import com.x.base.core.project.tools.ListTools;
import com.x.processplatform.core.entity.content.Task;
import com.x.processplatform.core.entity.content.TaskCompleted;
......@@ -86,13 +87,12 @@ class ActionProcessing extends BaseAction {
AeiObjects aeiObjects = new AeiObjects(business, work, manual, new ProcessingConfigurator(),
new ProcessingAttributes());
ScriptContext scriptContext = aeiObjects.scriptContext();
((WorkContext) scriptContext.getAttribute(ScriptFactory.BINDING_NAME_WORKCONTEXT))
((WorkContext) scriptContext.getAttribute(ScriptingFactory.BINDING_NAME_WORKCONTEXT))
.bindTask(task);
WorkDataHelper workDataHelper = new WorkDataHelper(business.entityManagerContainer(), work);
CompiledScript cs = null;
cs = business.element().getCompiledScript(task.getApplication(), manual,
CompiledScript cs = business.element().getCompiledScript(task.getApplication(), manual,
Business.EVENT_MANUALBEFORETASK);
cs.eval(scriptContext);
JsonScriptingExecutor.eval(cs, scriptContext);
workDataHelper.update(aeiObjects.getData());
business.entityManagerContainer().commit();
}
......@@ -111,12 +111,11 @@ class ActionProcessing extends BaseAction {
AeiObjects aeiObjects = new AeiObjects(business, work, manual, new ProcessingConfigurator(),
new ProcessingAttributes());
ScriptContext scriptContext = aeiObjects.scriptContext();
((WorkContext) scriptContext.getAttribute(ScriptFactory.BINDING_NAME_WORKCONTEXT))
((WorkContext) scriptContext.getAttribute(ScriptingFactory.BINDING_NAME_WORKCONTEXT))
.bindTaskCompleted(taskCompleted);
CompiledScript cs = null;
cs = business.element().getCompiledScript(task.getApplication(), manual,
CompiledScript cs = business.element().getCompiledScript(task.getApplication(), manual,
Business.EVENT_MANUALAFTERTASK);
cs.eval(scriptContext);
JsonScriptingExecutor.eval(cs, scriptContext);
}
}
}
......@@ -142,9 +141,7 @@ class ActionProcessing extends BaseAction {
emc.beginTransaction(Task.class);
// 将所有前面的已办lastest标记false
emc.listEqualAndEqual(TaskCompleted.class, TaskCompleted.job_FIELDNAME, task.getJob(),
TaskCompleted.person_FIELDNAME, task.getPerson()).forEach(o -> {
o.setLatest(false);
});
TaskCompleted.person_FIELDNAME, task.getPerson()).forEach(o -> o.setLatest(false));
Date now = new Date();
Long duration = Config.workTime().betweenMinutes(task.getStartTime(), now);
TaskCompleted taskCompleted = new TaskCompleted(task, wi.getProcessingType(), now, duration);
......
......@@ -87,7 +87,7 @@ class ActionWill extends BaseAction {
if (null != route) {
wo.setDefaultRouteName(route.getName());
wo.setNextActivityType(route.getActivityType());
Activity nextActivity = business.element().getActivity(route.getActivity());
Activity nextActivity = business.element().get(route.getActivity(), route.getActivityType());
if (null != nextActivity) {
wo.setNextActivityName(nextActivity.getName());
wo.setNextActivityAlias(nextActivity.getAlias());
......
......@@ -6,6 +6,7 @@ import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.TimeUnit;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
import com.google.gson.JsonElement;
......@@ -62,7 +63,7 @@ class ActionAddSplit extends BaseAction {
throw new ExceptionEntityNotExist(id, Work.class);
}
if (!work.getSplitting()) {
if (BooleanUtils.isFalse(work.getSplitting())) {
throw new ExceptionNotSplit(work.getId());
}
if (ListTools.isEmpty(wi.getSplitValueList())) {
......@@ -89,7 +90,7 @@ class ActionAddSplit extends BaseAction {
throw new ExceptionInvalidFromWorkLog(wi.getWorkLog());
}
Activity activity = business.element().getActivity(from.getFromActivity());
Activity activity = business.element().get(from.getFromActivity(), from.getArrivedActivityType());
for (String splitValue : wi.getSplitValueList()) {
......
package com.x.processplatform.service.processing.processor;
import java.lang.reflect.InvocationTargetException;
import java.util.Comparator;
import java.util.Date;
......@@ -28,7 +29,7 @@ import com.x.processplatform.service.processing.Business;
*/
public abstract class AbstractBaseProcessor {
private static Logger logger = LoggerFactory.getLogger(AbstractBaseProcessor.class);
private static final Logger LOGGER = LoggerFactory.getLogger(AbstractBaseProcessor.class);
private EntityManagerContainer entityManagerContainer;
......@@ -49,35 +50,33 @@ public abstract class AbstractBaseProcessor {
return this.business;
}
protected static Integer MAX_ERROR_RETRY = 5;
protected static String BAS = "beforeArriveScript";
protected static String BAST = "beforeArriveScriptText";
protected static String AAS = "afterArriveScript";
protected static String AAST = "afterArriveScriptText";
protected static String BES = "beforeExecuteScript";
protected static String BEST = "beforeExecuteScriptText";
protected static String AES = "afterExecuteScript";
protected static String AEST = "afterExecuteScriptText";
protected static String BIS = "beforeInquireScript";
protected static String BIST = "beforeInquireScriptText";
protected static String AIS = "afterInquireScript";
protected static String AIST = "afterInquireScriptText";
protected static final Integer MAX_ERROR_RETRY = 5;
protected static final String BAS = "beforeArriveScript";
protected static final String BAST = "beforeArriveScriptText";
protected static final String AAS = "afterArriveScript";
protected static final String AAST = "afterArriveScriptText";
protected static final String BES = "beforeExecuteScript";
protected static final String BEST = "beforeExecuteScriptText";
protected static final String AES = "afterExecuteScript";
protected static final String AEST = "afterExecuteScriptText";
protected static final String BIS = "beforeInquireScript";
protected static final String BIST = "beforeInquireScriptText";
protected static final String AIS = "afterInquireScript";
protected static final String AIST = "afterInquireScriptText";
protected void arriveActivity(AeiObjects aeiObjects) throws Exception {
String token = aeiObjects.getWork().getActivityToken();
if (aeiObjects.getActivityProcessingConfigurator().getChangeActivityToken()) {
if (BooleanUtils.isTrue(aeiObjects.getActivityProcessingConfigurator().getChangeActivityToken())) {
token = StringTools.uniqueToken();
}
Date date = new Date();
if (aeiObjects.getActivityProcessingConfigurator().getStampArrivedWorkLog()) {
/* 需要创建到达的工作日志 */
if (ListTools.isNotEmpty(aeiObjects.getWorkLogs())) {
/* 如果为空的话那么就是新建的工作,不需要连接到达日志 */
this.stampArriveWorkLog(aeiObjects, token, date);
}
if (BooleanUtils.isTrue(aeiObjects.getActivityProcessingConfigurator().getStampArrivedWorkLog())
&& ListTools.isNotEmpty(aeiObjects.getWorkLogs())) {
/* 如果为空的话那么就是新建的工作,不需要连接到达日志 */
this.stampArriveWorkLog(aeiObjects, token, date);
}
if (aeiObjects.getActivityProcessingConfigurator().getCreateFromWorkLog()) {
if (BooleanUtils.isTrue(aeiObjects.getActivityProcessingConfigurator().getCreateFromWorkLog())) {
this.createFromWorkLog(aeiObjects, token, date);
}
aeiObjects.getWork().setActivityToken(token);
......@@ -88,11 +87,6 @@ public abstract class AbstractBaseProcessor {
aeiObjects.getWork().setActivityDescription(aeiObjects.getActivity().getDescription());
aeiObjects.getWork().setActivityType(aeiObjects.getActivity().getActivityType());
aeiObjects.getWork().setWorkStatus(WorkStatus.processing);
// aeiObjects.getWork().setDestinationActivity(null);
// aeiObjects.getWork().setDestinationActivityType(null);
// aeiObjects.getWork().setDestinationRoute(null);
// aeiObjects.getWork().setDestinationRouteName(null);
// aeiObjects.getWork().setErrorRetry(0);
if (StringUtils.isNotEmpty(aeiObjects.getActivity().getForm())) {
/** 检查表单存在 */
Form form = this.business().element().get(aeiObjects.getActivity().getForm(), Form.class);
......@@ -130,7 +124,6 @@ public abstract class AbstractBaseProcessor {
.sorted(Comparator.comparing(WorkLog::getCreateTime, Comparator.nullsLast(Date::compareTo)))
.findFirst().orElse(null);
if (null != oldest) {
// @Todo
workLog = new WorkLog();
oldest.copyTo(workLog, JpaObject.ID_DISTRIBUTEFACTOR);
workLog.setArrivedActivity(aeiObjects.getActivity().getId());
......@@ -148,98 +141,116 @@ public abstract class AbstractBaseProcessor {
aeiObjects.getCreateWorkLogs().add(workLog);
} else {
/* 这样的情况应该是不可能的 */
throw new Exception("不能发生的情况,没有找到任何WorkLog");
throw new IllegalStateException("不能发生的情况,没有找到任何WorkLog");
}
}
return workLog;
}
protected Work copyWork(Work work) throws Exception {
protected Work copyWork(Work work) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
Work copy = new Work();
work.copyTo(copy, JpaObject.ID_DISTRIBUTEFACTOR);
return copy;
}
protected boolean hasBeforeArriveScript(Process process, Activity activity) throws Exception {
protected boolean hasBeforeArriveScript(Process process, Activity activity)
throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
return this.hasBeforeArriveScript(process) || this.hasBeforeArriveScript(activity);
}
protected boolean hasBeforeArriveScript(Process process) throws Exception {
protected boolean hasBeforeArriveScript(Process process)
throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
return StringUtils.isNotEmpty(process.get(BAS, String.class))
|| StringUtils.isNotEmpty(process.get(BAST, String.class));
}
protected boolean hasBeforeArriveScript(Activity activity) throws Exception {
protected boolean hasBeforeArriveScript(Activity activity)
throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
return StringUtils.isNotEmpty(activity.get(BAS, String.class))
|| StringUtils.isNotEmpty(activity.get(BAST, String.class));
}
protected boolean hasAfterArriveScript(Process process, Activity activity) throws Exception {
protected boolean hasAfterArriveScript(Process process, Activity activity)
throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
return this.hasAfterArriveScript(process) || this.hasAfterArriveScript(activity);
}
protected boolean hasAfterArriveScript(Process process) throws Exception {
protected boolean hasAfterArriveScript(Process process)
throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
return StringUtils.isNotEmpty(process.get(AAS, String.class))
|| StringUtils.isNotEmpty(process.get(AAST, String.class));
}
protected boolean hasAfterArriveScript(Activity activity) throws Exception {
protected boolean hasAfterArriveScript(Activity activity)
throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
return StringUtils.isNotEmpty(activity.get(AAS, String.class))
|| StringUtils.isNotEmpty(activity.get(AAST, String.class));
}
protected boolean hasBeforeExecuteScript(Process process, Activity activity) throws Exception {
protected boolean hasBeforeExecuteScript(Process process, Activity activity)
throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
return this.hasBeforeExecuteScript(process) || this.hasBeforeExecuteScript(activity);
}
protected boolean hasBeforeExecuteScript(Process process) throws Exception {
protected boolean hasBeforeExecuteScript(Process process)
throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
return StringUtils.isNotEmpty(process.get(BES, String.class))
|| StringUtils.isNotEmpty(process.get(BEST, String.class));
}
protected boolean hasBeforeExecuteScript(Activity activity) throws Exception {
protected boolean hasBeforeExecuteScript(Activity activity)
throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
return StringUtils.isNotEmpty(activity.get(BES, String.class))
|| StringUtils.isNotEmpty(activity.get(BEST, String.class));
}
protected boolean hasAfterExecuteScript(Process process, Activity activity) throws Exception {
protected boolean hasAfterExecuteScript(Process process, Activity activity)
throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
return this.hasAfterExecuteScript(process) || this.hasAfterExecuteScript(activity);
}
protected boolean hasAfterExecuteScript(Process process) throws Exception {
protected boolean hasAfterExecuteScript(Process process)
throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
return StringUtils.isNotEmpty(process.get(AES, String.class))
|| StringUtils.isNotEmpty(process.get(AEST, String.class));
}
protected boolean hasAfterExecuteScript(Activity activity) throws Exception {
protected boolean hasAfterExecuteScript(Activity activity)
throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
return StringUtils.isNotEmpty(activity.get(AES, String.class))
|| StringUtils.isNotEmpty(activity.get(AEST, String.class));
}
protected boolean hasBeforeInquireScript(Process process, Activity activity) throws Exception {
protected boolean hasBeforeInquireScript(Process process, Activity activity)
throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
return this.hasBeforeInquireScript(process) || this.hasBeforeInquireScript(activity);
}
protected boolean hasBeforeInquireScript(Process process) throws Exception {
protected boolean hasBeforeInquireScript(Process process)
throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
return StringUtils.isNotEmpty(process.get(BIS, String.class))
|| StringUtils.isNotEmpty(process.get(BIST, String.class));
}
protected boolean hasBeforeInquireScript(Activity activity) throws Exception {
protected boolean hasBeforeInquireScript(Activity activity)
throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
return StringUtils.isNotEmpty(activity.get(BIS, String.class))
|| StringUtils.isNotEmpty(activity.get(BIST, String.class));
}
protected boolean hasAfterInquireScript(Process process, Activity activity) throws Exception {
protected boolean hasAfterInquireScript(Process process, Activity activity)
throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
return this.hasAfterInquireScript(process) || this.hasAfterInquireScript(activity);
}
protected boolean hasAfterInquireScript(Process process) throws Exception {
protected boolean hasAfterInquireScript(Process process)
throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
return StringUtils.isNotEmpty(process.get(AIS, String.class))
|| StringUtils.isNotEmpty(process.get(AIST, String.class));
}
protected boolean hasAfterInquireScript(Activity activity) throws Exception {
protected boolean hasAfterInquireScript(Activity activity)
throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
return StringUtils.isNotEmpty(activity.get(AIS, String.class))
|| StringUtils.isNotEmpty(activity.get(AIST, String.class));
}
......
......@@ -14,6 +14,7 @@ import org.apache.commons.lang3.StringUtils;
import com.x.base.core.container.EntityManagerContainer;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.scripting.JsonScriptingExecutor;
import com.x.base.core.project.tools.ListTools;
import com.x.processplatform.core.entity.content.Read;
import com.x.processplatform.core.entity.content.Review;
......@@ -245,39 +246,36 @@ public abstract class AbstractProcessor extends AbstractBaseProcessor {
}
private void callBeforeExecuteScript(AeiObjects aeiObjects) throws Exception {
if (aeiObjects.getActivityProcessingConfigurator().getCallBeforeExecuteScript()) {
if (this.hasBeforeExecuteScript(aeiObjects.getProcess(), aeiObjects.getActivity())) {
ScriptContext scriptContext = aeiObjects.scriptContext();
CompiledScript cs = null;
if (this.hasBeforeExecuteScript(aeiObjects.getProcess())) {
cs = aeiObjects.business().element().getCompiledScript(aeiObjects.getApplication().getId(),
aeiObjects.getProcess(), Business.EVENT_BEFOREEXECUTE);
cs.eval(scriptContext);
}
if (this.hasBeforeExecuteScript(aeiObjects.getActivity())) {
cs = aeiObjects.business().element().getCompiledScript(aeiObjects.getApplication().getId(),
aeiObjects.getActivity(), Business.EVENT_BEFOREEXECUTE);
cs.eval(scriptContext);
}
if (BooleanUtils.isTrue(aeiObjects.getActivityProcessingConfigurator().getCallBeforeExecuteScript())
&& this.hasBeforeExecuteScript(aeiObjects.getProcess(), aeiObjects.getActivity())) {
ScriptContext scriptContext = aeiObjects.scriptContext();
CompiledScript cs = null;
if (this.hasBeforeExecuteScript(aeiObjects.getProcess())) {
cs = aeiObjects.business().element().getCompiledScript(aeiObjects.getApplication().getId(),
aeiObjects.getProcess(), Business.EVENT_BEFOREEXECUTE);
}
if (this.hasBeforeExecuteScript(aeiObjects.getActivity())) {
cs = aeiObjects.business().element().getCompiledScript(aeiObjects.getApplication().getId(),
aeiObjects.getActivity(), Business.EVENT_BEFOREEXECUTE);
}
JsonScriptingExecutor.eval(cs, scriptContext);
}
}
private void callAfterExecuteScript(AeiObjects aeiObjects) throws Exception {
if (aeiObjects.getActivityProcessingConfigurator().getCallAfterExecuteScript()) {
if (this.hasAfterExecuteScript(aeiObjects.getProcess(), aeiObjects.getActivity())) {
ScriptContext scriptContext = aeiObjects.scriptContext();
CompiledScript cs = null;
if (this.hasAfterExecuteScript(aeiObjects.getProcess())) {
cs = aeiObjects.business().element().getCompiledScript(aeiObjects.getApplication().getId(),
aeiObjects.getProcess(), Business.EVENT_AFTEREXECUTE);
cs.eval(scriptContext);
}
if (this.hasAfterExecuteScript(aeiObjects.getActivity())) {
cs = aeiObjects.business().element().getCompiledScript(aeiObjects.getApplication().getId(),
aeiObjects.getActivity(), Business.EVENT_AFTEREXECUTE);
cs.eval(scriptContext);
}
if (BooleanUtils.isTrue(aeiObjects.getActivityProcessingConfigurator().getCallAfterExecuteScript())
&& this.hasAfterExecuteScript(aeiObjects.getProcess(), aeiObjects.getActivity())) {
ScriptContext scriptContext = aeiObjects.scriptContext();
CompiledScript cs = null;
if (this.hasAfterExecuteScript(aeiObjects.getProcess())) {
cs = aeiObjects.business().element().getCompiledScript(aeiObjects.getApplication().getId(),
aeiObjects.getProcess(), Business.EVENT_AFTEREXECUTE);
cs.eval(scriptContext);
}
if (this.hasAfterExecuteScript(aeiObjects.getActivity())) {
cs = aeiObjects.business().element().getCompiledScript(aeiObjects.getApplication().getId(),
aeiObjects.getActivity(), Business.EVENT_AFTEREXECUTE);
cs.eval(scriptContext);
}
}
}
......@@ -356,39 +354,36 @@ public abstract class AbstractProcessor extends AbstractBaseProcessor {
}
private void callBeforeInquireScript(AeiObjects aeiObjects) throws Exception {
if (aeiObjects.getActivityProcessingConfigurator().getCallBeforeInquireScript()) {
if (this.hasBeforeInquireScript(aeiObjects.getProcess(), aeiObjects.getActivity())) {
ScriptContext scriptContext = aeiObjects.scriptContext();
CompiledScript cs = null;
if (this.hasBeforeInquireScript(aeiObjects.getProcess())) {
cs = aeiObjects.business().element().getCompiledScript(aeiObjects.getApplication().getId(),
aeiObjects.getProcess(), Business.EVENT_BEFOREINQUIRE);
cs.eval(scriptContext);
}
if (this.hasBeforeInquireScript(aeiObjects.getActivity())) {
cs = aeiObjects.business().element().getCompiledScript(aeiObjects.getApplication().getId(),
aeiObjects.getActivity(), Business.EVENT_BEFOREINQUIRE);
cs.eval(scriptContext);
}
if (BooleanUtils.isTrue(aeiObjects.getActivityProcessingConfigurator().getCallBeforeInquireScript())
&& this.hasBeforeInquireScript(aeiObjects.getProcess(), aeiObjects.getActivity())) {
ScriptContext scriptContext = aeiObjects.scriptContext();
CompiledScript cs = null;
if (this.hasBeforeInquireScript(aeiObjects.getProcess())) {
cs = aeiObjects.business().element().getCompiledScript(aeiObjects.getApplication().getId(),
aeiObjects.getProcess(), Business.EVENT_BEFOREINQUIRE);
}
if (this.hasBeforeInquireScript(aeiObjects.getActivity())) {
cs = aeiObjects.business().element().getCompiledScript(aeiObjects.getApplication().getId(),
aeiObjects.getActivity(), Business.EVENT_BEFOREINQUIRE);
}
JsonScriptingExecutor.eval(cs, scriptContext);
}
}
private void callAfterInquireScript(AeiObjects aeiObjects) throws Exception {
if (aeiObjects.getActivityProcessingConfigurator().getCallAfterInquireScript()) {
if (this.hasAfterInquireScript(aeiObjects.getProcess(), aeiObjects.getActivity())) {
ScriptContext scriptContext = aeiObjects.scriptContext();
CompiledScript cs = null;
if (this.hasAfterInquireScript(aeiObjects.getProcess())) {
cs = aeiObjects.business().element().getCompiledScript(aeiObjects.getApplication().getId(),
aeiObjects.getProcess(), Business.EVENT_AFTERINQUIRE);
cs.eval(scriptContext);
}
if (this.hasAfterInquireScript(aeiObjects.getActivity())) {
cs = aeiObjects.business().element().getCompiledScript(aeiObjects.getApplication().getId(),
aeiObjects.getActivity(), Business.EVENT_AFTERINQUIRE);
cs.eval(scriptContext);
}
if (BooleanUtils.isTrue(aeiObjects.getActivityProcessingConfigurator().getCallAfterInquireScript())
&& this.hasAfterInquireScript(aeiObjects.getProcess(), aeiObjects.getActivity())) {
ScriptContext scriptContext = aeiObjects.scriptContext();
CompiledScript cs = null;
if (this.hasAfterInquireScript(aeiObjects.getProcess())) {
cs = aeiObjects.business().element().getCompiledScript(aeiObjects.getApplication().getId(),
aeiObjects.getProcess(), Business.EVENT_AFTERINQUIRE);
cs.eval(scriptContext);
}
if (this.hasAfterInquireScript(aeiObjects.getActivity())) {
cs = aeiObjects.business().element().getCompiledScript(aeiObjects.getApplication().getId(),
aeiObjects.getActivity(), Business.EVENT_AFTERINQUIRE);
cs.eval(scriptContext);
}
}
}
......
......@@ -10,7 +10,6 @@ import java.util.stream.Collectors;
import javax.script.Bindings;
import javax.script.ScriptContext;
import javax.script.SimpleScriptContext;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.BooleanUtils;
......@@ -27,9 +26,11 @@ import com.x.base.core.project.gson.GsonPropertyObject;
import com.x.base.core.project.gson.XGsonBuilder;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.script.ScriptFactory;
import com.x.base.core.project.script.AbstractResources;
import com.x.base.core.project.scripting.ScriptingFactory;
import com.x.base.core.project.tools.ListTools;
import com.x.base.core.project.webservices.WebservicesClient;
import com.x.organization.core.express.Organization;
import com.x.processplatform.core.entity.content.Attachment;
import com.x.processplatform.core.entity.content.Data;
import com.x.processplatform.core.entity.content.DocumentVersion;
......@@ -53,7 +54,6 @@ import com.x.processplatform.core.entity.element.Route;
import com.x.processplatform.core.entity.element.util.MappingFactory;
import com.x.processplatform.core.entity.element.util.ProjectionFactory;
import com.x.processplatform.core.express.ProcessingAttributes;
import com.x.processplatform.service.processing.ApplicationDictHelper;
import com.x.processplatform.service.processing.Business;
import com.x.processplatform.service.processing.MessageFactory;
import com.x.processplatform.service.processing.ThisApplication;
......@@ -66,7 +66,7 @@ public class AeiObjects extends GsonPropertyObject {
private static final long serialVersionUID = -4125441813647193068L;
private static Logger logger = LoggerFactory.getLogger(AeiObjects.class);
private static final Logger LOGGER = LoggerFactory.getLogger(AeiObjects.class);
public AeiObjects(Business business, Work work, Activity activity, ProcessingConfigurator processingConfigurator,
ProcessingAttributes processingAttributes) throws Exception {
......@@ -194,9 +194,13 @@ public class AeiObjects extends GsonPropertyObject {
.orElse(null);
}
public WorkDataHelper getWorkDataHelper() throws Exception {
if (null == this.workDataHelper) {
this.workDataHelper = new WorkDataHelper(business.entityManagerContainer(), work);
public WorkDataHelper getWorkDataHelper() {
try {
if (null == this.workDataHelper) {
this.workDataHelper = new WorkDataHelper(business.entityManagerContainer(), work);
}
} catch (Exception e) {
LOGGER.error(e);
}
return this.workDataHelper;
}
......@@ -560,7 +564,7 @@ public class AeiObjects extends GsonPropertyObject {
this.executeProjection();
this.executeMapping();
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
this.commitWork();
this.commitWorkCompleted();
......@@ -788,7 +792,7 @@ public class AeiObjects extends GsonPropertyObject {
try {
this.business.entityManagerContainer().persist(o, CheckPersistType.all);
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
});
// 更新工作
......@@ -796,7 +800,7 @@ public class AeiObjects extends GsonPropertyObject {
try {
this.business.entityManagerContainer().check(o, CheckPersistType.all);
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
});
// 删除工作
......@@ -808,7 +812,7 @@ public class AeiObjects extends GsonPropertyObject {
this.business.entityManagerContainer().remove(obj, CheckRemoveType.all);
}
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
});
}
......@@ -823,7 +827,7 @@ public class AeiObjects extends GsonPropertyObject {
try {
this.business.entityManagerContainer().persist(o, CheckPersistType.all);
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
});
// 更新完成工作
......@@ -831,7 +835,7 @@ public class AeiObjects extends GsonPropertyObject {
try {
this.business.entityManagerContainer().check(o, CheckPersistType.all);
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
});
// 删除完成工作
......@@ -843,7 +847,7 @@ public class AeiObjects extends GsonPropertyObject {
this.business.entityManagerContainer().remove(obj, CheckRemoveType.all);
}
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
});
}
......@@ -858,7 +862,7 @@ public class AeiObjects extends GsonPropertyObject {
try {
this.business.entityManagerContainer().persist(o, CheckPersistType.all);
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
});
// 更新工作日志
......@@ -866,7 +870,7 @@ public class AeiObjects extends GsonPropertyObject {
try {
this.business.entityManagerContainer().check(o, CheckPersistType.all);
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
});
// 删除工作日志
......@@ -878,7 +882,7 @@ public class AeiObjects extends GsonPropertyObject {
this.business.entityManagerContainer().remove(obj, CheckRemoveType.all);
}
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
});
}
......@@ -913,7 +917,7 @@ public class AeiObjects extends GsonPropertyObject {
// 创建待办的参阅
this.createReview(new Review(this.getWork(), o.getPerson()));
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
});
}
......@@ -923,7 +927,7 @@ public class AeiObjects extends GsonPropertyObject {
try {
this.business.entityManagerContainer().check(o, CheckPersistType.all);
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
});
}
......@@ -937,7 +941,7 @@ public class AeiObjects extends GsonPropertyObject {
this.business.entityManagerContainer().remove(obj, CheckRemoveType.all);
}
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
});
}
......@@ -965,7 +969,7 @@ public class AeiObjects extends GsonPropertyObject {
// 创建已办的参阅
this.createReview(new Review(this.getWork(), o.getPerson()));
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
});
}
......@@ -975,7 +979,7 @@ public class AeiObjects extends GsonPropertyObject {
try {
this.business.entityManagerContainer().check(o, CheckPersistType.all);
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
});
}
......@@ -997,7 +1001,7 @@ public class AeiObjects extends GsonPropertyObject {
.findFirst().ifPresent(q -> q.setLatest(true));
}
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
});
}
......@@ -1041,7 +1045,7 @@ public class AeiObjects extends GsonPropertyObject {
o.copyTo(existOptional.get(), JpaObject.FieldsUnmodify);
}
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
}));
......@@ -1052,7 +1056,7 @@ public class AeiObjects extends GsonPropertyObject {
try {
this.business.entityManagerContainer().check(o, CheckPersistType.all);
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
});
}
......@@ -1066,7 +1070,7 @@ public class AeiObjects extends GsonPropertyObject {
this.business.entityManagerContainer().remove(obj, CheckRemoveType.all);
}
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
});
}
......@@ -1101,7 +1105,7 @@ public class AeiObjects extends GsonPropertyObject {
o.copyTo(optional.get(), JpaObject.FieldsUnmodify);
}
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
});
}
......@@ -1111,7 +1115,7 @@ public class AeiObjects extends GsonPropertyObject {
try {
this.business.entityManagerContainer().check(o, CheckPersistType.all);
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
});
}
......@@ -1125,7 +1129,7 @@ public class AeiObjects extends GsonPropertyObject {
this.business.entityManagerContainer().remove(obj, CheckRemoveType.all);
}
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
});
}
......@@ -1164,7 +1168,7 @@ public class AeiObjects extends GsonPropertyObject {
o.copyTo(existOptional.get(), JpaObject.FieldsUnmodify);
}
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
}));
}
......@@ -1174,7 +1178,7 @@ public class AeiObjects extends GsonPropertyObject {
try {
this.business.entityManagerContainer().check(o, CheckPersistType.all);
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
});
}
......@@ -1188,7 +1192,7 @@ public class AeiObjects extends GsonPropertyObject {
this.business.entityManagerContainer().remove(obj, CheckRemoveType.all);
}
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
});
}
......@@ -1203,7 +1207,7 @@ public class AeiObjects extends GsonPropertyObject {
try {
this.business.entityManagerContainer().persist(o, CheckPersistType.all);
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
});
// 更新版式文件
......@@ -1211,7 +1215,7 @@ public class AeiObjects extends GsonPropertyObject {
try {
this.business.entityManagerContainer().check(o, CheckPersistType.all);
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
});
// 删除版式文件
......@@ -1222,7 +1226,7 @@ public class AeiObjects extends GsonPropertyObject {
this.business.entityManagerContainer().remove(obj, CheckRemoveType.all);
}
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
});
}
......@@ -1236,14 +1240,14 @@ public class AeiObjects extends GsonPropertyObject {
try {
this.business.entityManagerContainer().persist(o, CheckPersistType.all);
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
});
this.getUpdateSnaps().stream().forEach(o -> {
try {
this.business.entityManagerContainer().check(o, CheckPersistType.all);
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
});
this.getDeleteSnaps().stream().forEach(o -> {
......@@ -1253,7 +1257,7 @@ public class AeiObjects extends GsonPropertyObject {
this.business.entityManagerContainer().remove(obj, CheckRemoveType.all);
}
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
});
}
......@@ -1268,7 +1272,7 @@ public class AeiObjects extends GsonPropertyObject {
try {
this.business.entityManagerContainer().persist(o, CheckPersistType.all);
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
});
// 删除记录
......@@ -1276,7 +1280,7 @@ public class AeiObjects extends GsonPropertyObject {
try {
this.business.entityManagerContainer().check(o, CheckPersistType.all);
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
});
this.getDeleteRecords().stream().forEach(o -> {
......@@ -1287,7 +1291,7 @@ public class AeiObjects extends GsonPropertyObject {
this.business.entityManagerContainer().remove(obj, CheckRemoveType.all);
}
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
});
}
......@@ -1310,7 +1314,7 @@ public class AeiObjects extends GsonPropertyObject {
this.business.entityManagerContainer().remove(obj, CheckRemoveType.all);
}
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
});
}
......@@ -1325,11 +1329,10 @@ public class AeiObjects extends GsonPropertyObject {
} else {
dataToUpdate.setWork(this.getWork());
}
// this.getWorkDataHelper().update(data);
this.getWorkDataHelper().update(dataToUpdate);
}
private void commitDynamicEntity() throws Exception {
private void commitDynamicEntity() {
if (ListTools.isNotEmpty(this.getCreateDynamicEntities())
|| ListTools.isNotEmpty(this.getDeleteDynamicEntities())
|| ListTools.isNotEmpty(this.getUpdateDynamicEntities())) {
......@@ -1339,7 +1342,7 @@ public class AeiObjects extends GsonPropertyObject {
this.business.entityManagerContainer().beginTransaction(o.getClass());
this.business.entityManagerContainer().persist(o, CheckPersistType.all);
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
});
// 更新自定义对象
......@@ -1348,7 +1351,7 @@ public class AeiObjects extends GsonPropertyObject {
this.business.entityManagerContainer().beginTransaction(o.getClass());
this.business.entityManagerContainer().check(o, CheckPersistType.all);
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
});
// 删除自定义对象
......@@ -1357,7 +1360,7 @@ public class AeiObjects extends GsonPropertyObject {
this.business.entityManagerContainer().beginTransaction(o.getClass());
this.business.entityManagerContainer().remove(o, CheckRemoveType.all);
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
});
......@@ -1487,7 +1490,7 @@ public class AeiObjects extends GsonPropertyObject {
MessageFactory.read_create(o);
}
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
}));
}
......@@ -1526,7 +1529,7 @@ public class AeiObjects extends GsonPropertyObject {
MessageFactory.review_create(o);
}
} catch (Exception e) {
logger.error(e);
LOGGER.error(e);
}
}));
}
......@@ -1615,22 +1618,32 @@ public class AeiObjects extends GsonPropertyObject {
return deleteDynamicEntities;
}
public static class Resources extends AbstractResources {
private Organization organization;
public Organization getOrganization() {
return organization;
}
public void setOrganization(Organization organization) {
this.organization = organization;
}
}
public ScriptContext scriptContext() throws Exception {
if (null == this.scriptContext) {
this.scriptContext = new SimpleScriptContext();
Bindings bindings = this.scriptContext.getBindings(ScriptContext.ENGINE_SCOPE);
bindings.put(ScriptFactory.BINDING_NAME_WORKCONTEXT, new WorkContext(this));
bindings.put(ScriptFactory.BINDING_NAME_GSON, XGsonBuilder.instance());
bindings.put(ScriptFactory.BINDING_NAME_DATA, this.getData());
bindings.put(ScriptFactory.BINDING_NAME_ORGANIZATION, this.business().organization());
bindings.put(ScriptFactory.BINDING_NAME_WEBSERVICESCLIENT, new WebservicesClient());
bindings.put(ScriptFactory.BINDING_NAME_DICTIONARY,
new ApplicationDictHelper(this.entityManagerContainer(), this.getWork().getApplication()));
bindings.put(ScriptFactory.BINDING_NAME_APPLICATIONS, ThisApplication.context().applications());
bindings.put(ScriptFactory.BINDING_NAME_ROUTES, this.getRoutes());
// 重新创建的ScriptContext是需要初始化的
ScriptFactory.initialScriptText().eval(this.scriptContext);
}
this.scriptContext = ScriptingFactory.scriptContextEvalInitialScript();
}
Bindings bindings = this.scriptContext.getBindings(ScriptContext.ENGINE_SCOPE);
Resources resources = new Resources();
resources.setApplications(ThisApplication.context().applications());
resources.setOrganization(this.business().organization());
resources.setWebservicesClient(new WebservicesClient());
resources.setContext(ThisApplication.context());
bindings.put(ScriptingFactory.BINDING_NAME_RESOURCES, resources);
bindings.put(ScriptingFactory.BINDING_NAME_WORKCONTEXT, new WorkContext(this));
bindings.put(ScriptingFactory.BINDING_NAME_DATA, this.getData());
return this.scriptContext;
}
......
......@@ -15,7 +15,7 @@ import com.google.gson.JsonObject;
import com.x.base.core.project.gson.XGsonBuilder;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.script.ScriptFactory;
import com.x.base.core.project.scripting.JsonScriptingExecutor;
import com.x.base.core.project.tools.ListTools;
import com.x.organization.core.express.Organization.ClassifyDistinguishedName;
import com.x.processplatform.core.entity.content.Data;
......@@ -30,7 +30,11 @@ import com.x.processplatform.service.processing.Business;
*/
public class TranslateReadIdentityTools {
private static Logger logger = LoggerFactory.getLogger(TranslateReadIdentityTools.class);
private TranslateReadIdentityTools() {
// nothing
}
private static final Logger LOGGER = LoggerFactory.getLogger(TranslateReadIdentityTools.class);
/** 计算活动节点中所有的待阅,全部翻译成Identity */
public static List<String> translate(AeiObjects aeiObjects) throws Exception {
......@@ -66,12 +70,12 @@ public class TranslateReadIdentityTools {
identities.addAll(aeiObjects.business().organization().identity().listWithGroup(groups));
identities.addAll(aeiObjects.business().organization().identity().listWithUnitSubDirect(units));
identities = ListTools.trim(identities, true, true);
logger.debug("work title:{}, id:{}, activity name:{}, id:{}, translate read identity: {}",
LOGGER.debug("work title:{}, id:{}, activity name:{}, id:{}, translate read identity: {}",
aeiObjects.getWork().getTitle(), aeiObjects.getWork().getId(), aeiObjects.getActivity().getName(),
aeiObjects.getActivity().getId(), XGsonBuilder.toJson(identities));
List<String> os = aeiObjects.business().organization().identity().list(identities);
if (os.size() != identities.size()) {
logger.warn(
LOGGER.warn(
"work title:{}, id:{}, activity name:{}, id:{}, translate read identity: {}, result not with same length: {}.",
aeiObjects.getWork().getTitle(), aeiObjects.getWork().getId(), aeiObjects.getActivity().getName(),
aeiObjects.getActivity().getId(), XGsonBuilder.toJson(identities), XGsonBuilder.toJson(os));
......@@ -91,17 +95,19 @@ public class TranslateReadIdentityTools {
String code = o.get("code").getAsString();
CompiledScript compiledScript = aeiObjects.business().element()
.getCompiledScript(aeiObjects.getActivity(), Business.EVENT_READDUTY, name, code);
Object objectValue = compiledScript.eval(aeiObjects.scriptContext());
List<String> ds = ScriptFactory.asDistinguishedNameList(objectValue);
if (ListTools.isNotEmpty(ds)) {
for (String str : ds) {
List<String> os = aeiObjects.business().organization().unitDuty()
.listIdentityWithUnitWithName(str, name);
if (ListTools.isNotEmpty(os)) {
list.addAll(os);
JsonScriptingExecutor.evalDistinguishedNames(compiledScript, aeiObjects.scriptContext(), ds -> {
try {
for (String str : ds) {
List<String> os = aeiObjects.business().organization().unitDuty()
.listIdentityWithUnitWithName(str, name);
if (ListTools.isNotEmpty(os)) {
list.addAll(os);
}
}
} catch (Exception e) {
LOGGER.error(e);
}
}
});
}
}
return ListTools.trim(list, true, true);
......@@ -115,11 +121,7 @@ public class TranslateReadIdentityTools {
ScriptContext scriptContext = aeiObjects.scriptContext();
CompiledScript compiledScript = aeiObjects.business().element().getCompiledScript(
aeiObjects.getWork().getApplication(), aeiObjects.getActivity(), Business.EVENT_READ);
Object objectValue = compiledScript.eval(scriptContext);
List<String> os = ScriptFactory.asDistinguishedNameList(objectValue);
if (ListTools.isNotEmpty(os)) {
list.addAll(os);
}
JsonScriptingExecutor.evalDistinguishedNames(compiledScript, scriptContext, list::addAll);
}
return list;
}
......
......@@ -5,7 +5,6 @@ import java.util.Iterator;
import java.util.List;
import javax.script.CompiledScript;
import javax.script.ScriptContext;
import org.apache.commons.lang3.StringUtils;
......@@ -15,7 +14,7 @@ import com.google.gson.JsonObject;
import com.x.base.core.project.gson.XGsonBuilder;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.script.ScriptFactory;
import com.x.base.core.project.scripting.JsonScriptingExecutor;
import com.x.base.core.project.tools.ListTools;
import com.x.organization.core.express.Organization.ClassifyDistinguishedName;
import com.x.processplatform.core.entity.content.Data;
......@@ -30,7 +29,11 @@ import com.x.processplatform.service.processing.Business;
*/
public class TranslateReviewPersonTools {
private static Logger logger = LoggerFactory.getLogger(TranslateReviewPersonTools.class);
private TranslateReviewPersonTools() {
// nothing
}
private static final Logger LOGGER = LoggerFactory.getLogger(TranslateReviewPersonTools.class);
/* 计算参阅人,全部翻译成Identity,最终全部转换为person */
public static List<String> translate(AeiObjects aeiObjects) throws Exception {
......@@ -66,12 +69,12 @@ public class TranslateReviewPersonTools {
identities.addAll(aeiObjects.business().organization().identity().listWithGroup(groups));
identities.addAll(aeiObjects.business().organization().identity().listWithUnitSubNested(units));
identities = ListTools.trim(identities, true, true);
logger.debug("work title:{}, id:{}, activity name:{}, id:{}, translate review identity: {}",
LOGGER.debug("work title:{}, id:{}, activity name:{}, id:{}, translate review identity: {}",
aeiObjects.getWork().getTitle(), aeiObjects.getWork().getId(), aeiObjects.getActivity().getName(),
aeiObjects.getActivity().getId(), XGsonBuilder.toJson(identities));
List<String> os = aeiObjects.business().organization().person().listWithIdentity(identities);
if (os.size() != identities.size()) {
logger.warn(
LOGGER.warn(
"work title:{}, id:{}, activity name:{}, id:{}, translate review identity: {}, result not with same length: {}.",
aeiObjects.getWork().getTitle(), aeiObjects.getWork().getId(), aeiObjects.getActivity().getName(),
aeiObjects.getActivity().getId(), XGsonBuilder.toJson(identities), XGsonBuilder.toJson(os));
......@@ -92,17 +95,20 @@ public class TranslateReviewPersonTools {
String code = o.get("code").getAsString();
CompiledScript compiledScript = aeiObjects.business().element()
.getCompiledScript(aeiObjects.getActivity(), Business.EVENT_REVIEWDUTY, name, code);
Object objectValue = compiledScript.eval(aeiObjects.scriptContext());
List<String> ds = ScriptFactory.asDistinguishedNameList(objectValue);
if (ListTools.isNotEmpty(ds)) {
for (String str : ds) {
List<String> os = aeiObjects.business().organization().unitDuty()
.listIdentityWithUnitWithName(str, name);
if (ListTools.isNotEmpty(os)) {
list.addAll(os);
// Object objectValue = compiledScript.eval(aeiObjects.scriptContext());
JsonScriptingExecutor.evalDistinguishedNames(compiledScript, aeiObjects.scriptContext(), ds -> {
try {
for (String str : ds) {
List<String> os = aeiObjects.business().organization().unitDuty()
.listIdentityWithUnitWithName(str, name);
if (ListTools.isNotEmpty(os)) {
list.addAll(os);
}
}
} catch (Exception e) {
LOGGER.error(e);
}
}
});
}
}
return ListTools.trim(list, true, true);
......@@ -113,14 +119,9 @@ public class TranslateReviewPersonTools {
List<String> list = new ArrayList<>();
if ((StringUtils.isNotEmpty(aeiObjects.getActivity().getReviewScript()))
|| (StringUtils.isNotEmpty(aeiObjects.getActivity().getReviewScriptText()))) {
ScriptContext scriptContext = aeiObjects.scriptContext();
CompiledScript compiledScript = aeiObjects.business().element().getCompiledScript(
aeiObjects.getWork().getApplication(), aeiObjects.getActivity(), Business.EVENT_REVIEW);
Object objectValue = compiledScript.eval(scriptContext);
List<String> os = ScriptFactory.asDistinguishedNameList(objectValue);
if (ListTools.isNotEmpty(os)) {
list.addAll(os);
}
JsonScriptingExecutor.evalDistinguishedNames(compiledScript, aeiObjects.scriptContext(),list::addAll);
}
return list;
}
......
......@@ -3,14 +3,14 @@ package com.x.processplatform.service.processing.processor.choice;
import java.util.ArrayList;
import java.util.List;
import javax.script.ScriptContext;
import javax.script.CompiledScript;
import org.apache.commons.lang3.BooleanUtils;
import com.x.base.core.container.EntityManagerContainer;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.script.ScriptFactory;
import com.x.base.core.project.scripting.JsonScriptingExecutor;
import com.x.processplatform.core.entity.content.Work;
import com.x.processplatform.core.entity.element.Choice;
import com.x.processplatform.core.entity.element.Route;
......@@ -20,7 +20,7 @@ import com.x.processplatform.service.processing.processor.AeiObjects;
public class ChoiceProcessor extends AbstractChoiceProcessor {
private static Logger logger = LoggerFactory.getLogger(ChoiceProcessor.class);
private static final Logger LOGGER = LoggerFactory.getLogger(ChoiceProcessor.class);
public ChoiceProcessor(EntityManagerContainer entityManagerContainer) throws Exception {
super(entityManagerContainer);
......@@ -61,12 +61,9 @@ public class ChoiceProcessor extends AbstractChoiceProcessor {
List<Route> results = new ArrayList<>();
// 多条路由进行判断
for (Route o : aeiObjects.getRoutes()) {
ScriptContext scriptContext = aeiObjects.scriptContext();
scriptContext.getBindings(ScriptContext.ENGINE_SCOPE).put(ScriptFactory.BINDING_NAME_ROUTE, o);
Object objectValue = aeiObjects.business().element()
.getCompiledScript(aeiObjects.getWork().getApplication(), o, Business.EVENT_ROUTE)
.eval(scriptContext);
if (BooleanUtils.isTrue(ScriptFactory.asBoolean(objectValue))) {
CompiledScript compiledScript = aeiObjects.business().element()
.getCompiledScript(aeiObjects.getWork().getApplication(), o, Business.EVENT_ROUTE);
if (BooleanUtils.isTrue(JsonScriptingExecutor.evalBoolean(compiledScript, aeiObjects.scriptContext()))) {
results.add(o);
break;
}
......
......@@ -3,6 +3,7 @@ package com.x.processplatform.service.processing.processor.embed;
import java.util.ArrayList;
import java.util.List;
import javax.script.CompiledScript;
import javax.script.ScriptContext;
import org.apache.commons.lang3.BooleanUtils;
......@@ -12,7 +13,8 @@ import com.x.base.core.container.EntityManagerContainer;
import com.x.base.core.project.jaxrs.WoId;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.script.ScriptFactory;
import com.x.base.core.project.scripting.JsonScriptingExecutor;
import com.x.base.core.project.scripting.ScriptingFactory;
import com.x.base.core.project.tools.ListTools;
import com.x.processplatform.core.entity.content.Attachment;
import com.x.processplatform.core.entity.content.TaskCompleted;
......@@ -43,6 +45,7 @@ public class EmbedProcessor extends AbstractEmbedProcessor {
@Override
protected void arrivingCommitted(AeiObjects aeiObjects, Embed embed) throws Exception {
// nothing
}
@Override
......@@ -80,7 +83,7 @@ public class EmbedProcessor extends AbstractEmbedProcessor {
WrapScriptObject wrap = new WrapScriptObject();
wrap.set(gson.toJson(assginData));
ScriptContext scriptContext = aeiObjects.scriptContext();
scriptContext.getBindings(ScriptContext.ENGINE_SCOPE).put(ScriptFactory.BINDING_NAME_ASSIGNDATA, wrap);
scriptContext.getBindings(ScriptContext.ENGINE_SCOPE).put(ScriptingFactory.BINDING_NAME_ASSIGNDATA, wrap);
aeiObjects.business().element().getCompiledScript(aeiObjects.getWork().getApplication(), embed,
Business.EVENT_EMBEDTARGETASSIGNDATA).eval(scriptContext);
assginData = gson.fromJson(wrap.get(), AssginData.class);
......@@ -107,6 +110,8 @@ public class EmbedProcessor extends AbstractEmbedProcessor {
public static class WoWorkId extends WoId {
private static final long serialVersionUID = 7931241930072510113L;
}
@Override
......@@ -138,12 +143,9 @@ public class EmbedProcessor extends AbstractEmbedProcessor {
}
if (this.hasIdentityScript(embed)) {
ScriptContext scriptContext = aeiObjects.scriptContext();
scriptContext.getBindings(ScriptContext.ENGINE_SCOPE).put(ScriptFactory.BINDING_NAME_IDENTITY, value);
Object objectValue = aeiObjects.business().element()
.getCompiledScript(aeiObjects.getWork().getApplication(), embed, Business.EVENT_EMBEDTARGETIDENTITY)
.eval(scriptContext);
List<String> os = ScriptFactory.asDistinguishedNameList(objectValue);
CompiledScript compiledScript = aeiObjects.business().element().getCompiledScript(
aeiObjects.getWork().getApplication(), embed, Business.EVENT_EMBEDTARGETIDENTITY);
List<String> os = JsonScriptingExecutor.evalDistinguishedNames(compiledScript, scriptContext);
os = ListTools.trim(os, true, false);
if (ListTools.isEmpty(os)) {
value = "";
......@@ -157,10 +159,9 @@ public class EmbedProcessor extends AbstractEmbedProcessor {
private String targetTitle(AeiObjects aeiObjects, Embed embed) throws Exception {
String value = "";
if (this.hasTitleScript(embed)) {
Object objectValue = aeiObjects.business().element()
.getCompiledScript(aeiObjects.getWork().getApplication(), embed, Business.EVENT_EMBEDTARGETTITLE)
.eval(aeiObjects.scriptContext());
value = ScriptFactory.asString(objectValue);
CompiledScript compiledScript = aeiObjects.business().element()
.getCompiledScript(aeiObjects.getWork().getApplication(), embed, Business.EVENT_EMBEDTARGETTITLE);
value = JsonScriptingExecutor.evalString(compiledScript, aeiObjects.scriptContext());
}
if (StringUtils.isEmpty(value)) {
value = embed.getName() + ":" + aeiObjects.getWork().getTitle();
......@@ -179,23 +180,24 @@ public class EmbedProcessor extends AbstractEmbedProcessor {
}
}
private boolean hasTitleScript(Embed embed) throws Exception {
private boolean hasTitleScript(Embed embed) {
return StringUtils.isNotEmpty(embed.getTargetTitleScript())
|| StringUtils.isNotEmpty(embed.getTargetTitleScriptText());
}
private boolean hasIdentityScript(Embed embed) throws Exception {
private boolean hasIdentityScript(Embed embed) {
return StringUtils.isNotEmpty(embed.getTargetIdentityScript())
|| StringUtils.isNotEmpty(embed.getTargetIdentityScriptText());
}
private boolean hasAssginDataScript(Embed embed) throws Exception {
private boolean hasAssginDataScript(Embed embed) {
return StringUtils.isNotEmpty(embed.getTargetAssginDataScript())
|| StringUtils.isNotEmpty(embed.getTargetAssginDataScriptText());
}
@Override
protected void inquiringCommitted(AeiObjects aeiObjects, Embed embed) throws Exception {
// nothing
}
}
\ No newline at end of file
......@@ -23,7 +23,8 @@ import com.x.base.core.project.exception.RunningException;
import com.x.base.core.project.http.ActionResult.Type;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.script.ScriptFactory;
import com.x.base.core.project.scripting.JsonScriptingExecutor;
import com.x.base.core.project.scripting.ScriptingFactory;
import com.x.base.core.project.tools.StringTools;
import com.x.processplatform.core.entity.content.Work;
import com.x.processplatform.core.entity.element.Invoke;
......@@ -36,7 +37,7 @@ import com.x.processplatform.service.processing.processor.AeiObjects;
public class InvokeProcessor extends AbstractInvokeProcessor {
private static Logger logger = LoggerFactory.getLogger(InvokeProcessor.class);
private static final Logger LOGGER = LoggerFactory.getLogger(InvokeProcessor.class);
public InvokeProcessor(EntityManagerContainer entityManagerContainer) throws Exception {
super(entityManagerContainer);
......@@ -92,7 +93,7 @@ public class InvokeProcessor extends AbstractInvokeProcessor {
}
}
private boolean jaxwsInternal(AeiObjects aeiObjects, Invoke invoke) throws Exception {
private boolean jaxwsInternal(AeiObjects aeiObjects, Invoke invoke) {
return true;
}
......@@ -115,9 +116,9 @@ public class InvokeProcessor extends AbstractInvokeProcessor {
CompiledScript cs = aeiObjects.business().element().getCompiledScript(
aeiObjects.getWork().getApplication(), aeiObjects.getActivity(),
Business.EVENT_INVOKEJAXWSRESPONSE);
scriptContext.getBindings(ScriptContext.ENGINE_SCOPE).put(ScriptFactory.BINDING_NAME_JAXWSRESPONSE,
scriptContext.getBindings(ScriptContext.ENGINE_SCOPE).put(ScriptingFactory.BINDING_NAME_JAXWSRESPONSE,
response);
passThrough = ScriptFactory.asBoolean(cs.eval(scriptContext));
passThrough = JsonScriptingExecutor.evalBoolean(cs, scriptContext);
} else {
passThrough = true;
}
......@@ -132,9 +133,13 @@ public class InvokeProcessor extends AbstractInvokeProcessor {
ScriptContext scriptContext = aeiObjects.scriptContext();
CompiledScript cs = aeiObjects.business().element().getCompiledScript(aeiObjects.getWork().getApplication(),
aeiObjects.getActivity(), Business.EVENT_INVOKEJAXWSPARAMETER);
scriptContext.getBindings(ScriptContext.ENGINE_SCOPE).put(ScriptFactory.BINDING_NAME_PARAMETERS,
scriptContext.getBindings(ScriptContext.ENGINE_SCOPE).put(ScriptingFactory.BINDING_NAME_JAXWSPARAMETERS,
parameters);
cs.eval(scriptContext);
JsonScriptingExecutor.jsonArray(cs, scriptContext, o -> {
if (o.size() > 0) {
parameters = gson.fromJson(o, parameters.getClass());
}
});
}
return parameters.toArray();
}
......@@ -184,6 +189,7 @@ public class InvokeProcessor extends AbstractInvokeProcessor {
if (!BooleanUtils.isTrue(invoke.getAsync())) {
WrapScriptObject jaxrsResponse = new WrapScriptObject();
if (null != resp) {
jaxrsResponse.type(resp.getType().toString());
jaxrsResponse.set(gson.toJson(resp.getData()));
}
if ((StringUtils.isNotEmpty(invoke.getJaxrsResponseScript()))
......@@ -192,9 +198,10 @@ public class InvokeProcessor extends AbstractInvokeProcessor {
CompiledScript cs = aeiObjects.business().element().getCompiledScript(
aeiObjects.getWork().getApplication(), aeiObjects.getActivity(),
Business.EVENT_INVOKEJAXRSRESPONSE);
scriptContext.getBindings(ScriptContext.ENGINE_SCOPE).put(ScriptFactory.BINDING_NAME_JAXRSRESPONSE,
scriptContext.getBindings(ScriptContext.ENGINE_SCOPE).put(ScriptingFactory.BINDING_NAME_JAXRSRESPONSE,
jaxrsResponse);
passThrough = ScriptFactory.asBoolean(cs.eval(scriptContext), true);
passThrough = JsonScriptingExecutor.evalBoolean(cs, scriptContext);
// passThrough = ScriptFactory.asBoolean(cs.eval(scriptContext), true);
} else {
passThrough = true;
}
......@@ -280,7 +287,7 @@ public class InvokeProcessor extends AbstractInvokeProcessor {
String result = "";
String uri = this.jaxrsUrl(aeiObjects, invoke);
JaxrsObject jaxrsObject = new JaxrsObject();
jaxrsObject.setHead(this.jaxrsEvalHead(aeiObjects, invoke));
jaxrsObject.setHead(this.jaxrsEvalHeader(aeiObjects, invoke));
switch (StringUtils.upperCase(invoke.getJaxrsMethod())) {
case ConnectionAction.METHOD_POST:
result = jaxrsExternalPost(aeiObjects, invoke, uri, jaxrsObject);
......@@ -312,6 +319,11 @@ public class InvokeProcessor extends AbstractInvokeProcessor {
boolean passThrough = false;
if (!BooleanUtils.isTrue(invoke.getAsync())) {
WrapScriptObject jaxrsResponse = new WrapScriptObject();
if (null == result) {
jaxrsResponse.type(Type.connectFatal.toString());
} else {
jaxrsResponse.type(Type.success.toString());
}
jaxrsResponse.set(result);
if ((StringUtils.isNotEmpty(invoke.getJaxrsResponseScript()))
|| (StringUtils.isNotEmpty(invoke.getJaxrsResponseScriptText()))) {
......@@ -319,9 +331,9 @@ public class InvokeProcessor extends AbstractInvokeProcessor {
CompiledScript cs = aeiObjects.business().element().getCompiledScript(
aeiObjects.getWork().getApplication(), aeiObjects.getActivity(),
Business.EVENT_INVOKEJAXRSRESPONSE);
scriptContext.getBindings(ScriptContext.ENGINE_SCOPE).put(ScriptFactory.BINDING_NAME_JAXRSRESPONSE,
scriptContext.getBindings(ScriptContext.ENGINE_SCOPE).put(ScriptingFactory.BINDING_NAME_JAXRSRESPONSE,
jaxrsResponse);
passThrough = ScriptFactory.asBoolean(cs.eval(scriptContext), true);
passThrough = JsonScriptingExecutor.evalBoolean(cs, scriptContext);
} else {
passThrough = true;
}
......@@ -404,9 +416,9 @@ public class InvokeProcessor extends AbstractInvokeProcessor {
ScriptContext scriptContext = aeiObjects.scriptContext();
CompiledScript cs = aeiObjects.business().element().getCompiledScript(aeiObjects.getWork().getApplication(),
aeiObjects.getActivity(), Business.EVENT_INVOKEJAXRSPARAMETER);
scriptContext.getBindings(ScriptContext.ENGINE_SCOPE).put(ScriptFactory.BINDING_NAME_PARAMETERS,
scriptContext.getBindings(ScriptContext.ENGINE_SCOPE).put(ScriptingFactory.BINDING_NAME_JAXRSPARAMETERS,
parameters);
cs.eval(scriptContext);
JsonScriptingExecutor.eval(cs, scriptContext);
}
for (Entry<String, String> entry : parameters.entrySet()) {
url = StringUtils.replace(url, "{" + entry.getKey() + "}", entry.getValue());
......@@ -421,21 +433,22 @@ public class InvokeProcessor extends AbstractInvokeProcessor {
ScriptContext scriptContext = aeiObjects.scriptContext();
CompiledScript cs = aeiObjects.business().element().getCompiledScript(aeiObjects.getApplication().getId(),
aeiObjects.getActivity(), Business.EVENT_INVOKEJAXRSBODY);
scriptContext.getBindings(ScriptContext.ENGINE_SCOPE).put(ScriptFactory.BINDING_NAME_JAXRSBODY, jaxrsBody);
cs.eval(scriptContext);
scriptContext.getBindings(ScriptContext.ENGINE_SCOPE).put(ScriptingFactory.BINDING_NAME_JAXRSBODY,
jaxrsBody);
JsonScriptingExecutor.eval(cs, scriptContext);
}
return jaxrsBody.get();
}
private Map<String, String> jaxrsEvalHead(AeiObjects aeiObjects, Invoke invoke) throws Exception {
private Map<String, String> jaxrsEvalHeader(AeiObjects aeiObjects, Invoke invoke) throws Exception {
Map<String, String> map = new LinkedHashMap<>();
if ((StringUtils.isNotEmpty(invoke.getJaxrsHeadScript()))
|| (StringUtils.isNotEmpty(invoke.getJaxrsHeadScriptText()))) {
ScriptContext scriptContext = aeiObjects.scriptContext();
CompiledScript cs = aeiObjects.business().element().getCompiledScript(aeiObjects.getWork().getApplication(),
aeiObjects.getActivity(), Business.EVENT_INVOKEJAXRSHEAD);
scriptContext.getBindings(ScriptContext.ENGINE_SCOPE).put(ScriptFactory.BINDING_NAME_JAXRSHEAD, map);
cs.eval(scriptContext);
scriptContext.getBindings(ScriptContext.ENGINE_SCOPE).put(ScriptingFactory.BINDING_NAME_JAXRSHEADERS, map);
JsonScriptingExecutor.eval(cs, scriptContext);
}
return map;
}
......
......@@ -28,7 +28,8 @@ import com.x.base.core.project.config.Config;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.organization.EmpowerLog;
import com.x.base.core.project.script.ScriptFactory;
import com.x.base.core.project.scripting.JsonScriptingExecutor;
import com.x.base.core.project.scripting.ScriptingFactory;
import com.x.base.core.project.tools.DateTools;
import com.x.base.core.project.tools.ListTools;
import com.x.base.core.project.tools.NumberTools;
......@@ -325,10 +326,9 @@ public class ManualProcessor extends AbstractManualProcessor {
// Manual Work 还没有处理完 发生了停留,出发了停留事件
if ((ListTools.isEmpty(works)) && this.hasManualStayScript(manual)) {
ScriptContext scriptContext = aeiObjects.scriptContext();
CompiledScript cs = null;
cs = aeiObjects.business().element().getCompiledScript(aeiObjects.getApplication().getId(),
CompiledScript cs = aeiObjects.business().element().getCompiledScript(aeiObjects.getApplication().getId(),
aeiObjects.getActivity(), Business.EVENT_MANUALSTAY);
cs.eval(scriptContext);
JsonScriptingExecutor.eval(cs, scriptContext);
}
}
......@@ -670,12 +670,12 @@ public class ManualProcessor extends AbstractManualProcessor {
private void expireScript(AeiObjects aeiObjects, Manual manual, Task task) throws Exception {
ExpireScriptResult expire = new ExpireScriptResult();
ScriptContext scriptContext = aeiObjects.scriptContext();
Bindings bindings = scriptContext.getBindings(ScriptContext.ENGINE_SCOPE);
bindings.put(ScriptFactory.BINDING_NAME_TASK, task);
bindings.put(ScriptFactory.BINDING_NAME_EXPIRE, expire);
aeiObjects.business().element()
.getCompiledScript(aeiObjects.getWork().getApplication(), manual, Business.EVENT_MANUALTASKEXPIRE)
.eval(scriptContext);
// Bindings bindings = scriptContext.getBindings(ScriptContext.ENGINE_SCOPE);
// bindings.put(ScriptingFactory.BINDING_NAME_TASK, task);
// bindings.put(ScriptingFactory.BINDING_NAME_EXPIRE, expire);
CompiledScript cs = aeiObjects.business().element().getCompiledScript(aeiObjects.getWork().getApplication(),
manual, Business.EVENT_MANUALTASKEXPIRE);
JsonScriptingExecutor.eval(cs, scriptContext);
if (BooleanUtils.isTrue(NumberTools.greaterThan(expire.getWorkHour(), 0))) {
Integer m = 0;
m += expire.getWorkHour() * 60;
......
package com.x.processplatform.service.processing.processor.manual;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
......@@ -7,17 +8,19 @@ import java.util.Objects;
import javax.script.CompiledScript;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.x.base.core.entity.JpaObject;
import com.x.base.core.project.gson.XGsonBuilder;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.organization.OrganizationDefinition;
import com.x.base.core.project.script.ScriptFactory;
import com.x.base.core.project.scripting.JsonScriptingExecutor;
import com.x.base.core.project.tools.ListTools;
import com.x.base.core.project.tools.PropertyTools;
import com.x.processplatform.core.entity.content.Data;
......@@ -33,6 +36,10 @@ import com.x.processplatform.service.processing.processor.AeiObjects;
*/
public class TranslateTaskIdentityTools {
private TranslateTaskIdentityTools() {
// nothing
}
private static Logger logger = LoggerFactory.getLogger(TranslateTaskIdentityTools.class);
/* 计算manual节点中所有的待办,全部翻译成Identity */
......@@ -67,13 +74,6 @@ public class TranslateTaskIdentityTools {
}
List<String> identities = aeiObjects.business().organization().identity().list(taskIdentities.identities());
return new TaskIdentities(identities);
/*Iterator<TaskIdentity> iterator = taskIdentities.iterator();
while (iterator.hasNext()) {
if (!identities.contains(iterator.next().getIdentity())) {
iterator.remove();
}
}
return taskIdentities;*/
}
/* 取到指定职务的identity */
......@@ -88,8 +88,8 @@ public class TranslateTaskIdentityTools {
String code = o.get("code").getAsString();
CompiledScript compiledScript = aeiObjects.business().element()
.getCompiledScript(aeiObjects.getActivity(), Business.EVENT_TASKDUTY, name, code);
Object objectValue = compiledScript.eval(aeiObjects.scriptContext());
List<String> ds = ScriptFactory.asDistinguishedNameList(objectValue);
List<String> ds = JsonScriptingExecutor.evalDistinguishedNames(compiledScript,
aeiObjects.scriptContext());
if (ListTools.isNotEmpty(ds)) {
for (String str : ds) {
List<String> os = aeiObjects.business().organization().unitDuty()
......@@ -115,47 +115,6 @@ public class TranslateTaskIdentityTools {
if (null != o) {
addObjectToTaskIdentities(taskIdentities, units, groups, o);
}
// if (null != o) {
// if (o instanceof CharSequence) {
// taskIdentities.addIdentity(o.toString());
// } else if (o instanceof JsonObject) {
// JsonObject jsonObject = (JsonObject) o;
// addJsonObjectToTaskIdentities(taskIdentities, units, groups, jsonObject);
// } else if (o instanceof JsonArray) {
// for (JsonElement jsonElement : (JsonArray) o) {
// if (jsonElement.isJsonObject()) {
// JsonObject jsonObject = jsonElement.getAsJsonObject();
// addJsonObjectToTaskIdentities(taskIdentities, units, groups, jsonObject);
// }
// }
// } else if (o instanceof Iterable) {
// for (Object obj : (Iterable<?>) o) {
// if (null != obj) {
// if (obj instanceof CharSequence) {
// taskIdentities.addIdentity(Objects.toString(obj, ""));
// } else {
// addObjectToTaskIdentities(taskIdentities, units, groups, obj);
// }
// }
// }
// } else if (o instanceof ScriptObjectMirror) {
// ScriptObjectMirror som = (ScriptObjectMirror) o;
// if (som.isArray()) {
// Object[] objs = (som.to(Object[].class));
// for (Object obj : objs) {
// if (null != obj) {
// if (obj instanceof CharSequence) {
// taskIdentities.addIdentity(Objects.toString(obj, ""));
// } else {
// addObjectToTaskIdentities(taskIdentities, units, groups, obj);
// }
// }
// }
// } else {
// addObjectToTaskIdentities(taskIdentities, units, groups, som);
// }
// }
// }
}
return list;
}
......@@ -169,49 +128,13 @@ public class TranslateTaskIdentityTools {
if (null != o) {
addObjectToTaskIdentities(taskIdentities, units, groups, o);
}
// if (null != o) {
// if (o instanceof CharSequence) {
// if (OrganizationDefinition.isUnitDistinguishedName(str)) {
// units.add(str);
// } else if (OrganizationDefinition.isGroupDistinguishedName(str)) {
// groups.add(str);
// } else {
// taskIdentities.addIdentity(o.toString());
// }
// } else if (o instanceof Iterable) {
// for (Object v : (Iterable<?>) o) {
// System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!v class:" + v.getClass());
// System.out.println(XGsonBuilder.toJson(v));
// if (null != v) {
// if (v instanceof CharSequence) {
// String vs = v.toString();
// if (OrganizationDefinition.isUnitDistinguishedName(vs)) {
// units.add(vs);
// } else if (OrganizationDefinition.isGroupDistinguishedName(vs)) {
// groups.add(vs);
// } else {
// taskIdentities.addIdentity(vs);
// }
// // } else if (v instanceof Entry) {
// } else {
// addObjectToTaskIdentities(taskIdentities, units, groups, v);
// }
// }
// }
// } else {
// addObjectToTaskIdentities(taskIdentities, units, groups, o);
// }
// }
}
}
}
private static void addObjectToTaskIdentities(TaskIdentities taskIdentities, List<String> units,
List<String> groups, Object o) throws Exception {
// String d = PropertyTools.getOrElse(o, JpaObject.DISTINGUISHEDNAME,
// String.class, "");
for (String d : ScriptFactory.asDistinguishedNameList(o)) {
for (String d : asDistinguishedNames(o)) {
if (OrganizationDefinition.isIdentityDistinguishedName(d)) {
Boolean ignore = BooleanUtils.isTrue(BooleanUtils.toBooleanObject(Objects.toString(
PropertyTools.getOrElse(o, TaskIdentity.IGNOREEMPOWER, Boolean.class, Boolean.FALSE),
......@@ -227,4 +150,32 @@ public class TranslateTaskIdentityTools {
}
}
}
public static List<String> asDistinguishedNames(Object o) throws Exception {
List<String> list = new ArrayList<>();
if (null != o) {
if (o instanceof CharSequence) {
list.add(Objects.toString(o));
} else if (o instanceof Iterable) {
asIterable(o, list);
}
}
return list;
}
private static void asIterable(Object o, List<String> list)
throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
for (Object obj : (Iterable<?>) o) {
if (null != obj) {
if (obj instanceof CharSequence) {
list.add(Objects.toString(obj));
} else {
Object d = PropertyUtils.getProperty(obj, JpaObject.DISTINGUISHEDNAME);
if (null != d) {
list.add(Objects.toString(d));
}
}
}
}
}
}
\ No newline at end of file
......@@ -3,6 +3,7 @@ package com.x.processplatform.service.processing.processor.parallel;
import java.util.ArrayList;
import java.util.List;
import javax.script.CompiledScript;
import javax.script.ScriptContext;
import org.apache.commons.lang3.BooleanUtils;
......@@ -11,7 +12,8 @@ import org.apache.commons.lang3.StringUtils;
import com.x.base.core.container.EntityManagerContainer;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.script.ScriptFactory;
import com.x.base.core.project.scripting.JsonScriptingExecutor;
import com.x.base.core.project.scripting.ScriptingFactory;
import com.x.base.core.project.tools.StringTools;
import com.x.processplatform.core.entity.content.Work;
import com.x.processplatform.core.entity.content.WorkLog;
......@@ -73,11 +75,10 @@ public class ParallelProcessor extends AbstractParallelProcessor {
/* 多条路由进行判断 */
for (Route o : aeiObjects.getRoutes()) {
ScriptContext scriptContext = aeiObjects.scriptContext();
scriptContext.getBindings(ScriptContext.ENGINE_SCOPE).put(ScriptFactory.BINDING_NAME_ROUTE, o);
Object objectValue = aeiObjects.business().element()
.getCompiledScript(aeiObjects.getWork().getApplication(), o, Business.EVENT_ROUTE)
.eval(scriptContext);
if (BooleanUtils.isTrue(ScriptFactory.asBoolean(objectValue))) {
//scriptContext.getBindings(ScriptContext.ENGINE_SCOPE).put(ScriptingFactory.BINDING_NAME_ROUTE, o);
CompiledScript cs = aeiObjects.business().element().getCompiledScript(aeiObjects.getWork().getApplication(),
o, Business.EVENT_ROUTE);
if (BooleanUtils.isTrue(JsonScriptingExecutor.evalBoolean(cs, scriptContext))) {
routes.add(o);
}
}
......
......@@ -12,7 +12,8 @@ import org.apache.commons.lang3.StringUtils;
import com.x.base.core.container.EntityManagerContainer;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.script.ScriptFactory;
import com.x.base.core.project.scripting.JsonScriptingExecutor;
import com.x.base.core.project.scripting.ScriptingFactory;
import com.x.processplatform.core.entity.content.Work;
import com.x.processplatform.core.entity.element.Route;
import com.x.processplatform.core.entity.element.Service;
......@@ -22,7 +23,7 @@ import com.x.processplatform.service.processing.processor.AeiObjects;
public class ServiceProcessor extends AbstractServiceProcessor {
private static Logger logger = LoggerFactory.getLogger(ServiceProcessor.class);
private static final Logger LOGGER = LoggerFactory.getLogger(ServiceProcessor.class);
public ServiceProcessor(EntityManagerContainer entityManagerContainer) throws Exception {
super(entityManagerContainer);
......@@ -52,11 +53,11 @@ public class ServiceProcessor extends AbstractServiceProcessor {
boolean passThrough = false;
if (StringUtils.isNotEmpty(service.getScript()) || StringUtils.isNotEmpty(service.getScriptText())) {
ScriptContext scriptContext = aeiObjects.scriptContext();
scriptContext.getBindings(ScriptContext.ENGINE_SCOPE).put(ScriptFactory.BINDING_NAME_SERVICEVALUE,
scriptContext.getBindings(ScriptContext.ENGINE_SCOPE).put(ScriptingFactory.BINDING_NAME_REQUESTTEXT,
gson.toJson(aeiObjects.getWork().getProperties().getServiceValue()));
CompiledScript cs = aeiObjects.business().element().getCompiledScript(aeiObjects.getWork().getApplication(),
aeiObjects.getActivity(), Business.EVENT_SERVICE);
passThrough = ScriptFactory.asBoolean(cs.eval(scriptContext));
passThrough = JsonScriptingExecutor.evalBoolean(cs, scriptContext);
} else {
passThrough = true;
}
......
......@@ -4,12 +4,14 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import javax.script.CompiledScript;
import org.apache.commons.lang3.StringUtils;
import com.x.base.core.container.EntityManagerContainer;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.script.ScriptFactory;
import com.x.base.core.project.scripting.JsonScriptingExecutor;
import com.x.base.core.project.tools.ListTools;
import com.x.base.core.project.tools.StringTools;
import com.x.processplatform.core.entity.content.Work;
......@@ -108,13 +110,10 @@ public class SplitProcessor extends AbstractSplitProcessor {
private List<String> splitWithPath(AeiObjects aeiObjects, Split split) throws Exception {
List<String> list = new ArrayList<>();
if ((StringUtils.isNotEmpty(split.getScript())) || (StringUtils.isNotEmpty(split.getScriptText()))) {
Object objectValue = aeiObjects.business().element()
.getCompiledScript(aeiObjects.getWork().getApplication(), split, Business.EVENT_SPLIT)
.eval(aeiObjects.scriptContext());
List<String> os = ScriptFactory.asDistinguishedNameList(objectValue);
if (ListTools.isNotEmpty(os)) {
list.addAll(os);
}
CompiledScript cs = aeiObjects.business().element().getCompiledScript(aeiObjects.getWork().getApplication(),
split, Business.EVENT_SPLIT);
List<String> os = JsonScriptingExecutor.evalDistinguishedNames(cs, aeiObjects.scriptContext());
list.addAll(os);
}
return list;
}
......
......@@ -18,10 +18,9 @@ import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import javax.script.Bindings;
import javax.script.CompiledScript;
import javax.script.ScriptContext;
import javax.script.SimpleScriptContext;
import com.x.base.core.project.cache.CacheManager;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.StringUtils;
......@@ -31,12 +30,14 @@ import com.x.base.core.container.EntityManagerContainer;
import com.x.base.core.entity.annotation.CheckPersistType;
import com.x.base.core.entity.annotation.CheckRemoveType;
import com.x.base.core.entity.type.GenderType;
import com.x.base.core.project.cache.CacheManager;
import com.x.base.core.project.config.Config;
import com.x.base.core.project.gson.GsonPropertyObject;
import com.x.base.core.project.gson.XGsonBuilder;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.script.ScriptFactory;
import com.x.base.core.project.scripting.JsonScriptingExecutor;
import com.x.base.core.project.scripting.ScriptingFactory;
import com.x.base.core.project.tools.ListTools;
import com.x.organization.core.entity.Identity;
import com.x.organization.core.entity.Identity_;
......@@ -190,9 +191,9 @@ public class SyncOrganization {
emc.beginTransaction(Unit.class);
unit.setDingdingHash(DigestUtils.sha256Hex(XGsonBuilder.toJson(department)));
unit.setName(department.getName());
if (null != department.getOrder()) {
unit.setOrderNumber(department.getOrder().intValue());
}
if (null != department.getOrder()) {
unit.setOrderNumber(department.getOrder().intValue());
}
business.unit().adjustInherit(unit);
emc.check(unit, CheckPersistType.all);
emc.commit();
......@@ -264,8 +265,8 @@ public class SyncOrganization {
person.setMobile(user.getMobile());
person.setUnique(user.getUserid());
String employee = user.getJobnumber();
if(StringUtils.isNotEmpty(employee)){
if(business.person().employeeExists(employee, person.getUnique())){
if (StringUtils.isNotEmpty(employee)) {
if (business.person().employeeExists(employee, person.getUnique())) {
employee = "";
}
}
......@@ -283,8 +284,8 @@ public class SyncOrganization {
person.setMobile(user.getMobile());
person.setUnique(user.getUserid());
String employee = user.getJobnumber();
if(StringUtils.isNotEmpty(employee)){
if(business.person().employeeExists(employee, person.getUnique())){
if (StringUtils.isNotEmpty(employee)) {
if (business.person().employeeExists(employee, person.getUnique())) {
employee = "";
}
}
......@@ -306,12 +307,12 @@ public class SyncOrganization {
Pattern pattern = Pattern.compile(com.x.base.core.project.config.Person.REGULAREXPRESSION_SCRIPT);
Matcher matcher = pattern.matcher(str);
if (matcher.matches()) {
String eval = ScriptFactory.functionalization(StringEscapeUtils.unescapeJson(matcher.group(1)));
ScriptContext scriptContext = new SimpleScriptContext();
CompiledScript cs = ScriptingFactory
.functionalizationCompile(StringEscapeUtils.unescapeJson(matcher.group(1)));
ScriptContext scriptContext = ScriptingFactory.scriptContextEvalInitialServiceScript();
Bindings bindings = scriptContext.getBindings(ScriptContext.ENGINE_SCOPE);
bindings.put("person", person);
Object o = ScriptFactory.scriptEngine.eval(eval, scriptContext);
return o.toString();
bindings.put(ScriptingFactory.BINDING_NAME_SERVICE_PERSON, person);
return JsonScriptingExecutor.evalString(cs, scriptContext);
} else {
return str;
}
......@@ -322,8 +323,8 @@ public class SyncOrganization {
emc.beginTransaction(Person.class);
person.setDingdingHash(DigestUtils.sha256Hex(XGsonBuilder.toJson(user)));
String employee = user.getJobnumber();
if(StringUtils.isNotEmpty(employee)){
if(business.person().employeeExists(employee, person.getUnique())){
if (StringUtils.isNotEmpty(employee)) {
if (business.person().employeeExists(employee, person.getUnique())) {
employee = "";
}
}
......@@ -434,7 +435,7 @@ public class SyncOrganization {
EntityManagerContainer emc = business.entityManagerContainer();
emc.beginTransaction(Identity.class);
Identity identity = new Identity();
identity.setUnique(unit.getUnique()+"_"+person.getUnique());
identity.setUnique(unit.getUnique() + "_" + person.getUnique());
identity.setName(person.getName());
identity.setPerson(person.getId());
identity.setUnit(unit.getId());
......
package com.x.program.center.qiyeweixin;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import javax.persistence.EntityManager;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import javax.script.Bindings;
import javax.script.CompiledScript;
import javax.script.ScriptContext;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.text.StringEscapeUtils;
import com.x.base.core.container.EntityManagerContainer;
import com.x.base.core.entity.annotation.CheckPersistType;
import com.x.base.core.entity.annotation.CheckRemoveType;
......@@ -10,28 +33,21 @@ import com.x.base.core.project.gson.GsonPropertyObject;
import com.x.base.core.project.gson.XGsonBuilder;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.script.ScriptFactory;
import com.x.base.core.project.scripting.JsonScriptingExecutor;
import com.x.base.core.project.scripting.ScriptingFactory;
import com.x.base.core.project.tools.ListTools;
import com.x.organization.core.entity.*;
import com.x.organization.core.entity.Identity;
import com.x.organization.core.entity.Identity_;
import com.x.organization.core.entity.Person;
import com.x.organization.core.entity.PersonAttribute;
import com.x.organization.core.entity.PersonAttribute_;
import com.x.organization.core.entity.Person_;
import com.x.organization.core.entity.Unit;
import com.x.organization.core.entity.UnitAttribute;
import com.x.organization.core.entity.UnitDuty;
import com.x.organization.core.entity.Unit_;
import com.x.program.center.Business;
import com.x.program.center.qiyeweixin.User.Extattr.Attr;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.text.StringEscapeUtils;
import javax.persistence.EntityManager;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import javax.script.Bindings;
import javax.script.ScriptContext;
import javax.script.SimpleScriptContext;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
public class SyncOrganization {
......@@ -295,12 +311,12 @@ public class SyncOrganization {
Pattern pattern = Pattern.compile(com.x.base.core.project.config.Person.REGULAREXPRESSION_SCRIPT);
Matcher matcher = pattern.matcher(str);
if (matcher.matches()) {
String eval = ScriptFactory.functionalization(StringEscapeUtils.unescapeJson(matcher.group(1)));
ScriptContext scriptContext = new SimpleScriptContext();
CompiledScript cs = ScriptingFactory
.functionalizationCompile(StringEscapeUtils.unescapeJson(matcher.group(1)));
ScriptContext scriptContext = ScriptingFactory.scriptContextEvalInitialServiceScript();
Bindings bindings = scriptContext.getBindings(ScriptContext.ENGINE_SCOPE);
bindings.put("person", person);
Object o = ScriptFactory.scriptEngine.eval(eval, scriptContext);
return o.toString();
bindings.put(ScriptingFactory.BINDING_NAME_SERVICE_PERSON, person);
return JsonScriptingExecutor.evalString(cs, scriptContext);
} else {
return str;
}
......@@ -410,7 +426,7 @@ public class SyncOrganization {
EntityManagerContainer emc = business.entityManagerContainer();
emc.beginTransaction(Identity.class);
Identity identity = new Identity();
identity.setUnique(unit.getUnique()+"_"+person.getUnique());
identity.setUnique(unit.getUnique() + "_" + person.getUnique());
identity.setName(person.getName());
identity.setPerson(person.getId());
identity.setUnit(unit.getId());
......
......@@ -15,10 +15,9 @@ import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import javax.script.Bindings;
import javax.script.CompiledScript;
import javax.script.ScriptContext;
import javax.script.SimpleScriptContext;
import com.x.base.core.project.cache.CacheManager;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.collections4.ListUtils;
import org.apache.commons.lang3.StringUtils;
......@@ -28,12 +27,14 @@ import com.x.base.core.container.EntityManagerContainer;
import com.x.base.core.entity.annotation.CheckPersistType;
import com.x.base.core.entity.annotation.CheckRemoveType;
import com.x.base.core.entity.type.GenderType;
import com.x.base.core.project.cache.CacheManager;
import com.x.base.core.project.config.Config;
import com.x.base.core.project.gson.GsonPropertyObject;
import com.x.base.core.project.gson.XGsonBuilder;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.script.ScriptFactory;
import com.x.base.core.project.scripting.JsonScriptingExecutor;
import com.x.base.core.project.scripting.ScriptingFactory;
import com.x.base.core.project.tools.ListTools;
import com.x.organization.core.entity.Identity;
import com.x.organization.core.entity.Identity_;
......@@ -286,12 +287,12 @@ public class SyncOrganization {
Pattern pattern = Pattern.compile(com.x.base.core.project.config.Person.REGULAREXPRESSION_SCRIPT);
Matcher matcher = pattern.matcher(str);
if (matcher.matches()) {
String eval = ScriptFactory.functionalization(StringEscapeUtils.unescapeJson(matcher.group(1)));
ScriptContext scriptContext = new SimpleScriptContext();
CompiledScript cs = ScriptingFactory
.functionalizationCompile(StringEscapeUtils.unescapeJson(matcher.group(1)));
ScriptContext scriptContext = ScriptingFactory.scriptContextEvalInitialServiceScript();
Bindings bindings = scriptContext.getBindings(ScriptContext.ENGINE_SCOPE);
bindings.put("person", person);
Object o = ScriptFactory.scriptEngine.eval(eval, scriptContext);
return o.toString();
bindings.put(ScriptingFactory.BINDING_NAME_SERVICE_PERSON, person);
return JsonScriptingExecutor.evalString(cs, scriptContext);
} else {
return str;
}
......@@ -409,7 +410,7 @@ public class SyncOrganization {
EntityManagerContainer emc = business.entityManagerContainer();
emc.beginTransaction(Identity.class);
Identity identity = new Identity();
identity.setUnique(unit.getUnique()+"_"+person.getUnique());
identity.setUnique(unit.getUnique() + "_" + person.getUnique());
identity.setName(person.getName());
identity.setPerson(person.getId());
identity.setUnit(unit.getId());
......
package com.x.query.core.express.plan;
import java.util.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Objects;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
......@@ -9,7 +15,11 @@ import java.util.stream.Collectors;
import javax.persistence.EntityManager;
import javax.persistence.Tuple;
import javax.persistence.criteria.*;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Order;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import javax.script.ScriptEngine;
import javax.script.ScriptException;
......@@ -25,7 +35,7 @@ import com.x.base.core.entity.tools.JpaObjectTools;
import com.x.base.core.project.config.Config;
import com.x.base.core.project.gson.GsonPropertyObject;
import com.x.base.core.project.organization.OrganizationDefinition;
import com.x.base.core.project.script.ScriptFactory;
import com.x.base.core.project.scripting.ScriptingFactory;
import com.x.base.core.project.tools.ListTools;
import com.x.query.core.entity.Item;
import com.x.query.core.entity.Item_;
......@@ -584,8 +594,8 @@ public abstract class Plan extends GsonPropertyObject {
/* 有两个地方用到了 */
private ScriptEngine getScriptEngine() throws ScriptException, Exception {
if (null == this.scriptEngine) {
scriptEngine = ScriptFactory.newScriptEngine();
scriptEngine.eval(Config.mooToolsScriptText());
scriptEngine = ScriptingFactory.newScriptEngine();
// scriptEngine.eval(Config.mooToolsScriptText());
}
return scriptEngine;
}
......
......@@ -4,11 +4,11 @@ import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.TreeSet;
import java.util.stream.Collectors;
import javax.script.ScriptContext;
import javax.script.SimpleScriptContext;
import org.apache.commons.lang3.StringUtils;
import org.neuroph.core.NeuralNetwork;
......@@ -20,6 +20,8 @@ import com.x.base.core.container.EntityManagerContainer;
import com.x.base.core.container.factory.EntityManagerContainerFactory;
import com.x.base.core.entity.dataitem.DataItemConverter;
import com.x.base.core.entity.dataitem.ItemCategory;
import com.x.base.core.project.cache.Cache.CacheKey;
import com.x.base.core.project.cache.CacheManager;
import com.x.base.core.project.config.Config;
import com.x.base.core.project.config.StorageMapping;
import com.x.base.core.project.exception.ExceptionEntityNotExist;
......@@ -28,7 +30,8 @@ import com.x.base.core.project.http.ActionResult;
import com.x.base.core.project.http.EffectivePerson;
import com.x.base.core.project.logger.Logger;
import com.x.base.core.project.logger.LoggerFactory;
import com.x.base.core.project.script.ScriptFactory;
import com.x.base.core.project.scripting.JsonScriptingExecutor;
import com.x.base.core.project.scripting.ScriptingFactory;
import com.x.base.core.project.tools.ByteTools;
import com.x.base.core.project.tools.DoubleTools;
import com.x.base.core.project.tools.MapTools;
......@@ -42,9 +45,6 @@ import com.x.query.service.processing.Business;
import com.x.query.service.processing.ThisApplication;
import com.x.query.service.processing.helper.ExtractTextHelper;
import com.x.query.service.processing.helper.LanguageProcessingHelper;
import com.x.base.core.project.cache.Cache.CacheKey;
import com.x.base.core.project.cache.CacheManager;
import java.util.Optional;
class ActionListCalculateWithWork extends BaseAction {
......@@ -157,9 +157,9 @@ class ActionListCalculateWithWork extends BaseAction {
break;
}
if (StringUtils.isNotBlank(model.getInValueScriptText())) {
ScriptContext scriptContext = new SimpleScriptContext();
ScriptContext scriptContext = ScriptingFactory.scriptContextEvalInitialServiceScript();
scriptContext.getBindings(ScriptContext.ENGINE_SCOPE).put(PROPERTY_INVALUES, inValue);
ScriptFactory.scriptEngine.eval(model.getInValueScriptText(), scriptContext);
JsonScriptingExecutor.eval(null, scriptContext);
}
return inValue;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册