Просмотр исходного кода

Revert "Merge branch 'feature/#243_2' into 'develop'"

This reverts merge request !1144
o2null 5 лет назад
Родитель
Сommit
44a2da5f44
31 измененных файлов с 487 добавлено и 1432 удалено
  1. 0 1
      .gitignore
  2. 0 2
      o2server/configSample/processPlatform.json
  3. 12 12
      o2server/configSample/query.json
  4. 1 0
      o2server/x_attendance_assemble_control/src/main/webapp/WEB-INF/web.xml
  5. 4 231
      o2server/x_base_core_project/src/main/java/com/x/base/core/project/Applications.java
  6. 0 13
      o2server/x_base_core_project/src/main/java/com/x/base/core/project/ExceptionFindApplicationName.java
  7. 9 9
      o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/Collect.java
  8. 18 257
      o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/ProcessPlatform.java
  9. 6 85
      o2server/x_base_core_project/src/main/java/com/x/base/core/project/connection/CipherConnectionAction.java
  10. 145 236
      o2server/x_base_core_project/src/main/java/com/x/base/core/project/connection/ConnectionAction.java
  11. 0 21
      o2server/x_base_core_project/src/main/java/com/x/base/core/project/connection/ExceptionBinary.java
  12. 0 22
      o2server/x_base_core_project/src/main/java/com/x/base/core/project/connection/ExceptionDeleteBinary.java
  13. 0 22
      o2server/x_base_core_project/src/main/java/com/x/base/core/project/connection/ExceptionGetBinary.java
  14. 0 22
      o2server/x_base_core_project/src/main/java/com/x/base/core/project/connection/ExceptionMultiPartBinary.java
  15. 0 26
      o2server/x_base_core_project/src/main/java/com/x/base/core/project/connection/ExceptionReadBinary.java
  16. 0 57
      o2server/x_base_core_project/src/main/java/com/x/base/core/project/connection/FilePart.java
  17. 0 34
      o2server/x_base_core_project/src/main/java/com/x/base/core/project/connection/FormField.java
  18. 8 7
      o2server/x_base_core_project/src/main/java/com/x/base/core/project/message/MessageConnector.java
  19. 0 6
      o2server/x_base_core_project/src/main/java/com/x/base/core/project/tools/StringTools.java
  20. 0 32
      o2server/x_base_core_project/src/main/java/com/x/base/core/project/utils/time/TestClient.java
  21. 1 0
      o2server/x_bbs_assemble_control/src/main/webapp/WEB-INF/web.xml
  22. 1 0
      o2server/x_calendar_assemble_control/src/main/webapp/WEB-INF/web.xml
  23. 1 0
      o2server/x_cms_assemble_control/src/main/webapp/WEB-INF/web.xml
  24. 195 0
      o2server/x_organization_assemble_control/src/main/webapp/WEB-INF/web1.xml
  25. 27 0
      o2server/x_organization_assemble_control/src/main/webapp/WEB-INF/web_back.xml
  26. 14 92
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/attachment/ActionDocToWordWorkOrWorkCompleted.java
  27. 11 59
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/attachment/ActionDownloadWithWork.java
  28. 12 62
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/attachment/ActionDownloadWithWorkCompleted.java
  29. 12 62
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/attachment/ActionDownloadWithWorkCompletedStream.java
  30. 9 61
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/attachment/ActionDownloadWithWorkStream.java
  31. 1 1
      o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/jaxrs/work/ExceptionFromMappingNotExist.java

+ 0 - 1
.gitignore

@@ -14,7 +14,6 @@
 /o2server/jvm/
 /o2server/local/
 /o2server/*/src/main/webapp/describe/
-/o2server/*/src/main/webapp/WEB-INF/
 **/.settings/
 **/.classpath
 **/.project

+ 0 - 2
o2server/configSample/processPlatform.json

@@ -7,7 +7,6 @@
   "docToWordDefaultFileName": "正文.docx",
   "docToWordDefaultSite": "$doc",
   "executorCount": 32.0,
-  "extensionEvents": {},
   "urge": {
     "enable": false,
     "cron": "30 0/10 8-18 * * ?",
@@ -64,7 +63,6 @@
   "###docToWordDefaultFileName": "HTML版式公文转换成Word文件缺省文件名.###",
   "###docToWordDefaultSite": "HTML版式公文转换成Word文件缺省site.###",
   "###executorCount": "执行器数量###",
-  "###extensionEvents": "扩充事件###",
   "###urge": "催办任务设置,发现即将过期时发送提醒消息.###",
   "###expire": "将已经过了截至时间的待办标记过期.###",
   "###touchDelay": "延时任务设置,定时触发延时任务,当超过延时时间后继续流转.###",

+ 12 - 12
o2server/configSample/query.json

@@ -1,41 +1,41 @@
 {
   "crawlWorkCompleted": {
-    "enable": true,
-    "cron": "50 50 21 * * ?",
-    "count": 500.0,
+    "enable": false,
+    "cron": "50 50 22 * * ?",
+    "count": 2000.0,
     "excludeAttachment": [],
     "excludeSite": [],
     "maxAttachmentSize": 5242880.0,
     "###enable": "是否启用###",
     "###cron": "定时cron表达式.###",
-    "###count": "每次处理的数量,默认每小时处理所以默认为500,同时每次将重爬最旧的25%,按时间轮询25%.###",
+    "###count": "每次处理的数量,默认每小时处理所以默认为2000,同时每次将重爬最旧的25%,按时间轮询25%.###",
     "###excludeAttachment": "忽略附件名称.###",
     "###excludeSite": "忽略附件位置.###",
     "###maxAttachmentSize": "最大附件大小.###"
   },
   "crawlWork": {
-    "enable": true,
-    "cron": "40 40 10,12,14,16 * * ?",
-    "count": 50.0,
+    "enable": false,
+    "cron": "40 40 7-21 * * ?",
+    "count": 100.0,
     "excludeAttachment": [],
     "excludeSite": [],
     "maxAttachmentSize": 5242880.0,
     "###enable": "是否启用###",
     "###cron": "定时cron表达式.###",
-    "###count": "每次处理的数量,默认每小时处理所以默认为50,同时每次将重爬最旧的50%,按时间轮询50%.###",
+    "###count": "每次处理的数量,默认每小时处理所以默认为100,同时每次将重爬最旧的50%,按时间轮询50%.###",
     "###excludeAttachment": "忽略附件名称.###",
     "###excludeSite": "忽略附件位置.###",
     "###maxAttachmentSize": "最大附件大小.###"
   },
   "crawlCms": {
-    "enable": true,
-    "cron": "30 30 9,12,15,18 * * ?",
-    "count": 30.0,
+    "enable": false,
+    "cron": "30 30 7-21 * * ?",
+    "count": 100.0,
     "excludeAttachment": [],
     "maxAttachmentSize": 5242880.0,
     "###enable": "是否启用###",
     "###cron": "定时cron表达式.###",
-    "###count": "每次处理的数量,默认每小时处理所以默认为30,同时每次将重爬最旧的50%,按时间轮询50%.###",
+    "###count": "每次处理的数量,默认每小时处理所以默认为100,同时每次将重爬最旧的50%,按时间轮询50%.###",
     "###excludeAttachment": "忽略附件名称.###",
     "###maxAttachmentSize": "最大附件大小.###"
   },

+ 1 - 0
o2server/x_attendance_assemble_control/src/main/webapp/WEB-INF/web.xml

@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><web-app id="x_attendance_assemble_control" metadata-complete="false" version="3.0"><display-name>x_attendance_assemble_control</display-name><context-param><param-name>project</param-name><param-value>com.x.base.core.project.x_attendance_assemble_control</param-value></context-param></web-app>

+ 4 - 231
o2server/x_base_core_project/src/main/java/com/x/base/core/project/Applications.java

@@ -2,7 +2,6 @@ package com.x.base.core.project;
 
 import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
-import java.util.Collection;
 import java.util.Date;
 import java.util.List;
 import java.util.Random;
@@ -17,8 +16,6 @@ import java.util.zip.CRC32;
 import com.x.base.core.project.config.Config;
 import com.x.base.core.project.connection.ActionResponse;
 import com.x.base.core.project.connection.CipherConnectionAction;
-import com.x.base.core.project.connection.FilePart;
-import com.x.base.core.project.connection.FormField;
 import com.x.base.core.project.connection.HttpConnection;
 import com.x.base.core.project.logger.Logger;
 import com.x.base.core.project.logger.LoggerFactory;
@@ -111,7 +108,7 @@ public class Applications extends ConcurrentHashMap<String, CopyOnWriteArrayList
 			throws Exception {
 		String name = this.findApplicationName(applicationName);
 		if (StringUtils.isEmpty(name)) {
-			throw new ExceptionFindApplicationName(applicationName);
+			throw new Exception("getQuery can not find application with name:" + applicationName + ".");
 		}
 		Application application = null;
 		if (StringUtils.isEmpty(seed)) {
@@ -126,59 +123,6 @@ public class Applications extends ConcurrentHashMap<String, CopyOnWriteArrayList
 		return CipherConnectionAction.get(xdebugger, application.getUrlJaxrsRoot() + CipherConnectionAction.trim(uri));
 	}
 
-	public byte[] getQueryBinary(Class<?> applicationClass, String uri) throws Exception {
-		return this.getQueryBinary(false, applicationClass.getName(), uri, null);
-	}
-
-	public byte[] getQueryBinary(Class<?> applicationClass, String uri, String seed) throws Exception {
-		return this.getQueryBinary(false, applicationClass.getName(), uri, seed);
-	}
-
-	public byte[] getQueryBinary(Boolean xdebugger, Class<?> applicationClass, String uri) throws Exception {
-		return this.getQueryBinary(xdebugger, applicationClass.getName(), uri, null);
-	}
-
-	public byte[] getQueryBinary(Boolean xdebugger, Class<?> applicationClass, String uri, String seed)
-			throws Exception {
-		return this.getQueryBinary(xdebugger, applicationClass.getName(), uri, seed);
-	}
-
-	public byte[] getQueryBinary(Application application, String uri) throws Exception {
-		return this.getQueryBinary(false, application, uri);
-	}
-
-	public byte[] getQueryBinary(Boolean xdebugger, Application application, String uri) throws Exception {
-		return CipherConnectionAction.getBinary(xdebugger,
-				application.getUrlJaxrsRoot() + CipherConnectionAction.trim(uri));
-	}
-
-	public byte[] getQueryBinary(String applicationName, String uri) throws Exception {
-		return getQueryBinary(false, applicationName, uri, null);
-	}
-
-	public byte[] getQueryBinary(String applicationName, String uri, String seed) throws Exception {
-		return getQueryBinary(false, applicationName, uri, seed);
-	}
-
-	public byte[] getQueryBinary(Boolean xdebugger, String applicationName, String uri, String seed) throws Exception {
-		String name = this.findApplicationName(applicationName);
-		if (StringUtils.isEmpty(name)) {
-			throw new ExceptionFindApplicationName(applicationName);
-		}
-		Application application = null;
-		if (StringUtils.isEmpty(seed)) {
-			// 如果随机种子是空,那么优先使用本机
-			application = this.findApplicationWithNode(name, Config.node());
-			if (null == application) {
-				application = this.randomWithWeight(name);
-			}
-		} else {
-			application = this.randomWithSeed(name, seed);
-		}
-		return CipherConnectionAction.getBinary(xdebugger,
-				application.getUrlJaxrsRoot() + CipherConnectionAction.trim(uri));
-	}
-
 	public ActionResponse deleteQuery(Class<?> applicationClass, String uri) throws Exception {
 		return this.deleteQuery(false, applicationClass.getName(), uri, null);
 	}
@@ -217,7 +161,7 @@ public class Applications extends ConcurrentHashMap<String, CopyOnWriteArrayList
 			throws Exception {
 		String name = this.findApplicationName(applicationName);
 		if (StringUtils.isEmpty(name)) {
-			throw new ExceptionFindApplicationName(applicationName);
+			throw new Exception("deleteQuery can not find application with name:" + applicationName + ".");
 		}
 		Application application = null;
 		if (StringUtils.isEmpty(seed)) {
@@ -233,60 +177,6 @@ public class Applications extends ConcurrentHashMap<String, CopyOnWriteArrayList
 				application.getUrlJaxrsRoot() + CipherConnectionAction.trim(uri));
 	}
 
-	public byte[] deleteQueryBinary(Class<?> applicationClass, String uri) throws Exception {
-		return this.deleteQueryBinary(false, applicationClass.getName(), uri, null);
-	}
-
-	public byte[] deleteQueryBinary(Class<?> applicationClass, String uri, String seed) throws Exception {
-		return this.deleteQueryBinary(false, applicationClass.getName(), uri, seed);
-	}
-
-	public byte[] deleteQueryBinary(Boolean xdebugger, Class<?> applicationClass, String uri) throws Exception {
-		return this.deleteQueryBinary(xdebugger, applicationClass.getName(), uri, null);
-	}
-
-	public byte[] deleteQueryBinary(Boolean xdebugger, Class<?> applicationClass, String uri, String seed)
-			throws Exception {
-		return this.deleteQueryBinary(xdebugger, applicationClass.getName(), uri, seed);
-	}
-
-	public byte[] deleteQueryBinary(Application application, String uri) throws Exception {
-		return this.deleteQueryBinary(false, application, uri);
-	}
-
-	public byte[] deleteQueryBinary(Boolean xdebugger, Application application, String uri) throws Exception {
-		return CipherConnectionAction.deleteBinary(xdebugger,
-				application.getUrlJaxrsRoot() + CipherConnectionAction.trim(uri));
-	}
-
-	public byte[] deleteQueryBinary(String applicationName, String uri) throws Exception {
-		return deleteQueryBinary(false, applicationName, uri, null);
-	}
-
-	public byte[] deleteQueryBinary(String applicationName, String uri, String seed) throws Exception {
-		return deleteQueryBinary(false, applicationName, uri, seed);
-	}
-
-	public byte[] deleteQueryBinary(Boolean xdebugger, String applicationName, String uri, String seed)
-			throws Exception {
-		String name = this.findApplicationName(applicationName);
-		if (StringUtils.isEmpty(name)) {
-			throw new ExceptionFindApplicationName(applicationName);
-		}
-		Application application = null;
-		if (StringUtils.isEmpty(seed)) {
-			// 如果随机种子是空,那么优先使用本机
-			application = this.findApplicationWithNode(name, Config.node());
-			if (null == application) {
-				application = this.randomWithWeight(name);
-			}
-		} else {
-			application = this.randomWithSeed(name, seed);
-		}
-		return CipherConnectionAction.deleteBinary(xdebugger,
-				application.getUrlJaxrsRoot() + CipherConnectionAction.trim(uri));
-	}
-
 	public ActionResponse postQuery(Class<?> applicationClass, String uri, Object body) throws Exception {
 		return this.postQuery(false, applicationClass.getName(), uri, body, null);
 	}
@@ -327,7 +217,7 @@ public class Applications extends ConcurrentHashMap<String, CopyOnWriteArrayList
 			throws Exception {
 		String name = this.findApplicationName(applicationName);
 		if (StringUtils.isEmpty(name)) {
-			throw new ExceptionFindApplicationName(applicationName);
+			throw new Exception("postQuery can not find application with name:" + applicationName + ".");
 		}
 		Application application = null;
 		if (StringUtils.isEmpty(seed)) {
@@ -343,123 +233,6 @@ public class Applications extends ConcurrentHashMap<String, CopyOnWriteArrayList
 				body);
 	}
 
-	public byte[] postQueryBinary(Class<?> applicationClass, String uri, Object body) throws Exception {
-		return this.postQueryBinary(false, applicationClass.getName(), uri, body, null);
-	}
-
-	public byte[] postQueryBinary(Class<?> applicationClass, String uri, Object body, String seed) throws Exception {
-		return this.postQueryBinary(false, applicationClass.getName(), uri, body, seed);
-	}
-
-	public byte[] postQueryBinary(Boolean xdebugger, Class<?> applicationClass, String uri, Object body)
-			throws Exception {
-		return this.postQueryBinary(xdebugger, applicationClass.getName(), uri, body, null);
-	}
-
-	public byte[] postQueryBinary(Boolean xdebugger, Class<?> applicationClass, String uri, Object body, String seed)
-			throws Exception {
-		return this.postQueryBinary(xdebugger, applicationClass.getName(), uri, body, seed);
-	}
-
-	public byte[] postQueryBinary(Application application, String uri, Object body) throws Exception {
-		return this.postQueryBinary(false, application, uri, body);
-	}
-
-	public byte[] postQueryBinary(Boolean xdebugger, Application application, String uri, Object body)
-			throws Exception {
-		return CipherConnectionAction.postBinary(xdebugger,
-				application.getUrlJaxrsRoot() + CipherConnectionAction.trim(uri), body);
-	}
-
-	public byte[] postQueryBinary(String applicationName, String uri, Object body) throws Exception {
-		return this.postQueryBinary(false, applicationName, uri, body, null);
-	}
-
-	public byte[] postQueryBinary(String applicationName, String uri, Object body, String seed) throws Exception {
-		return this.postQueryBinary(false, applicationName, uri, body, seed);
-	}
-
-	public byte[] postQueryBinary(Boolean xdebugger, String applicationName, String uri, Object body, String seed)
-			throws Exception {
-		String name = this.findApplicationName(applicationName);
-		if (StringUtils.isEmpty(name)) {
-			throw new ExceptionFindApplicationName(applicationName);
-		}
-		Application application = null;
-		if (StringUtils.isEmpty(seed)) {
-			// 如果随机种子是空,那么优先使用本机
-			application = this.findApplicationWithNode(name, Config.node());
-			if (null == application) {
-				application = this.randomWithWeight(name);
-			}
-		} else {
-			application = this.randomWithSeed(name, seed);
-		}
-		return CipherConnectionAction.postBinary(xdebugger,
-				application.getUrlJaxrsRoot() + CipherConnectionAction.trim(uri), body);
-	}
-
-	public byte[] postQueryMultiPartinary(Class<?> applicationClass, String uri, Collection<FormField> formFields,
-			Collection<FilePart> fileParts) throws Exception {
-		return this.postQueryMultiPartBinary(false, applicationClass.getName(), uri, formFields, fileParts, null);
-	}
-
-	public byte[] postQueryMultiPartBinary(Class<?> applicationClass, String uri, Collection<FormField> formFields,
-			Collection<FilePart> fileParts, String seed) throws Exception {
-		return this.postQueryMultiPartBinary(false, applicationClass.getName(), uri, formFields, fileParts, seed);
-	}
-
-	public byte[] postQueryMultiPartBinary(Boolean xdebugger, Class<?> applicationClass, String uri,
-			Collection<FormField> formFields, Collection<FilePart> fileParts) throws Exception {
-		return this.postQueryMultiPartBinary(xdebugger, applicationClass.getName(), uri, formFields, fileParts, null);
-	}
-
-	public byte[] postQueryMultiPartBinary(Boolean xdebugger, Class<?> applicationClass, String uri,
-			Collection<FormField> formFields, Collection<FilePart> fileParts, String seed) throws Exception {
-		return this.postQueryMultiPartBinary(xdebugger, applicationClass.getName(), uri, formFields, fileParts, seed);
-	}
-
-	public byte[] postQueryMultiPartBinary(Application application, String uri, Collection<FormField> formFields,
-			Collection<FilePart> fileParts) throws Exception {
-		return this.postQueryMultiPartBinary(false, application, uri, formFields, fileParts);
-	}
-
-	public byte[] postQueryMultiPartBinary(Boolean xdebugger, Application application, String uri,
-			Collection<FormField> formFields, Collection<FilePart> fileParts) throws Exception {
-		return CipherConnectionAction.postMultiPartBinary(xdebugger,
-				application.getUrlJaxrsRoot() + CipherConnectionAction.trim(uri), formFields, fileParts);
-	}
-
-	public byte[] postQueryMultiPartBinary(String applicationName, String uri, Collection<FormField> formFields,
-			Collection<FilePart> fileParts) throws Exception {
-		return this.postQueryMultiPartBinary(false, applicationName, uri, formFields, fileParts, null);
-	}
-
-	public byte[] postQueryMultiPartBinary(String applicationName, String uri, Collection<FormField> formFields,
-			Collection<FilePart> fileParts, String seed) throws Exception {
-		return this.postQueryMultiPartBinary(false, applicationName, uri, formFields, fileParts, seed);
-	}
-
-	public byte[] postQueryMultiPartBinary(Boolean xdebugger, String applicationName, String uri,
-			Collection<FormField> formFields, Collection<FilePart> fileParts, String seed) throws Exception {
-		String name = this.findApplicationName(applicationName);
-		if (StringUtils.isEmpty(name)) {
-			throw new ExceptionFindApplicationName(applicationName);
-		}
-		Application application = null;
-		if (StringUtils.isEmpty(seed)) {
-			// 如果随机种子是空,那么优先使用本机
-			application = this.findApplicationWithNode(name, Config.node());
-			if (null == application) {
-				application = this.randomWithWeight(name);
-			}
-		} else {
-			application = this.randomWithSeed(name, seed);
-		}
-		return CipherConnectionAction.postMultiPartBinary(xdebugger,
-				application.getUrlJaxrsRoot() + CipherConnectionAction.trim(uri), formFields, fileParts);
-	}
-
 	public ActionResponse putQuery(Class<?> applicationClass, String uri, Object body) throws Exception {
 		return this.putQuery(false, applicationClass.getName(), uri, body, null);
 	}
@@ -500,7 +273,7 @@ public class Applications extends ConcurrentHashMap<String, CopyOnWriteArrayList
 			throws Exception {
 		String name = this.findApplicationName(applicationName);
 		if (StringUtils.isEmpty(name)) {
-			throw new ExceptionFindApplicationName(applicationName);
+			throw new Exception("putQuery can not find application with name:" + applicationName + ".");
 		}
 		Application application = null;
 		if (StringUtils.isEmpty(seed)) {

+ 0 - 13
o2server/x_base_core_project/src/main/java/com/x/base/core/project/ExceptionFindApplicationName.java

@@ -1,13 +0,0 @@
-package com.x.base.core.project;
-
-import com.x.base.core.project.exception.PromptException;
-
-public class ExceptionFindApplicationName extends PromptException {
-
-	private static final long serialVersionUID = -7354813827434276962L;
-
-	public ExceptionFindApplicationName(String name) {
-		super("can not find application with name:{}.", name);
-	}
-
-}

+ 9 - 9
o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/Collect.java

@@ -173,14 +173,14 @@ public class Collect extends ConfigObject {
 		try {
 			URL url = new URL(this.url("/o2_collect_assemble/jaxrs/collect/validate"));
 			HttpURLConnection connection = (HttpURLConnection) url.openConnection();
-			connection.setRequestProperty(ConnectionAction.ACCESS_CONTROL_ALLOW_CREDENTIALS,
-					ConnectionAction.ACCESS_CONTROL_ALLOW_CREDENTIALS_VALUE);
-			connection.setRequestProperty(ConnectionAction.ACCESS_CONTROL_ALLOW_HEADERS,
-					ConnectionAction.ACCESS_CONTROL_ALLOW_HEADERS_VALUE);
-			connection.setRequestProperty(ConnectionAction.ACCESS_CONTROL_ALLOW_METHODS,
-					ConnectionAction.ACCESS_CONTROL_ALLOW_METHODS_VALUE);
-			connection.setRequestProperty(ConnectionAction.CACHE_CONTROL, ConnectionAction.CACHE_CONTROL_VALUE);
-			connection.setRequestProperty(ConnectionAction.CONTENT_TYPE, ConnectionAction.CONTENT_TYPE_VALUE);
+			connection.setRequestProperty(ConnectionAction.Access_Control_Allow_Credentials,
+					ConnectionAction.Access_Control_Allow_Credentials_Value);
+			connection.setRequestProperty(ConnectionAction.Access_Control_Allow_Headers,
+					ConnectionAction.Access_Control_Allow_Headers_Value);
+			connection.setRequestProperty(ConnectionAction.Access_Control_Allow_Methods,
+					ConnectionAction.Access_Control_Allow_Methods_Value);
+			connection.setRequestProperty(ConnectionAction.Cache_Control, ConnectionAction.Cache_Control_Value);
+			connection.setRequestProperty(ConnectionAction.Content_Type, ConnectionAction.Content_Type_Value);
 			connection.setRequestMethod("POST");
 			connection.setUseCaches(false);
 			connection.setDoOutput(true);
@@ -208,7 +208,7 @@ public class Collect extends ConfigObject {
 		return true;
 	}
 
-	public boolean connect() throws Exception {
+	public boolean connect() throws Exception{
 		if (!Config.collect().getEnable()) {
 			throw new ExceptionCollectDisable();
 		}

+ 18 - 257
o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/ProcessPlatform.java

@@ -1,52 +1,48 @@
 package com.x.base.core.project.config;
 
 import java.io.File;
-import java.util.List;
-import java.util.Optional;
 
-import com.x.base.core.project.annotation.FieldDescribe;
-import com.x.base.core.project.gson.XGsonBuilder;
-import com.x.base.core.project.tools.DefaultCharset;
-import com.x.base.core.project.tools.ListTools;
-
-import org.apache.commons.collections4.list.TreeList;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang3.BooleanUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.quartz.CronExpression;
 
+import com.x.base.core.project.annotation.FieldDescribe;
+import com.x.base.core.project.gson.XGsonBuilder;
+import com.x.base.core.project.tools.DefaultCharset;
+
 /**
  * @author Zhou Rui
  */
 public class ProcessPlatform extends ConfigObject {
 
-	public static final Integer DEFAULT_FORMVERSIONPERIOD = 45;
+	public final static Integer DEFAULT_FORMVERSIONPERIOD = 45;
 
-	public static final Integer DEFAULT_PROCESSVERSIONPERIOD = 45;
+	public final static Integer DEFAULT_PROCESSVERSIONPERIOD = 45;
 
-	public static final Integer DEFAULT_SCRIPTVERSIONPERIOD = 45;
+	public final static Integer DEFAULT_SCRIPTVERSIONPERIOD = 45;
 
-	public static final Integer DEFAULT_FORMVERSIONCOUNT = 30;
+	public final static Integer DEFAULT_FORMVERSIONCOUNT = 30;
 
-	public static final Integer DEFAULT_PROCESSVERSIONCOUNT = 30;
+	public final static Integer DEFAULT_PROCESSVERSIONCOUNT = 30;
 
-	public static final Integer DEFAULT_SCRIPTVERSIONCOUNT = 30;
+	public final static Integer DEFAULT_SCRIPTVERSIONCOUNT = 30;
 
-	public static final String DEFAULT_DOCTOWORDTYPE = "local";
+	public final static String DEFAULT_DOCTOWORDTYPE = "local";
 
-	public static final String DOCTOWORDTYPE_LOCAL = "local";
+	public final static String DOCTOWORDTYPE_LOCAL = "local";
 
-	public static final String DOCTOWORDTYPE_CLOUD = "cloud";
+	public final static String DOCTOWORDTYPE_CLOUD = "cloud";
 
-	public static final String DEFAULT_DOCTOWORDDEFAULTFILENAME = "正文.docx";
+	public final static String DEFAULT_DOCTOWORDDEFAULTFILENAME = "正文.docx";
 
-	public static final String DEFAULT_DOCTOWORDDEFAULTSITE = "$doc";
+	public final static String DEFAULT_DOCTOWORDDEFAULTSITE = "$doc";
 
-	public static final Integer DEFAULT_EXECUTORCOUNT = 32;
+	public final static Integer DEFAULT_EXECUTORCOUNT = 32;
 
-	public static final Boolean DEFAULT_DELETEPROCESSINUSE = false;
+	public final static Boolean DEFAULT_DELETEPROCESSINUSE = false;
 
-	public static final Boolean DEFAULT_DELETEAPPLICATIONINUSE = false;
+	public final static Boolean DEFAULT_DELETEAPPLICATIONINUSE = false;
 
 	public static ProcessPlatform defaultInstance() {
 		return new ProcessPlatform();
@@ -96,16 +92,6 @@ public class ProcessPlatform extends ConfigObject {
 	@FieldDescribe("执行器数量")
 	private Integer executorCount;
 
-	@FieldDescribe("扩充事件")
-	private ExtensionEvents extensionEvents = new ExtensionEvents();
-
-	public ExtensionEvents getExtensionEvents() {
-		if (null == this.extensionEvents) {
-			this.extensionEvents = new ExtensionEvents();
-		}
-		return extensionEvents;
-	}
-
 	public Integer getExecutorCount() {
 		return ((null == executorCount) || (executorCount < 1)) ? DEFAULT_EXECUTORCOUNT : this.executorCount;
 	}
@@ -553,229 +539,4 @@ public class ProcessPlatform extends ConfigObject {
 
 	}
 
-	public static class ExtensionEvents extends ConfigObject {
-
-		private WorkExtensionEvents workAttachmentUploadEvents = new WorkExtensionEvents();
-		private WorkExtensionEvents workAttachmentDownloadEvents = new WorkExtensionEvents();
-		private WorkExtensionEvents workDocToWordEvents = new WorkExtensionEvents();
-
-		private WorkCompletedExtensionEvents workCompletedAttachmentUploadEvents = new WorkCompletedExtensionEvents();
-		private WorkCompletedExtensionEvents workCompletedAttachmentDownloadEvents = new WorkCompletedExtensionEvents();
-		private WorkCompletedExtensionEvents workCompletedDocToWordEvents = new WorkCompletedExtensionEvents();
-
-		public WorkExtensionEvents getWorkAttachmentUploadEvents() {
-			if (null == this.workAttachmentUploadEvents) {
-				this.workAttachmentUploadEvents = new WorkExtensionEvents();
-			}
-			return workAttachmentUploadEvents;
-		}
-
-		public WorkExtensionEvents getWorkAttachmentDownloadEvents() {
-			if (null == this.workAttachmentDownloadEvents) {
-				this.workAttachmentDownloadEvents = new WorkExtensionEvents();
-			}
-			return workAttachmentDownloadEvents;
-		}
-
-		public WorkExtensionEvents getWorkDocToWordEvents() {
-			if (null == this.workDocToWordEvents) {
-				this.workDocToWordEvents = new WorkExtensionEvents();
-			}
-			return workDocToWordEvents;
-		}
-
-		public WorkCompletedExtensionEvents getWorkCompletedAttachmentUploadEvents() {
-			if (null == this.workCompletedAttachmentUploadEvents) {
-				this.workCompletedAttachmentUploadEvents = new WorkCompletedExtensionEvents();
-			}
-			return workCompletedAttachmentUploadEvents;
-		}
-
-		public WorkCompletedExtensionEvents getWorkCompletedAttachmentDownloadEvents() {
-			if (null == this.workCompletedAttachmentDownloadEvents) {
-				this.workCompletedAttachmentDownloadEvents = new WorkCompletedExtensionEvents();
-			}
-			return workCompletedAttachmentDownloadEvents;
-		}
-
-		public WorkCompletedExtensionEvents getWorkCompletedDocToWordEvents() {
-			if (null == this.workCompletedDocToWordEvents) {
-				this.workCompletedDocToWordEvents = new WorkCompletedExtensionEvents();
-			}
-			return workCompletedDocToWordEvents;
-		}
-
-	}
-
-	public static class WorkExtensionEvents extends TreeList<WorkExtensionEvent> {
-
-		public Optional<WorkExtensionEvent> bind(String application, String process, String activity) {
-			return this.stream().filter(o -> BooleanUtils.isTrue(o.getEnable()))
-					.filter(o -> (ListTools.contains(o.getApplications(), application)
-							&& ListTools.contains(o.getProcesses(), process)
-							&& ListTools.contains(o.getActivities(), activity))
-							|| (ListTools.contains(o.getApplications(), application)
-									&& ListTools.contains(o.getProcesses(), process)
-									&& ListTools.isEmpty(o.getActivities()))
-							|| (ListTools.contains(o.getApplications(), application)
-									&& ListTools.isEmpty(o.getProcesses()) && ListTools.isEmpty(o.getActivities()))
-							|| (ListTools.isEmpty(o.getApplications()) && ListTools.isEmpty(o.getProcesses())
-									&& ListTools.isEmpty(o.getActivities())))
-					.sorted((x, y) -> {
-						if (x.getActivities().contains(activity)) {
-							return 1;
-						} else if (y.getActivities().contains(activity)) {
-							return -1;
-						} else if (x.getProcesses().contains(process)) {
-							return 1;
-						} else if (y.getProcesses().contains(process)) {
-							return -1;
-						} else if (x.getApplications().contains(application)) {
-							return 1;
-						} else if (y.getApplications().contains(application)) {
-							return -1;
-						} else {
-							return 0;
-						}
-					}).findFirst();
-		}
-
-	}
-
-	public static class WorkExtensionEvent {
-
-		private Boolean enable;
-
-		private List<String> applications;
-		private List<String> processes;
-		private List<String> activities;
-
-		private String url;
-
-		private String custom;
-
-		public Boolean getEnable() {
-			return enable;
-		}
-
-		public void setEnable(Boolean enable) {
-			this.enable = enable;
-		}
-
-		public List<String> getApplications() {
-			return applications;
-		}
-
-		public void setApplications(List<String> applications) {
-			this.applications = applications;
-		}
-
-		public List<String> getProcesses() {
-			return processes;
-		}
-
-		public void setProcesses(List<String> processes) {
-			this.processes = processes;
-		}
-
-		public List<String> getActivities() {
-			return activities;
-		}
-
-		public void setActivities(List<String> activities) {
-			this.activities = activities;
-		}
-
-		public String getUrl() {
-			return url;
-		}
-
-		public void setUrl(String url) {
-			this.url = url;
-		}
-
-		public String getCustom() {
-			return custom;
-		}
-
-		public void setCustom(String custom) {
-			this.custom = custom;
-		}
-
-	}
-
-	public static class WorkCompletedExtensionEvents extends TreeList<WorkCompletedExtensionEvent> {
-		public Optional<WorkCompletedExtensionEvent> bind(String application, String process) {
-			return this.stream().filter(o -> BooleanUtils.isTrue(o.getEnable()))
-					.filter(o -> (ListTools.contains(o.getApplications(), application)
-							&& ListTools.contains(o.getProcesses(), process))
-							|| (ListTools.contains(o.getApplications(), application)
-									&& ListTools.isEmpty(o.getApplications()))
-							|| (ListTools.isEmpty(o.getApplications()) && ListTools.isEmpty(o.getProcesses())))
-					.sorted((x, y) -> {
-						if (x.getProcesses().contains(process)) {
-							return 1;
-						} else if (y.getProcesses().contains(process)) {
-							return -1;
-						} else if (x.getApplications().contains(application)) {
-							return 1;
-						} else if (y.getApplications().contains(application)) {
-							return -1;
-						} else {
-							return 0;
-						}
-					}).findFirst();
-		}
-	}
-
-	public static class WorkCompletedExtensionEvent {
-
-		private Boolean enable;
-		private List<String> applications;
-		private List<String> processes;
-		private String url;
-		private String custom;
-
-		public Boolean getEnable() {
-			return enable;
-		}
-
-		public void setEnable(Boolean enable) {
-			this.enable = enable;
-		}
-
-		public List<String> getApplications() {
-			return applications;
-		}
-
-		public void setApplications(List<String> applications) {
-			this.applications = applications;
-		}
-
-		public List<String> getProcesses() {
-			return processes;
-		}
-
-		public void setProcesses(List<String> processes) {
-			this.processes = processes;
-		}
-
-		public String getUrl() {
-			return url;
-		}
-
-		public void setUrl(String url) {
-			this.url = url;
-		}
-
-		public String getCustom() {
-			return custom;
-		}
-
-		public void setCustom(String custom) {
-			this.custom = custom;
-		}
-
-	}
-
 }

+ 6 - 85
o2server/x_base_core_project/src/main/java/com/x/base/core/project/connection/CipherConnectionAction.java

@@ -1,7 +1,10 @@
 package com.x.base.core.project.connection;
 
-import java.util.Collection;
 import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.lang3.BooleanUtils;
+import org.apache.commons.lang3.StringUtils;
 
 import com.x.base.core.project.Application;
 import com.x.base.core.project.Applications;
@@ -11,14 +14,8 @@ import com.x.base.core.project.http.EffectivePerson;
 import com.x.base.core.project.http.HttpToken;
 import com.x.base.core.project.tools.ListTools;
 
-import org.apache.commons.lang3.BooleanUtils;
-import org.apache.commons.lang3.StringUtils;
-
 public class CipherConnectionAction {
 
-	private CipherConnectionAction() {
-	}
-
 	public static ActionResponse get(Boolean xdebugger, String address) throws Exception {
 		List<NameValuePair> headers = cipher();
 		if (BooleanUtils.isTrue(xdebugger)) {
@@ -32,19 +29,6 @@ public class CipherConnectionAction {
 		return get(xdebugger, addr);
 	}
 
-	public static byte[] getBinary(Boolean xdebugger, String address) throws Exception {
-		List<NameValuePair> headers = cipher();
-		if (BooleanUtils.isTrue(xdebugger)) {
-			headers.add(new NameValuePair(HttpToken.X_Debugger, true));
-		}
-		return ConnectionAction.getBinary(address, headers);
-	}
-
-	public static byte[] getBinary(Boolean xdebugger, Application application, String... strs) throws Exception {
-		String addr = application.getUrlJaxrsRoot() + trim(Applications.joinQueryUri(strs));
-		return getBinary(xdebugger, addr);
-	}
-
 	public static ActionResponse delete(Boolean xdebugger, String address) throws Exception {
 		List<NameValuePair> headers = cipher();
 		if (BooleanUtils.isTrue(xdebugger)) {
@@ -58,19 +42,6 @@ public class CipherConnectionAction {
 		return delete(xdebugger, addr);
 	}
 
-	public static byte[] deleteBinary(Boolean xdebugger, String address) throws Exception {
-		List<NameValuePair> headers = cipher();
-		if (BooleanUtils.isTrue(xdebugger)) {
-			headers.add(new NameValuePair(HttpToken.X_Debugger, true));
-		}
-		return ConnectionAction.deleteBinary(address, headers);
-	}
-
-	public static byte[] deleteBinary(Boolean xdebugger, Application application, String... strs) throws Exception {
-		String addr = application.getUrlJaxrsRoot() + trim(Applications.joinQueryUri(strs));
-		return deleteBinary(xdebugger, addr);
-	}
-
 	public static ActionResponse post(Boolean xdebugger, String address, Object body) throws Exception {
 		List<NameValuePair> headers = cipher();
 		if (BooleanUtils.isTrue(xdebugger)) {
@@ -85,35 +56,6 @@ public class CipherConnectionAction {
 		return post(xdebugger, addr, body);
 	}
 
-	public static byte[] postBinary(Boolean xdebugger, String address, Object body) throws Exception {
-		List<NameValuePair> headers = cipher();
-		if (BooleanUtils.isTrue(xdebugger)) {
-			headers.add(new NameValuePair(HttpToken.X_Debugger, true));
-		}
-		return ConnectionAction.postBinary(address, headers, body);
-	}
-
-	public static byte[] postBinary(Boolean xdebugger, Object body, Application application, String... strs)
-			throws Exception {
-		String addr = application.getUrlJaxrsRoot() + trim(Applications.joinQueryUri(strs));
-		return postBinary(xdebugger, addr, body);
-	}
-
-	public static byte[] postMultiPartBinary(Boolean xdebugger, String address, Collection<FormField> formFields,
-			Collection<FilePart> fileParts) throws Exception {
-		List<NameValuePair> headers = cipher();
-		if (BooleanUtils.isTrue(xdebugger)) {
-			headers.add(new NameValuePair(HttpToken.X_Debugger, true));
-		}
-		return ConnectionAction.postMultiPartBinary(address, headers, formFields, fileParts);
-	}
-
-	public static byte[] postMultiPartBinary(Boolean xdebugger, Collection<FormField> formFields,
-			Collection<FilePart> fileParts, Application application, String... strs) throws Exception {
-		String addr = application.getUrlJaxrsRoot() + trim(Applications.joinQueryUri(strs));
-		return postMultiPartBinary(xdebugger, addr, formFields, fileParts);
-	}
-
 	public static ActionResponse put(Boolean xdebugger, String address, Object body) throws Exception {
 		List<NameValuePair> headers = cipher();
 		if (BooleanUtils.isTrue(xdebugger)) {
@@ -128,33 +70,12 @@ public class CipherConnectionAction {
 		return put(xdebugger, addr, body);
 	}
 
-	public static byte[] putBinary(Boolean xdebugger, String address, Object body) throws Exception {
-		List<NameValuePair> headers = cipher();
-		if (BooleanUtils.isTrue(xdebugger)) {
-			headers.add(new NameValuePair(HttpToken.X_Debugger, true));
-		}
-		return ConnectionAction.putBinary(address, headers, body);
-	}
-
-	public static byte[] putBinary(Boolean xdebugger, Object body, Application application, String... strs)
-			throws Exception {
-		String addr = application.getUrlJaxrsRoot() + trim(Applications.joinQueryUri(strs));
-		return putBinary(xdebugger, addr, body);
-	}
-
-	public static byte[] putMultiPartBinary(Boolean xdebugger, String address, Collection<FormField> formFields,
-			Collection<FilePart> fileParts) throws Exception {
+	public static ActionResponse multiFormPost(Boolean xdebugger, String address, String fileName, byte[] bytes, Map<String, String> map) throws Exception{
 		List<NameValuePair> headers = cipher();
 		if (BooleanUtils.isTrue(xdebugger)) {
 			headers.add(new NameValuePair(HttpToken.X_Debugger, true));
 		}
-		return ConnectionAction.putMultiPartBinary(address, headers, formFields, fileParts);
-	}
-
-	public static byte[] putMultiPartBinary(Boolean xdebugger, Collection<FormField> formFields,
-			Collection<FilePart> fileParts, Application application, String... strs) throws Exception {
-		String addr = application.getUrlJaxrsRoot() + trim(Applications.joinQueryUri(strs));
-		return putMultiPartBinary(xdebugger, addr, formFields, fileParts);
+		return ConnectionAction.multiFormPost(address, headers, fileName, bytes, map);
 	}
 
 	public static List<NameValuePair> cipher() throws Exception {

+ 145 - 236
o2server/x_base_core_project/src/main/java/com/x/base/core/project/connection/ConnectionAction.java

@@ -1,53 +1,49 @@
 package com.x.base.core.project.connection;
 
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.net.HttpURLConnection;
 import java.net.URL;
 import java.nio.charset.StandardCharsets;
-import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
-import java.util.TreeMap;
 
 import com.google.gson.Gson;
 import com.google.gson.JsonElement;
 import com.google.gson.JsonParseException;
 import com.x.base.core.project.bean.NameValuePair;
 import com.x.base.core.project.gson.XGsonBuilder;
-import com.x.base.core.project.http.ActionResult.Type;
 import com.x.base.core.project.tools.DefaultCharset;
 import com.x.base.core.project.tools.ListTools;
-import com.x.base.core.project.tools.StringTools;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.http.HttpEntity;
 import org.apache.http.HttpResponse;
+import org.apache.http.client.methods.CloseableHttpResponse;
 import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.ContentType;
+import org.apache.http.entity.mime.MultipartEntityBuilder;
 import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.impl.client.HttpClients;
+import org.apache.http.util.EntityUtils;
 
 public class ConnectionAction {
 
-	private ConnectionAction() {
-	}
-
-	public static final String ACCESS_CONTROL_ALLOW_CREDENTIALS = "Access-Control-Allow-Credentials";
-	public static final String ACCESS_CONTROL_ALLOW_CREDENTIALS_VALUE = "true";
-	public static final String ACCESS_CONTROL_ALLOW_HEADERS = "Access-Control-Allow-Headers";
-	public static final String ACCESS_CONTROL_ALLOW_HEADERS_VALUE = "x-requested-with, x-request, x-token,Content-Type, x-cipher, x-client";
-	public static final String ACCESS_CONTROL_ALLOW_METHODS = "Access-Control-Allow-Methods";
-	public static final String ACCESS_CONTROL_ALLOW_METHODS_VALUE = "GET, POST, OPTIONS, PUT, DELETE, HEAD, TRACE";
+	public static final String Access_Control_Allow_Credentials = "Access-Control-Allow-Credentials";
+	public static final String Access_Control_Allow_Credentials_Value = "true";
+	public static final String Access_Control_Allow_Headers = "Access-Control-Allow-Headers";
+	public static final String Access_Control_Allow_Headers_Value = "x-requested-with, x-request, x-token,Content-Type, x-cipher, x-client";
+	public static final String Access_Control_Allow_Methods = "Access-Control-Allow-Methods";
+	public static final String Access_Control_Allow_Methods_Value = "GET, POST, OPTIONS, PUT, DELETE, HEAD, TRACE";
 
-	public static final String CACHE_CONTROL = "Cache-Control";
-	public static final String CACHE_CONTROL_VALUE = "no-cache, no-transform";
-	public static final String CONTENT_TYPE = "Content-Type";
-	public static final String CONTENT_TYPE_VALUE = "application/json;charset=UTF-8";
-	public static final String CONTENT_LENGTH = "Content-Length";
+	public static final String Cache_Control = "Cache-Control";
+	public static final String Cache_Control_Value = "no-cache, no-transform";
+	public static final String Content_Type = "Content-Type";
+	public static final String Content_Type_Value = "application/json;charset=UTF-8";
 
 	public static final String METHOD_PUT = "PUT";
 	public static final String METHOD_POST = "POST";
@@ -56,95 +52,88 @@ public class ConnectionAction {
 
 	private static Gson gson = XGsonBuilder.instance();
 
-	private static ActionResponse getDelete(String address, String method, List<NameValuePair> heads) throws Exception {
+	public static ActionResponse get(String address, List<NameValuePair> heads) throws Exception {
 		ActionResponse response = new ActionResponse();
 		HttpURLConnection connection = null;
 		try {
 			URL url = new URL(address);
 			connection = (HttpURLConnection) url.openConnection();
 		} catch (Exception e) {
-			response.setType(Type.connectFatal);
-			response.setMessage(String.format("%s create connection error, address: %s, because: %s.", method, address,
-					e.getMessage()));
+			response.setType(ActionResponse.Type.connectFatal);
+			response.setMessage(
+					"ConnectionAction get create connection error, address:" + address + ", because:" + e.getMessage());
 			return response;
 		}
 		addHeads(connection, heads);
-		connection.setRequestMethod(method);
+		connection.setRequestMethod(METHOD_GET);
 		connection.setUseCaches(false);
 		connection.setDoOutput(false);
 		connection.setDoInput(true);
 		try {
+			/** 访问主机上的端口 */
 			connection.connect();
 		} catch (Exception e) {
-			response.setType(Type.connectFatal);
-			response.setMessage(String.format("%s connect connection error, address: %s, because: %s.", method, address,
-					e.getMessage()));
+			response.setType(ActionResponse.Type.connectFatal);
+			response.setMessage(
+					"ConnectionAction get connect error, address:" + address + ", because:" + e.getMessage());
 			return response;
 		}
 		return read(response, connection);
 	}
 
-	public static ActionResponse get(String address, List<NameValuePair> heads) throws Exception {
-		return getDelete(address, METHOD_GET, heads);
-	}
-
 	public static ActionResponse delete(String address, List<NameValuePair> heads) throws Exception {
-		return getDelete(address, METHOD_DELETE, heads);
-	}
-
-	private static byte[] getDeleteBinary(String address, String method, List<NameValuePair> heads) throws Exception {
+		ActionResponse response = new ActionResponse();
 		HttpURLConnection connection = null;
 		try {
 			URL url = new URL(address);
 			connection = (HttpURLConnection) url.openConnection();
 		} catch (Exception e) {
-			throw new ExceptionGetBinary(e, connection);
+			response.setType(ActionResponse.Type.connectFatal);
+			response.setMessage("ConnectionAction delete create connection error, address:" + address + ", because:"
+					+ e.getMessage());
+			return response;
 		}
 		addHeads(connection, heads);
-		connection.setRequestMethod(method);
+		connection.setRequestMethod(METHOD_DELETE);
 		connection.setUseCaches(false);
 		connection.setDoOutput(false);
 		connection.setDoInput(true);
 		try {
+			/** 访问主机上的端口 */
 			connection.connect();
 		} catch (Exception e) {
-			throw new ExceptionGetBinary(e, connection);
+			response.setType(ActionResponse.Type.connectFatal);
+			response.setMessage(
+					"ConnectionAction delete connect error, address:" + address + ", because:" + e.getMessage());
+			return response;
 		}
-		return readBinary(connection);
-	}
-
-	public static byte[] getBinary(String address, List<NameValuePair> heads) throws Exception {
-		return getDeleteBinary(address, METHOD_GET, heads);
-	}
-
-	public static byte[] deleteBinary(String address, List<NameValuePair> heads) throws Exception {
-		return getDeleteBinary(address, METHOD_DELETE, heads);
+		return read(response, connection);
 	}
 
-	public static ActionResponse postPut(String address, String method, List<NameValuePair> heads, Object body)
-			throws Exception {
+	public static ActionResponse post(String address, List<NameValuePair> heads, Object body) throws Exception {
 		ActionResponse response = new ActionResponse();
 		HttpURLConnection connection = null;
 		try {
 			URL url = new URL(address);
 			connection = (HttpURLConnection) url.openConnection();
 		} catch (Exception e) {
-			response.setType(Type.connectFatal);
-			response.setMessage(String.format("%s create connection error, address: %s, because: %s.", method, address,
-					e.getMessage()));
+			response.setType(ActionResponse.Type.connectFatal);
+			response.setMessage("create connection error, address:" + Objects.toString(connection.getURL())
+					+ ", method:" + connection.getRequestMethod() + ", because:" + e.getMessage() + ".");
 			return response;
 		}
 		addHeads(connection, heads);
-		connection.setRequestMethod(method);
+		connection.setRequestMethod(METHOD_POST);
 		connection.setUseCaches(false);
 		connection.setDoOutput(true);
 		connection.setDoInput(true);
 		try {
+			/** 访问主机上的端口 */
 			connection.connect();
 		} catch (Exception e) {
-			response.setType(Type.connectFatal);
-			response.setMessage(
-					String.format("%s connect error, address: %s, because: %s.", method, address, e.getMessage()));
+			response.setType(ActionResponse.Type.connectFatal);
+			response.setMessage("connect error, address:" + Objects.toString(connection.getURL()) + ", method:"
+					+ connection.getRequestMethod() + ", because:" + e.getMessage() + ".");
 			return response;
 		}
 		try (OutputStream output = connection.getOutputStream()) {
@@ -156,40 +145,39 @@ public class ConnectionAction {
 				}
 			}
 		} catch (Exception e) {
-			response.setType(Type.connectFatal);
-			response.setMessage(
-					String.format("%s ouput error, address: %s, because: %s.", method, address, e.getMessage()));
+			response.setType(ActionResponse.Type.connectFatal);
+			response.setMessage("output error, address:" + Objects.toString(connection.getURL()) + ", method:"
+					+ connection.getRequestMethod() + ", because:" + e.getMessage() + ".");
 			return response;
 		}
 		return read(response, connection);
 	}
 
-	public static ActionResponse post(String address, List<NameValuePair> heads, Object body) throws Exception {
-		return postPut(address, METHOD_POST, heads, body);
-	}
-
 	public static ActionResponse put(String address, List<NameValuePair> heads, Object body) throws Exception {
-		return postPut(address, METHOD_PUT, heads, body);
-	}
-
-	private static byte[] postPutBinary(String address, String method, List<NameValuePair> heads, Object body)
-			throws Exception {
+		ActionResponse response = new ActionResponse();
 		HttpURLConnection connection = null;
 		try {
 			URL url = new URL(address);
 			connection = (HttpURLConnection) url.openConnection();
 		} catch (Exception e) {
-			throw new ExceptionBinary(e, connection);
+			response.setType(ActionResponse.Type.connectFatal);
+			response.setMessage(
+					"ConnectionAction put create connection error, address:" + address + ", because:" + e.getMessage());
+			return response;
 		}
 		addHeads(connection, heads);
-		connection.setRequestMethod(method);
+		connection.setRequestMethod(METHOD_PUT);
 		connection.setUseCaches(false);
 		connection.setDoOutput(true);
 		connection.setDoInput(true);
 		try {
+			/** 访问主机上的端口 */
 			connection.connect();
 		} catch (Exception e) {
-			throw new ExceptionBinary(e, connection);
+			response.setType(ActionResponse.Type.connectFatal);
+			response.setMessage(
+					"ConnectionAction put connect error, address:" + address + ", because:" + e.getMessage());
+			return response;
 		}
 		try (OutputStream output = connection.getOutputStream()) {
 			if (null != body) {
@@ -200,114 +188,16 @@ public class ConnectionAction {
 				}
 			}
 		} catch (Exception e) {
-			throw new ExceptionBinary(e, connection);
-		}
-		return readBinary(connection);
-	}
-
-	public static byte[] postBinary(String address, List<NameValuePair> heads, Object body) throws Exception {
-		return postPutBinary(address, METHOD_POST, heads, body);
-	}
-
-	public static byte[] putBinary(String address, List<NameValuePair> heads, Object body) throws Exception {
-		return postPutBinary(address, METHOD_PUT, heads, body);
-	}
-
-	private static byte[] postPutMultiPartBinary(String address, String method, List<NameValuePair> heads,
-			Collection<FormField> formFields, Collection<FilePart> fileParts) throws Exception {
-		HttpURLConnection connection = null;
-		String boundary = StringTools.TWO_HYPHENS + StringTools.TWO_HYPHENS + System.currentTimeMillis();
-		try {
-			URL url = new URL(address);
-			connection = (HttpURLConnection) url.openConnection();
-		} catch (Exception e) {
-			throw new ExceptionMultiPartBinary(e, connection);
-		}
-		byte[] bytes = null;
-		try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream()) {
-			if (null != fileParts) {
-				for (FilePart filePart : fileParts) {
-					writeFilePart(byteArrayOutputStream, filePart, boundary);
-				}
-			}
-			if (null != formFields) {
-				for (FormField formField : formFields) {
-					writeFormField(byteArrayOutputStream, formField, boundary);
-				}
-			}
-			IOUtils.write(StringTools.TWO_HYPHENS + boundary + StringTools.TWO_HYPHENS, byteArrayOutputStream,
-					DefaultCharset.charset_utf_8);
-			bytes = byteArrayOutputStream.toByteArray();
-		} catch (Exception e) {
-			throw new ExceptionMultiPartBinary(e, connection);
-		}
-		addHeadsMultiPart(connection, heads, boundary);
-		connection.setRequestProperty(CONTENT_LENGTH, bytes.length + "");
-		connection.setRequestMethod(method);
-		connection.setUseCaches(false);
-		connection.setDoOutput(true);
-		connection.setDoInput(true);
-		try {
-			connection.connect();
-		} catch (Exception e) {
-			throw new ExceptionMultiPartBinary(e, connection);
-		}
-		try (OutputStream output = connection.getOutputStream()) {
-			IOUtils.write(bytes, output);
-		} catch (Exception e) {
-			throw new ExceptionMultiPartBinary(e, connection);
+			response.setType(ActionResponse.Type.connectFatal);
+			response.setMessage(
+					"ConnectionAction put output error: [" + address + "], " + e.getClass().getName() + ".");
+			return response;
 		}
-		return readBinary(connection);
-	}
-
-	public static byte[] postMultiPartBinary(String address, List<NameValuePair> heads,
-			Collection<FormField> formFields, Collection<FilePart> fileParts) throws Exception {
-		return postPutMultiPartBinary(address, METHOD_POST, heads, formFields, fileParts);
-	}
-
-	public static byte[] putMultiPartBinary(String address, List<NameValuePair> heads, Collection<FormField> formFields,
-			Collection<FilePart> fileParts) throws Exception {
-		return postPutMultiPartBinary(address, METHOD_PUT, heads, formFields, fileParts);
-	}
-
-	private static void writeFormField(OutputStream output, FormField formField, String boundary) throws IOException {
-		IOUtils.write(StringTools.TWO_HYPHENS + boundary, output, StandardCharsets.UTF_8);
-		IOUtils.write(StringTools.CRLF, output, StandardCharsets.UTF_8);
-		IOUtils.write("Content-Disposition: form-data; name=\"" + formField.getName() + "\"", output,
-				StandardCharsets.UTF_8);
-		IOUtils.write(StringTools.CRLF, output, StandardCharsets.UTF_8);
-		IOUtils.write("Content-Length: " + formField.getValue().getBytes(StandardCharsets.UTF_8).length, output,
-				StandardCharsets.UTF_8);
-		IOUtils.write(StringTools.CRLF, output, StandardCharsets.UTF_8);
-		IOUtils.write("Content-Type: text/plain; charset=" + StandardCharsets.UTF_8.name(), output,
-				StandardCharsets.UTF_8);
-		IOUtils.write(StringTools.CRLF, output, StandardCharsets.UTF_8);
-		IOUtils.write(StringTools.CRLF, output, StandardCharsets.UTF_8);
-		IOUtils.write(formField.getValue().getBytes(StandardCharsets.UTF_8), output);
-		IOUtils.write(StringTools.CRLF, output, StandardCharsets.UTF_8);
-	}
-
-	public static void writeFilePart(OutputStream output, FilePart filePart, String boundary) throws IOException {
-		IOUtils.write(StringTools.TWO_HYPHENS + boundary, output, StandardCharsets.UTF_8);
-		IOUtils.write(StringTools.CRLF, output, StandardCharsets.UTF_8);
-		IOUtils.write(
-				"Content-Disposition: form-data; name=\"" + filePart.getName().getBytes(StandardCharsets.UTF_8)
-						+ "\"; filename=\"" + filePart.getFileName().getBytes(StandardCharsets.UTF_8) + "\"",
-				output, StandardCharsets.UTF_8);
-		IOUtils.write(StringTools.CRLF, output, StandardCharsets.UTF_8);
-		IOUtils.write("Content-Length: " + filePart.getBytes().length, output, StandardCharsets.UTF_8);
-		IOUtils.write(StringTools.CRLF, output, StandardCharsets.UTF_8);
-		IOUtils.write("Content-Type: " + filePart.getContentType(), output, StandardCharsets.UTF_8);
-		IOUtils.write(StringTools.CRLF, output, StandardCharsets.UTF_8);
-		IOUtils.write(String.format("Content-Length: %d", filePart.getBytes().length), output, StandardCharsets.UTF_8);
-		IOUtils.write(StringTools.CRLF, output, StandardCharsets.UTF_8);
-		IOUtils.write(StringTools.CRLF, output, StandardCharsets.UTF_8);
-		IOUtils.write(filePart.getBytes(), output);
-		IOUtils.write(StringTools.CRLF, output, StandardCharsets.UTF_8);
+		return read(response, connection);
 	}
 
 	public static byte[] getFile(String address, List<NameValuePair> heads) throws Exception {
-		try (CloseableHttpClient httpclient = HttpClients.createDefault()) {
+		try(CloseableHttpClient httpclient = HttpClients.createDefault()){
 			HttpGet httpget = new HttpGet(address);
 			if (ListTools.isNotEmpty(heads)) {
 				String name;
@@ -322,9 +212,9 @@ public class ConnectionAction {
 			}
 			HttpResponse response = httpclient.execute(httpget);
 			HttpEntity entity = response.getEntity();
-			if (entity != null) {
+			if(entity!=null) {
 				InputStream in = entity.getContent();
-				if (in != null) {
+				if (in != null){
 					return IOUtils.toByteArray(in);
 				}
 			}
@@ -332,6 +222,53 @@ public class ConnectionAction {
 		return null;
 	}
 
+	public static ActionResponse multiFormPost(String address, List<NameValuePair> heads, String fileName, byte[] bytes,
+			Map<String, String> map) throws Exception {
+		ActionResponse response = new ActionResponse();
+		try {
+			CloseableHttpClient httpClient = HttpClients.createDefault();
+			HttpPost uploadFile = new HttpPost(address);
+			MultipartEntityBuilder builder = MultipartEntityBuilder.create();
+			builder.addTextBody("fileName", fileName, ContentType.TEXT_PLAIN);
+			if (map != null) {
+				for (String key : map.keySet()) {
+					builder.addTextBody(key, map.get(key), ContentType.TEXT_PLAIN);
+				}
+			}
+			builder.addBinaryBody("file", bytes, ContentType.APPLICATION_OCTET_STREAM, fileName);
+			HttpEntity multipart = builder.build();
+			uploadFile.setEntity(multipart);
+			if (ListTools.isNotEmpty(heads)) {
+				String name;
+				String value;
+				for (NameValuePair o : heads) {
+					name = Objects.toString(o.getName(), "");
+					value = Objects.toString(o.getValue(), "");
+					if (StringUtils.isNotEmpty(name) && StringUtils.isNotEmpty(value)) {
+						uploadFile.addHeader(name, value);
+					}
+				}
+			}
+			CloseableHttpResponse httpResponse = httpClient.execute(uploadFile);
+			HttpEntity responseEntity = httpResponse.getEntity();
+			String value = EntityUtils.toString(responseEntity, DefaultCharset.name);
+			try {
+				response = gson.fromJson(value, ActionResponse.class);
+			} catch (Exception e) {
+				response.setType(ActionResponse.Type.connectFatal);
+				response.setMessage("convert to json error, address:" + address + ", method: multiFormPost, because:"
+						+ e.getMessage() + ", value:" + value + ".");
+			}
+			httpClient.close();
+		} catch (Exception e) {
+			response.setType(ActionResponse.Type.connectFatal);
+			response.setMessage(
+					"ConnectionAction multiFormPost output error: [" + address + "], " + e.getClass().getName() + ".");
+			return response;
+		}
+		return response;
+	}
+
 	private static String extractErrorMessageIfExist(String str) {
 		if (StringUtils.isBlank(str)) {
 			return "";
@@ -345,7 +282,9 @@ public class ConnectionAction {
 				}
 			}
 		} catch (JsonParseException e) {
-			// nothing
+			/*
+			 * pass
+			 */
 		}
 		return str;
 	}
@@ -356,85 +295,55 @@ public class ConnectionAction {
 			try (InputStream input = connection.getErrorStream()) {
 				byte[] buffer = IOUtils.toByteArray(input);
 				response.setMessage(extractErrorMessageIfExist(new String(buffer, DefaultCharset.name)));
-				response.setType(Type.error);
+				response.setType(ActionResponse.Type.error);
+			} catch (Exception e) {
+				response.setType(ActionResponse.Type.connectFatal);
+				response.setMessage("read input error, address:" + Objects.toString(connection.getURL()) + ", method:"
+						+ connection.getRequestMethod() + ", because:" + e.getMessage() + ".");
 			}
 		} else if (code >= 400) {
-			response.setMessage(String.format("url invalid error, address: %s, method: %s, code: %d.",
-					Objects.toString(connection.getURL()), connection.getRequestMethod(), code));
-			response.setType(Type.error);
+			response.setMessage(" url invalid error, address:" + Objects.toString(connection.getURL()) + ", method:"
+					+ connection.getRequestMethod() + ".");
+			response.setType(ActionResponse.Type.error);
 		} else if (code == 200) {
 			try (InputStream input = connection.getInputStream()) {
 				byte[] buffer = IOUtils.toByteArray(input);
 				String value = new String(buffer, DefaultCharset.name);
-				response = gson.fromJson(value, ActionResponse.class);
+				try {
+					response = gson.fromJson(value, ActionResponse.class);
+				} catch (Exception e) {
+					response.setType(ActionResponse.Type.connectFatal);
+					response.setMessage("convert to json error, address:" + Objects.toString(connection.getURL())
+							+ ", method:" + connection.getRequestMethod() + ", because:" + e.getMessage() + ", value:"
+							+ value + ".");
+				}
 			} catch (Exception e) {
-				response.setType(Type.connectFatal);
-				response.setMessage(String.format(
-						"convert input to json error, address: %s, method: %s, code: %d, because: %s.",
-						Objects.toString(connection.getURL()), connection.getRequestMethod(), code, e.getMessage()));
+				response.setType(ActionResponse.Type.connectFatal);
+				response.setMessage("read input error, address:" + Objects.toString(connection.getURL()) + ", method:"
+						+ connection.getRequestMethod() + ", because:" + e.getMessage() + ".");
 			}
 		}
 		connection.disconnect();
 		return response;
 	}
 
-	private static byte[] readBinary(HttpURLConnection connection) throws Exception {
-		int code = connection.getResponseCode();
-		byte[] bytes = null;
-		if (code >= 500) {
-			try (InputStream input = connection.getErrorStream()) {
-				byte[] buffer = IOUtils.toByteArray(input);
-				throw new ExceptionReadBinary(connection.getURL(), connection.getRequestMethod(), code, buffer);
-			}
-		} else if (code >= 400) {
-			throw new ExceptionReadBinary(connection.getURL(), connection.getRequestMethod(), code);
-		} else if (code == 200) {
-			try (InputStream input = connection.getInputStream()) {
-				bytes = IOUtils.toByteArray(input);
-			} catch (Exception e) {
-				throw new ExceptionReadBinary(e, connection, code);
-			}
-		}
-		connection.disconnect();
-		return bytes;
-	}
-
 	private static void addHeads(HttpURLConnection connection, List<NameValuePair> heads) {
-		Map<String, String> map = new TreeMap<>();
-		map.put(ACCESS_CONTROL_ALLOW_CREDENTIALS, ACCESS_CONTROL_ALLOW_CREDENTIALS_VALUE);
-		map.put(ACCESS_CONTROL_ALLOW_HEADERS, ACCESS_CONTROL_ALLOW_HEADERS_VALUE);
-		map.put(ACCESS_CONTROL_ALLOW_METHODS, ACCESS_CONTROL_ALLOW_METHODS_VALUE);
-		map.put(CACHE_CONTROL, CACHE_CONTROL_VALUE);
-		map.put(CONTENT_TYPE, CONTENT_TYPE_VALUE);
-		if (ListTools.isNotEmpty(heads)) {
-			String value;
-			for (NameValuePair o : heads) {
-				value = Objects.toString(o.getValue(), "");
-				if (StringUtils.isNotEmpty(o.getName()) && StringUtils.isNotEmpty(value)) {
-					map.put(o.getName(), value);
-				}
-			}
-		}
-		map.entrySet().forEach((o -> connection.addRequestProperty(o.getKey(), o.getValue())));
-	}
-
-	private static void addHeadsMultiPart(HttpURLConnection connection, List<NameValuePair> heads, String boundary) {
-		Map<String, String> map = new TreeMap<>();
-		map.put(ACCESS_CONTROL_ALLOW_CREDENTIALS, ACCESS_CONTROL_ALLOW_CREDENTIALS_VALUE);
-		map.put(ACCESS_CONTROL_ALLOW_HEADERS, ACCESS_CONTROL_ALLOW_HEADERS_VALUE);
-		map.put(ACCESS_CONTROL_ALLOW_METHODS, ACCESS_CONTROL_ALLOW_METHODS_VALUE);
-		map.put(CACHE_CONTROL, CACHE_CONTROL_VALUE);
-		connection.setRequestProperty(CONTENT_TYPE, String.format("multipart/form-data; boundary=%s", boundary));
+		connection.setRequestProperty(Access_Control_Allow_Credentials, Access_Control_Allow_Credentials_Value);
+		connection.setRequestProperty(Access_Control_Allow_Headers, Access_Control_Allow_Headers_Value);
+		connection.setRequestProperty(Access_Control_Allow_Methods, Access_Control_Allow_Methods_Value);
+		connection.setRequestProperty(Cache_Control, Cache_Control_Value);
+		connection.setRequestProperty(Content_Type, Content_Type_Value);
 		if (ListTools.isNotEmpty(heads)) {
+			String name;
 			String value;
 			for (NameValuePair o : heads) {
+				name = Objects.toString(o.getName(), "");
 				value = Objects.toString(o.getValue(), "");
-				if (StringUtils.isNotEmpty(o.getName()) && StringUtils.isNotEmpty(value)) {
-					map.put(o.getName(), value);
+				if (StringUtils.isNotEmpty(name) && StringUtils.isNotEmpty(value)) {
+					connection.setRequestProperty(name, value);
 				}
 			}
 		}
-		map.entrySet().forEach((o -> connection.addRequestProperty(o.getKey(), o.getValue())));
 	}
 
 }

+ 0 - 21
o2server/x_base_core_project/src/main/java/com/x/base/core/project/connection/ExceptionBinary.java

@@ -1,21 +0,0 @@
-package com.x.base.core.project.connection;
-
-import java.net.HttpURLConnection;
-
-import com.x.base.core.project.exception.PromptException;
-
-public class ExceptionBinary extends PromptException {
-
-	private static final long serialVersionUID = 7551134321893884285L;
-
-	public ExceptionBinary(Throwable e, HttpURLConnection connection) {
-		super(e, "binary error, address: {}, method: {}, because: {}.", null == connection ? null : connection.getURL(),
-				null == connection ? null : connection.getRequestMethod(), e.getMessage());
-	}
-
-	public ExceptionBinary(HttpURLConnection connection) {
-		super("binary error, address: {}, method: {}.", null == connection ? null : connection.getURL(),
-				null == connection ? null : connection.getRequestMethod());
-	}
-
-}

+ 0 - 22
o2server/x_base_core_project/src/main/java/com/x/base/core/project/connection/ExceptionDeleteBinary.java

@@ -1,22 +0,0 @@
-package com.x.base.core.project.connection;
-
-import java.net.HttpURLConnection;
-
-import com.x.base.core.project.exception.PromptException;
-
-public class ExceptionDeleteBinary extends PromptException {
-
-	private static final long serialVersionUID = 7551134321893884285L;
-
-	public ExceptionDeleteBinary(Throwable e, HttpURLConnection connection) {
-		super(e, "delete binary error, address: {}, method: {}, because: {}.",
-				null == connection ? null : connection.getURL(),
-				null == connection ? null : connection.getRequestMethod(), e.getMessage());
-	}
-
-	public ExceptionDeleteBinary(HttpURLConnection connection) {
-		super("delete binary error, address: {}, method: {}.", null == connection ? null : connection.getURL(),
-				null == connection ? null : connection.getRequestMethod());
-	}
-
-}

+ 0 - 22
o2server/x_base_core_project/src/main/java/com/x/base/core/project/connection/ExceptionGetBinary.java

@@ -1,22 +0,0 @@
-package com.x.base.core.project.connection;
-
-import java.net.HttpURLConnection;
-
-import com.x.base.core.project.exception.PromptException;
-
-public class ExceptionGetBinary extends PromptException {
-
-	private static final long serialVersionUID = 7551134321893884285L;
-
-	public ExceptionGetBinary(Throwable e, HttpURLConnection connection) {
-		super(e, "get binary error, address: {}, method: {}, because: {}.",
-				null == connection ? null : connection.getURL(),
-				null == connection ? null : connection.getRequestMethod(), e.getMessage());
-	}
-
-	public ExceptionGetBinary(HttpURLConnection connection) {
-		super("get binary error, address: {}, method: {}.", null == connection ? null : connection.getURL(),
-				null == connection ? null : connection.getRequestMethod());
-	}
-
-}

+ 0 - 22
o2server/x_base_core_project/src/main/java/com/x/base/core/project/connection/ExceptionMultiPartBinary.java

@@ -1,22 +0,0 @@
-package com.x.base.core.project.connection;
-
-import java.net.HttpURLConnection;
-
-import com.x.base.core.project.exception.PromptException;
-
-public class ExceptionMultiPartBinary extends PromptException {
-
-	private static final long serialVersionUID = 7551134321893884285L;
-
-	public ExceptionMultiPartBinary(Throwable e, HttpURLConnection connection) {
-		super(e, "multiPart binary error, address: {}, method: {}, because: {}.",
-				null == connection ? null : connection.getURL(),
-				null == connection ? null : connection.getRequestMethod(), e.getMessage());
-	}
-
-	public ExceptionMultiPartBinary(HttpURLConnection connection) {
-		super("multiPart binary error, address: {}, method: {}.", null == connection ? null : connection.getURL(),
-				null == connection ? null : connection.getRequestMethod());
-	}
-
-}

+ 0 - 26
o2server/x_base_core_project/src/main/java/com/x/base/core/project/connection/ExceptionReadBinary.java

@@ -1,26 +0,0 @@
-package com.x.base.core.project.connection;
-
-import java.net.HttpURLConnection;
-import java.net.URL;
-
-import com.x.base.core.project.exception.PromptException;
-
-public class ExceptionReadBinary extends PromptException {
-
-	private static final long serialVersionUID = 7551134321893884285L;
-
-	public ExceptionReadBinary(Throwable e, HttpURLConnection connection, int code) {
-		super(e, "read binary input error, address: {}, method: {}, code: {}, because: {}.",
-				null == connection ? null : connection.getURL(),
-				null == connection ? null : connection.getRequestMethod(), code, e.getMessage());
-	}
-
-	public ExceptionReadBinary(URL url, String method, int code) {
-		super("read binary input error, address: {}, method: {}, code: {}.", url, method, code);
-	}
-
-	public ExceptionReadBinary(URL url, String method, int code, byte[] bytes) {
-		super("read binary input error, address: {}, method: {}, code:{}, because: {}.", url, method, code,
-				new String(bytes));
-	}
-}

+ 0 - 57
o2server/x_base_core_project/src/main/java/com/x/base/core/project/connection/FilePart.java

@@ -1,57 +0,0 @@
-package com.x.base.core.project.connection;
-
-import com.x.base.core.project.gson.GsonPropertyObject;
-import com.x.base.core.project.tools.StringTools;
-
-import org.apache.commons.lang3.StringUtils;
-
-public class FilePart extends GsonPropertyObject {
-
-    public FilePart(String fileName, byte[] bytes, String contentType, String name) {
-        this.fileName = fileName;
-        this.bytes = bytes;
-        this.contentType = contentType;
-        this.name = name;
-    }
-
-    private String name;
-
-    private String fileName;
-
-    private byte[] bytes;
-
-    private String contentType;
-
-    public String getName() {
-        return StringUtils.isEmpty(name) ? "file_" + StringTools.uniqueToken() : name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public byte[] getBytes() {
-        return bytes;
-    }
-
-    public void setBytes(byte[] bytes) {
-        this.bytes = bytes;
-    }
-
-    public String getContentType() {
-        return contentType;
-    }
-
-    public void setContentType(String contentType) {
-        this.contentType = contentType;
-    }
-
-    public String getFileName() {
-        return fileName;
-    }
-
-    public void setFileName(String fileName) {
-        this.fileName = fileName;
-    }
-
-}

+ 0 - 34
o2server/x_base_core_project/src/main/java/com/x/base/core/project/connection/FormField.java

@@ -1,34 +0,0 @@
-package com.x.base.core.project.connection;
-
-import java.util.Objects;
-
-import com.x.base.core.project.gson.GsonPropertyObject;
-
-public class FormField extends GsonPropertyObject {
-
-    public FormField(String name, Object value) {
-        this.name = name;
-        this.value = Objects.toString(value, "");
-    }
-
-    private String name;
-
-    private String value;
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getValue() {
-        return value;
-    }
-
-    public void setValue(String value) {
-        this.value = value;
-    }
-
-}

+ 8 - 7
o2server/x_base_core_project/src/main/java/com/x/base/core/project/message/MessageConnector.java

@@ -9,6 +9,7 @@ import com.x.base.core.project.x_message_assemble_communicate;
 import com.x.base.core.project.annotation.FieldDescribe;
 import com.x.base.core.project.gson.GsonPropertyObject;
 import com.x.base.core.project.gson.XGsonBuilder;
+import com.x.base.core.project.logger.LoggerFactory;
 
 public class MessageConnector {
 
@@ -94,17 +95,17 @@ public class MessageConnector {
 	public static final String TYPE_CALENDAR_ALARM = "calendar_alarm";
 
 	public static final String TYPE_CUSTOM_CREATE = "custom_create";
-
+	
 	public static final String TYPE_TEAMWORK_TASKCREATE = "teamwork_taskCreate";
-
+	
 	public static final String TYPE_TEAMWORK_TASKUPDATE = "teamwork_taskUpdate";
-
+	
 	public static final String TYPE_TEAMWORK_TASKDELETE = "teamwork_taskDelelte";
-
+	
 	public static final String TYPE_TEAMWORK_TASKOVERTIME = "teamwork_taskOvertime";
-
+	
 	public static final String TYPE_TEAMWORK_CHAT = "teamwork_taskChat";
-
+	
 	public static final String TYPE_CMS_PUBLISH = "cms_publish";
 
 	public static final String TYPE_BBS_SUBJECTCREATE = "bbs_subjectCreate";
@@ -115,7 +116,7 @@ public class MessageConnector {
 
 	public static final String TYPE_MIND_FILESHARE = "mind_fileShare";
 
-	// IM 聊天消息发送
+	//IM 聊天消息发送
 	public static final String TYPE_IM_CREATE = "im_create";
 
 	public static final String CONSUME_WS = "ws";

+ 0 - 6
o2server/x_base_core_project/src/main/java/com/x/base/core/project/tools/StringTools.java

@@ -54,12 +54,6 @@ public class StringTools {
 
 	public static final char SQL_ESCAPE_CHAR = '^';
 
-	public static final String CRLF = "\r\n";
-	public static final String CR = "\r";
-	public static final String LF = "\n";
-
-	public static final String TWO_HYPHENS = "--";
-
 	private static final Random random = new Random();
 
 	public static int utf8Length(String str) {

+ 0 - 32
o2server/x_base_core_project/src/main/java/com/x/base/core/project/utils/time/TestClient.java

@@ -1,32 +0,0 @@
-package com.x.base.core.project.utils.time;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
-import com.x.base.core.project.bean.NameValuePair;
-import com.x.base.core.project.connection.ConnectionAction;
-import com.x.base.core.project.connection.FilePart;
-import com.x.base.core.project.connection.FormField;
-
-import org.apache.commons.io.FileUtils;
-
-public class TestClient {
-	public static void main(String... args) throws Exception {
-		System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
-		// c-token=jlMh2guoFias7Q1qQBSV6SdJ1SIVwfXgyzmmtJsPH9k
-		// jsonData=4f7089f7-865a-4fa5-9107-069527a0650c
-		List<FormField> fl = new ArrayList<>();
-		FormField f = new FormField("jsonData", "4f7089f7-865a-4fa5-9107-069527a0650c");
-		fl.add(f);
-		List<FilePart> pl = new ArrayList<>();
-		FilePart p = new FilePart("1.txt", FileUtils.readFileToByteArray(new File("d:/1.txt")), "text/plain", "file");
-		pl.add(p);
-		List<NameValuePair> nl = new ArrayList<>();
-		nl.add(new NameValuePair("c-token", "jlMh2guoFias7Q1qQBSV6SdJ1SIVwfXgyzmmtJsPH9k"));
-		byte[] bytes = ConnectionAction.postBinary(
-				"http://114.116.108.117:20080/o2_collect_assemble/jaxrs/attachment/download/4f7089f7-865a-4fa5-9107-069527a0650c/post",
-				nl, "{'ddd':'ddd'}");
-		FileUtils.writeByteArrayToFile(new File("d:/2.jpg"), bytes);
-	}
-}

+ 1 - 0
o2server/x_bbs_assemble_control/src/main/webapp/WEB-INF/web.xml

@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><web-app id="x_bbs_assemble_control" metadata-complete="false" version="3.0"><display-name>x_bbs_assemble_control</display-name><context-param><param-name>project</param-name><param-value>com.x.base.core.project.x_bbs_assemble_control</param-value></context-param></web-app>

+ 1 - 0
o2server/x_calendar_assemble_control/src/main/webapp/WEB-INF/web.xml

@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><web-app id="x_calendar_assemble_control" metadata-complete="false" version="3.0"><display-name>x_calendar_assemble_control</display-name><context-param><param-name>project</param-name><param-value>com.x.base.core.project.x_calendar_assemble_control</param-value></context-param></web-app>

+ 1 - 0
o2server/x_cms_assemble_control/src/main/webapp/WEB-INF/web.xml

@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><web-app id="x_cms_assemble_control" metadata-complete="false" version="3.0"><display-name>x_cms_assemble_control</display-name><context-param><param-name>project</param-name><param-value>com.x.base.core.project.x_cms_assemble_control</param-value></context-param></web-app>

+ 195 - 0
o2server/x_organization_assemble_control/src/main/webapp/WEB-INF/web1.xml

@@ -0,0 +1,195 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app id="x_organization_assemble_control"
+	metadata-complete="true" version="3.0">
+	<display-name>x_organization_assemble_control</display-name>
+	<context-param>
+		<param-name>project</param-name>
+		<param-value>com.x.base.core.project.x_organization_assemble_control
+		</param-value>
+	</context-param>
+	<listener>
+		<listener-class>com.x.organization.assemble.control.ApplicationServletContextListener
+		</listener-class>
+	</listener>
+	<servlet>
+		<servlet-name>ActionApplication</servlet-name>
+		<servlet-class>org.glassfish.jersey.servlet.ServletContainer
+		</servlet-class>
+		<async-supported>true</async-supported>
+		<init-param>
+			<param-name>javax.ws.rs.Application</param-name>
+			<param-value>com.x.organization.assemble.control.jaxrs.ActionApplication
+			</param-value>
+		</init-param>
+	</servlet>
+	<filter>
+		<filter-name>CacheJaxrsFilter</filter-name>
+		<filter-class>com.x.base.core.project.jaxrs.CacheJaxrsFilter
+		</filter-class>
+		<async-supported>true</async-supported>
+	</filter>
+	<filter-mapping>
+		<filter-name>CacheJaxrsFilter</filter-name>
+		<url-pattern>[Ljava.lang.String;@1554909b</url-pattern>
+	</filter-mapping>
+	<filter>
+		<filter-name>EchoJaxrsFilter</filter-name>
+		<filter-class>com.x.base.core.project.jaxrs.EchoJaxrsFilter
+		</filter-class>
+		<async-supported>true</async-supported>
+	</filter>
+	<filter-mapping>
+		<filter-name>EchoJaxrsFilter</filter-name>
+		<url-pattern>[Ljava.lang.String;@6aaa5eb0</url-pattern>
+	</filter-mapping>
+	<filter>
+		<filter-name>FireScheduleJaxrsFilter</filter-name>
+		<filter-class>com.x.base.core.project.jaxrs.FireScheduleJaxrsFilter
+		</filter-class>
+		<async-supported>true</async-supported>
+	</filter>
+	<filter-mapping>
+		<filter-name>FireScheduleJaxrsFilter</filter-name>
+		<url-pattern>[Ljava.lang.String;@3d8c7aca</url-pattern>
+	</filter-mapping>
+	<filter>
+		<filter-name>LoggerJaxrsFilter</filter-name>
+		<filter-class>com.x.base.core.project.jaxrs.LoggerJaxrsFilter
+		</filter-class>
+		<async-supported>true</async-supported>
+	</filter>
+	<filter-mapping>
+		<filter-name>LoggerJaxrsFilter</filter-name>
+		<url-pattern>[Ljava.lang.String;@380fb434</url-pattern>
+	</filter-mapping>
+	<filter>
+		<filter-name>ExportJaxrsFilter</filter-name>
+		<filter-class>com.x.organization.assemble.control.jaxrs.ExportJaxrsFilter
+		</filter-class>
+		<async-supported>true</async-supported>
+	</filter>
+	<filter-mapping>
+		<filter-name>ExportJaxrsFilter</filter-name>
+		<url-pattern>[Ljava.lang.String;@668bc3d5</url-pattern>
+	</filter-mapping>
+	<filter>
+		<filter-name>FunctionJaxrsFilter</filter-name>
+		<filter-class>com.x.organization.assemble.control.jaxrs.FunctionJaxrsFilter
+		</filter-class>
+		<async-supported>true</async-supported>
+	</filter>
+	<filter-mapping>
+		<filter-name>FunctionJaxrsFilter</filter-name>
+		<url-pattern>[Ljava.lang.String;@3cda1055</url-pattern>
+	</filter-mapping>
+	<filter>
+		<filter-name>GroupJaxrsFilter</filter-name>
+		<filter-class>com.x.organization.assemble.control.jaxrs.GroupJaxrsFilter
+		</filter-class>
+		<async-supported>true</async-supported>
+	</filter>
+	<filter-mapping>
+		<filter-name>GroupJaxrsFilter</filter-name>
+		<url-pattern>[Ljava.lang.String;@79b4d0f</url-pattern>
+	</filter-mapping>
+	<filter>
+		<filter-name>IdentityJaxrsFilter</filter-name>
+		<filter-class>com.x.organization.assemble.control.jaxrs.IdentityJaxrsFilter
+		</filter-class>
+		<async-supported>true</async-supported>
+	</filter>
+	<filter-mapping>
+		<filter-name>IdentityJaxrsFilter</filter-name>
+		<url-pattern>[Ljava.lang.String;@6b2fad11</url-pattern>
+	</filter-mapping>
+	<filter>
+		<filter-name>InputPersonFilter</filter-name>
+		<filter-class>com.x.organization.assemble.control.jaxrs.InputPersonFilter
+		</filter-class>
+		<async-supported>true</async-supported>
+	</filter>
+	<filter-mapping>
+		<filter-name>InputPersonFilter</filter-name>
+		<url-pattern>[Ljava.lang.String;@79698539</url-pattern>
+	</filter-mapping>
+	<filter>
+		<filter-name>LoginRecordFilter</filter-name>
+		<filter-class>com.x.organization.assemble.control.jaxrs.LoginRecordFilter
+		</filter-class>
+		<async-supported>true</async-supported>
+	</filter>
+	<filter-mapping>
+		<filter-name>LoginRecordFilter</filter-name>
+		<url-pattern>[Ljava.lang.String;@73f792cf</url-pattern>
+	</filter-mapping>
+	<filter>
+		<filter-name>PersonAttributeJaxrsFilter</filter-name>
+		<filter-class>com.x.organization.assemble.control.jaxrs.PersonAttributeJaxrsFilter
+		</filter-class>
+		<async-supported>true</async-supported>
+	</filter>
+	<filter-mapping>
+		<filter-name>PersonAttributeJaxrsFilter</filter-name>
+		<url-pattern>[Ljava.lang.String;@2ed94a8b</url-pattern>
+	</filter-mapping>
+	<filter>
+		<filter-name>PersonJaxrsFilter</filter-name>
+		<filter-class>com.x.organization.assemble.control.jaxrs.PersonJaxrsFilter
+		</filter-class>
+		<async-supported>true</async-supported>
+	</filter>
+	<filter-mapping>
+		<filter-name>PersonJaxrsFilter</filter-name>
+		<url-pattern>[Ljava.lang.String;@38082d64</url-pattern>
+	</filter-mapping>
+	<filter>
+		<filter-name>RoleFilter</filter-name>
+		<filter-class>com.x.organization.assemble.control.jaxrs.RoleFilter
+		</filter-class>
+		<async-supported>true</async-supported>
+	</filter>
+	<filter-mapping>
+		<filter-name>RoleFilter</filter-name>
+		<url-pattern>[Ljava.lang.String;@dfd3711</url-pattern>
+	</filter-mapping>
+	<filter>
+		<filter-name>TestFilter</filter-name>
+		<filter-class>com.x.organization.assemble.control.jaxrs.TestFilter
+		</filter-class>
+		<async-supported>true</async-supported>
+	</filter>
+	<filter-mapping>
+		<filter-name>TestFilter</filter-name>
+		<url-pattern>[Ljava.lang.String;@42d3bd8b</url-pattern>
+	</filter-mapping>
+	<filter>
+		<filter-name>UnitAttributeFilter</filter-name>
+		<filter-class>com.x.organization.assemble.control.jaxrs.UnitAttributeFilter
+		</filter-class>
+		<async-supported>true</async-supported>
+	</filter>
+	<filter-mapping>
+		<filter-name>UnitAttributeFilter</filter-name>
+		<url-pattern>[Ljava.lang.String;@3b81a1bc</url-pattern>
+	</filter-mapping>
+	<filter>
+		<filter-name>UnitDutyFilter</filter-name>
+		<filter-class>com.x.organization.assemble.control.jaxrs.UnitDutyFilter
+		</filter-class>
+		<async-supported>true</async-supported>
+	</filter>
+	<filter-mapping>
+		<filter-name>UnitDutyFilter</filter-name>
+		<url-pattern>[Ljava.lang.String;@13fee20c</url-pattern>
+	</filter-mapping>
+	<filter>
+		<filter-name>UnitFilter</filter-name>
+		<filter-class>com.x.organization.assemble.control.jaxrs.UnitFilter
+		</filter-class>
+		<async-supported>true</async-supported>
+	</filter>
+	<filter-mapping>
+		<filter-name>UnitFilter</filter-name>
+		<url-pattern>[Ljava.lang.String;@4e04a765</url-pattern>
+	</filter-mapping>
+</web-app>

+ 27 - 0
o2server/x_organization_assemble_control/src/main/webapp/WEB-INF/web_back.xml

@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app id="x_organization_assemble_control"
+	metadata-complete="true" version="3.0">
+	<display-name>x_organization_assemble_control</display-name>
+	<context-param>
+		<param-name>project</param-name>
+		<param-value>com.x.base.core.project.x_organization_assemble_control
+		</param-value>
+	</context-param>
+
+	<listener>
+		<listener-class>com.x.organization.assemble.control.ApplicationServletContextListener
+		</listener-class>
+	</listener>
+
+	<servlet>
+		<servlet-name>ActionApplication</servlet-name>
+		<servlet-class>org.glassfish.jersey.servlet.ServletContainer
+		</servlet-class>
+		<init-param>
+			<param-name>javax.ws.rs.Application</param-name>
+			<param-value>com.x.organization.assemble.control.jaxrs.ActionApplication
+			</param-value>
+		</init-param>
+	</servlet>
+
+</web-app>

+ 14 - 92
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/attachment/ActionDocToWordWorkOrWorkCompleted.java

@@ -5,7 +5,6 @@ import java.io.ByteArrayOutputStream;
 import java.io.InputStream;
 import java.util.Date;
 import java.util.List;
-import java.util.Optional;
 
 import com.google.gson.JsonElement;
 import com.x.base.core.container.EntityManagerContainer;
@@ -14,10 +13,7 @@ import com.x.base.core.entity.annotation.CheckPersistType;
 import com.x.base.core.project.annotation.FieldDescribe;
 import com.x.base.core.project.config.Config;
 import com.x.base.core.project.config.ProcessPlatform;
-import com.x.base.core.project.config.ProcessPlatform.WorkCompletedExtensionEvent;
-import com.x.base.core.project.config.ProcessPlatform.WorkExtensionEvent;
 import com.x.base.core.project.config.StorageMapping;
-import com.x.base.core.project.connection.CipherConnectionAction;
 import com.x.base.core.project.exception.ExceptionAccessDenied;
 import com.x.base.core.project.exception.ExceptionEntityNotExist;
 import com.x.base.core.project.gson.GsonPropertyObject;
@@ -71,72 +67,15 @@ class ActionDocToWordWorkOrWorkCompleted extends BaseAction {
 
 	}
 
-	private byte[] workConvert(EffectivePerson effectivePerson, Wi wi, String application, String process,
-			String activity) throws Exception {
-		byte[] bytes = null;
-		Optional<WorkExtensionEvent> event = Config.processPlatform().getExtensionEvents().getWorkDocToWordEvents()
-				.bind(application, process, activity);
-		if (event.isPresent()) {
-			bytes = this.workExtensionService(effectivePerson, wi.getContent(), event.get());
-		} else {
-			if (StringUtils.equals(ProcessPlatform.DOCTOWORDTYPE_CLOUD, Config.processPlatform().getDocToWordType())) {
-				bytes = DocumentTools.docToWord(wi.getFileName(), wi.getContent());
-			} else {
-				bytes = this.local(wi);
-			}
-		}
-		return bytes;
-	}
-
-	private byte[] workExtensionService(EffectivePerson effectivePerson, String content, WorkExtensionEvent event)
-			throws Exception {
-		byte[] bytes = null;
-		Req req = new Req();
-		req.setContent(content);
-		req.setPerson(effectivePerson.getDistinguishedName());
-		if (StringUtils.isNotEmpty(event.getCustom())) {
-			bytes = ThisApplication.context().applications().postQueryBinary(event.getCustom(), event.getUrl(), req);
-		} else {
-			bytes = CipherConnectionAction.postBinary(effectivePerson.getDebugger(), event.getUrl(), req);
-		}
-		return bytes;
-	}
-
-	private byte[] workCompletedConvert(EffectivePerson effectivePerson, Wi wi, String application, String process)
-			throws Exception {
+	private Wo work(EffectivePerson effectivePerson, Wi wi, Work work) throws Exception {
+		String person = effectivePerson.isCipher() ? work.getCreatorPerson() : effectivePerson.getDistinguishedName();
 		byte[] bytes = null;
-		Optional<WorkCompletedExtensionEvent> event = Config.processPlatform().getExtensionEvents()
-				.getWorkCompletedDocToWordEvents().bind(application, process);
-		if (event.isPresent()) {
-			bytes = this.workCompletedExtensionService(effectivePerson, wi.getContent(), event.get());
-		} else {
-			if (StringUtils.equals(ProcessPlatform.DOCTOWORDTYPE_CLOUD, Config.processPlatform().getDocToWordType())) {
-				bytes = DocumentTools.docToWord(wi.getFileName(), wi.getContent());
-			} else {
-				bytes = this.local(wi);
-			}
-		}
-		return bytes;
-	}
 
-	private byte[] workCompletedExtensionService(EffectivePerson effectivePerson, String content,
-			WorkCompletedExtensionEvent event) throws Exception {
-		byte[] bytes = null;
-		Req req = new Req();
-		req.setContent(content);
-		req.setPerson(effectivePerson.getDistinguishedName());
-		if (StringUtils.isNotEmpty(event.getCustom())) {
-			bytes = ThisApplication.context().applications().postQueryBinary(event.getCustom(), event.getUrl(), req);
+		if (StringUtils.equals(ProcessPlatform.DOCTOWORDTYPE_CLOUD, Config.processPlatform().getDocToWordType())) {
+			bytes = DocumentTools.docToWord(wi.getFileName(), wi.getContent());
 		} else {
-			bytes = CipherConnectionAction.postBinary(effectivePerson.getDebugger(), event.getUrl(), req);
+			bytes = this.local(wi);
 		}
-		return bytes;
-	}
-
-	private Wo work(EffectivePerson effectivePerson, Wi wi, Work work) throws Exception {
-		String person = effectivePerson.isCipher() ? work.getCreatorPerson() : effectivePerson.getDistinguishedName();
-		byte[] bytes = this.workConvert(effectivePerson, wi, work.getApplication(), work.getProcess(),
-				work.getActivity());
 		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
 			List<Attachment> attachments = emc.listEqual(Attachment.class, Attachment.job_FIELDNAME, work.getJob());
 			Attachment attachment = null;
@@ -188,8 +127,13 @@ class ActionDocToWordWorkOrWorkCompleted extends BaseAction {
 	private Wo workCompleted(EffectivePerson effectivePerson, Wi wi, WorkCompleted workCompleted) throws Exception {
 		String person = effectivePerson.isCipher() ? workCompleted.getCreatorPerson()
 				: effectivePerson.getDistinguishedName();
-		byte[] bytes = this.workCompletedConvert(effectivePerson, wi, workCompleted.getApplication(),
-				workCompleted.getProcess());
+		byte[] bytes = null;
+
+		if (StringUtils.equals(ProcessPlatform.DOCTOWORDTYPE_CLOUD, Config.processPlatform().getDocToWordType())) {
+			bytes = DocumentTools.docToWord(wi.getFileName(), wi.getContent());
+		} else {
+			bytes = this.local(wi);
+		}
 		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
 			List<Attachment> attachments = emc.listEqual(Attachment.class, Attachment.job_FIELDNAME,
 					workCompleted.getJob());
@@ -226,6 +170,8 @@ class ActionDocToWordWorkOrWorkCompleted extends BaseAction {
 				attachment.setJob(workCompleted.getJob());
 				attachment.setActivity(workCompleted.getActivity());
 				attachment.setActivityName(workCompleted.getActivityName());
+				// attachment.setActivityToken(workCompleted.getActivityToken());
+				// attachment.setActivityType(workCompleted.getActivityType());
 				attachment.saveContent(mapping, bytes, wi.getFileName());
 				attachment.setType((new Tika()).detect(bytes, wi.getFileName()));
 				emc.persist(attachment, CheckPersistType.all);
@@ -284,28 +230,4 @@ class ActionDocToWordWorkOrWorkCompleted extends BaseAction {
 		}
 
 	}
-
-	public static class Req {
-
-		private String person;
-
-		private String content;
-
-		public String getPerson() {
-			return person;
-		}
-
-		public void setPerson(String person) {
-			this.person = person;
-		}
-
-		public String getContent() {
-			return content;
-		}
-
-		public void setContent(String content) {
-			this.content = content;
-		}
-	}
-
 }

+ 11 - 59
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/attachment/ActionDownloadWithWork.java

@@ -1,13 +1,11 @@
 package com.x.processplatform.assemble.surface.jaxrs.attachment;
 
-import java.util.Optional;
+import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.lang3.BooleanUtils;
 
 import com.x.base.core.container.EntityManagerContainer;
 import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.project.config.Config;
-import com.x.base.core.project.config.ProcessPlatform.WorkExtensionEvent;
 import com.x.base.core.project.config.StorageMapping;
-import com.x.base.core.project.connection.CipherConnectionAction;
 import com.x.base.core.project.exception.ExceptionAccessDenied;
 import com.x.base.core.project.exception.ExceptionEntityNotExist;
 import com.x.base.core.project.http.ActionResult;
@@ -18,14 +16,10 @@ import com.x.processplatform.assemble.surface.ThisApplication;
 import com.x.processplatform.assemble.surface.WorkControl;
 import com.x.processplatform.core.entity.content.Attachment;
 import com.x.processplatform.core.entity.content.Work;
-
-import org.apache.commons.io.FilenameUtils;
-import org.apache.commons.lang3.BooleanUtils;
 import org.apache.commons.lang3.StringUtils;
 
 class ActionDownloadWithWork extends BaseAction {
-	ActionResult<Wo> execute(EffectivePerson effectivePerson, String id, String workId, String fileName)
-			throws Exception {
+	ActionResult<Wo> execute(EffectivePerson effectivePerson, String id, String workId, String fileName) throws Exception {
 
 		ActionResult<Wo> result = new ActionResult<>();
 		Work work = null;
@@ -34,9 +28,11 @@ class ActionDownloadWithWork extends BaseAction {
 		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
 			Business business = new Business(emc);
 			work = emc.find(workId, Work.class);
+			/** 判断work是否存在 */
 			if (null == work) {
 				throw new ExceptionEntityNotExist(workId, Work.class);
 			}
+			/** 判断attachment是否存在 */
 			attachment = emc.find(id, Attachment.class);
 			if (null == attachment) {
 				throw new ExceptionEntityNotExist(id, Attachment.class);
@@ -49,64 +45,20 @@ class ActionDownloadWithWork extends BaseAction {
 		}
 		StorageMapping mapping = ThisApplication.context().storageMappings().get(Attachment.class,
 				attachment.getStorage());
-		if (StringUtils.isBlank(fileName)) {
+		if(StringUtils.isBlank(fileName)){
 			fileName = attachment.getName();
-		} else {
+		}else{
 			String extension = FilenameUtils.getExtension(fileName);
-			if (StringUtils.isEmpty(extension)) {
-				fileName = fileName + "." + attachment.getExtension();
+			if(StringUtils.isEmpty(extension)){
+				fileName = fileName+ "." + attachment.getExtension();
 			}
 		}
-		byte[] bytes = null;
-		Optional<WorkExtensionEvent> event = Config.processPlatform().getExtensionEvents()
-				.getWorkAttachmentDownloadEvents().bind(work.getApplication(), work.getProcess(), work.getActivity());
-		if (event.isPresent()) {
-			bytes = this.extensionService(effectivePerson, attachment.getId(), event.get());
-		} else {
-			bytes = attachment.readContent(mapping);
-		}
-		Wo wo = new Wo(bytes, this.contentType(false, fileName), this.contentDisposition(false, fileName));
+		Wo wo = new Wo(attachment.readContent(mapping), this.contentType(false, fileName),
+				this.contentDisposition(false, fileName));
 		result.setData(wo);
 		return result;
 	}
 
-	private byte[] extensionService(EffectivePerson effectivePerson, String id, WorkExtensionEvent event)
-			throws Exception {
-		byte[] bytes = null;
-		Req req = new Req();
-		req.setPerson(effectivePerson.getDistinguishedName());
-		req.setAttachment(id);
-		if (StringUtils.isNotEmpty(event.getCustom())) {
-			bytes = ThisApplication.context().applications().postQueryBinary(event.getCustom(), event.getUrl(), req);
-		} else {
-			bytes = CipherConnectionAction.postBinary(effectivePerson.getDebugger(), event.getUrl(), req);
-		}
-		return bytes;
-	}
-
-	public static class Req {
-
-		private String person;
-		private String attachment;
-
-		public String getPerson() {
-			return person;
-		}
-
-		public void setPerson(String person) {
-			this.person = person;
-		}
-
-		public String getAttachment() {
-			return attachment;
-		}
-
-		public void setAttachment(String attachment) {
-			this.attachment = attachment;
-		}
-
-	}
-
 	public static class Wo extends WoFile {
 
 		public Wo(byte[] bytes, String contentType, String contentDisposition) {

+ 12 - 62
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/attachment/ActionDownloadWithWorkCompleted.java

@@ -1,14 +1,13 @@
 package com.x.processplatform.assemble.surface.jaxrs.attachment;
 
 import java.util.List;
-import java.util.Optional;
+
+import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.lang3.BooleanUtils;
 
 import com.x.base.core.container.EntityManagerContainer;
 import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.project.config.Config;
-import com.x.base.core.project.config.ProcessPlatform.WorkCompletedExtensionEvent;
 import com.x.base.core.project.config.StorageMapping;
-import com.x.base.core.project.connection.CipherConnectionAction;
 import com.x.base.core.project.exception.ExceptionEntityNotExist;
 import com.x.base.core.project.http.ActionResult;
 import com.x.base.core.project.http.EffectivePerson;
@@ -18,19 +17,15 @@ import com.x.processplatform.assemble.surface.ThisApplication;
 import com.x.processplatform.assemble.surface.WorkCompletedControl;
 import com.x.processplatform.core.entity.content.Attachment;
 import com.x.processplatform.core.entity.content.WorkCompleted;
-
-import org.apache.commons.io.FilenameUtils;
-import org.apache.commons.lang3.BooleanUtils;
 import org.apache.commons.lang3.StringUtils;
 
 class ActionDownloadWithWorkCompleted extends BaseAction {
-	ActionResult<Wo> execute(EffectivePerson effectivePerson, String id, String workCompletedId, String fileName)
-			throws Exception {
-
+	ActionResult<Wo> execute(EffectivePerson effectivePerson, String id, String workCompletedId, String fileName) throws Exception {
+		
 		ActionResult<Wo> result = new ActionResult<>();
 		WorkCompleted workCompleted = null;
 		Attachment attachment = null;
-
+		
 		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
 			Business business = new Business(emc);
 			workCompleted = emc.find(workCompletedId, WorkCompleted.class);
@@ -54,65 +49,20 @@ class ActionDownloadWithWorkCompleted extends BaseAction {
 		}
 		StorageMapping mapping = ThisApplication.context().storageMappings().get(Attachment.class,
 				attachment.getStorage());
-		if (StringUtils.isBlank(fileName)) {
+		if(StringUtils.isBlank(fileName)){
 			fileName = attachment.getName();
-		} else {
+		}else{
 			String extension = FilenameUtils.getExtension(fileName);
-			if (StringUtils.isEmpty(extension)) {
-				fileName = fileName + "." + attachment.getExtension();
+			if(StringUtils.isEmpty(extension)){
+				fileName = fileName+ "." + attachment.getExtension();
 			}
 		}
-		byte[] bytes = null;
-		Optional<WorkCompletedExtensionEvent> event = Config.processPlatform().getExtensionEvents()
-				.getWorkCompletedAttachmentDownloadEvents()
-				.bind(workCompleted.getApplication(), workCompleted.getProcess());
-		if (event.isPresent()) {
-			bytes = this.extensionService(effectivePerson, attachment.getId(), event.get());
-		} else {
-			bytes = attachment.readContent(mapping);
-		}
-		Wo wo = new Wo(bytes, this.contentType(false, fileName), this.contentDisposition(false, fileName));
+		Wo wo = new Wo(attachment.readContent(mapping), this.contentType(false, fileName),
+				this.contentDisposition(false, fileName));
 		result.setData(wo);
 		return result;
 	}
 
-	private byte[] extensionService(EffectivePerson effectivePerson, String id, WorkCompletedExtensionEvent event)
-			throws Exception {
-		byte[] bytes = null;
-		Req req = new Req();
-		req.setPerson(effectivePerson.getDistinguishedName());
-		req.setAttachment(id);
-		if (StringUtils.isNotEmpty(event.getCustom())) {
-			bytes = ThisApplication.context().applications().postQueryBinary(event.getCustom(), event.getUrl(), req);
-		} else {
-			bytes = CipherConnectionAction.postBinary(effectivePerson.getDebugger(), event.getUrl(), req);
-		}
-		return bytes;
-	}
-
-	public static class Req {
-
-		private String person;
-		private String attachment;
-
-		public String getPerson() {
-			return person;
-		}
-
-		public void setPerson(String person) {
-			this.person = person;
-		}
-
-		public String getAttachment() {
-			return attachment;
-		}
-
-		public void setAttachment(String attachment) {
-			this.attachment = attachment;
-		}
-
-	}
-
 	public static class Wo extends WoFile {
 
 		public Wo(byte[] bytes, String contentType, String contentDisposition) {

+ 12 - 62
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/attachment/ActionDownloadWithWorkCompletedStream.java

@@ -1,14 +1,13 @@
 package com.x.processplatform.assemble.surface.jaxrs.attachment;
 
 import java.util.List;
-import java.util.Optional;
+
+import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.lang3.BooleanUtils;
 
 import com.x.base.core.container.EntityManagerContainer;
 import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.project.config.Config;
-import com.x.base.core.project.config.ProcessPlatform.WorkCompletedExtensionEvent;
 import com.x.base.core.project.config.StorageMapping;
-import com.x.base.core.project.connection.CipherConnectionAction;
 import com.x.base.core.project.exception.ExceptionEntityNotExist;
 import com.x.base.core.project.http.ActionResult;
 import com.x.base.core.project.http.EffectivePerson;
@@ -18,19 +17,15 @@ import com.x.processplatform.assemble.surface.ThisApplication;
 import com.x.processplatform.assemble.surface.WorkCompletedControl;
 import com.x.processplatform.core.entity.content.Attachment;
 import com.x.processplatform.core.entity.content.WorkCompleted;
-
-import org.apache.commons.io.FilenameUtils;
-import org.apache.commons.lang3.BooleanUtils;
 import org.apache.commons.lang3.StringUtils;
 
 class ActionDownloadWithWorkCompletedStream extends BaseAction {
-	ActionResult<Wo> execute(EffectivePerson effectivePerson, String id, String workCompletedId, String fileName)
-			throws Exception {
-
+	ActionResult<Wo> execute(EffectivePerson effectivePerson, String id, String workCompletedId, String fileName) throws Exception {
+		
 		ActionResult<Wo> result = new ActionResult<>();
 		WorkCompleted workCompleted = null;
 		Attachment attachment = null;
-
+	
 		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
 			Business business = new Business(emc);
 			workCompleted = emc.find(workCompletedId, WorkCompleted.class);
@@ -54,65 +49,20 @@ class ActionDownloadWithWorkCompletedStream extends BaseAction {
 		}
 		StorageMapping mapping = ThisApplication.context().storageMappings().get(Attachment.class,
 				attachment.getStorage());
-		if (StringUtils.isBlank(fileName)) {
+		if(StringUtils.isBlank(fileName)){
 			fileName = attachment.getName();
-		} else {
+		}else{
 			String extension = FilenameUtils.getExtension(fileName);
-			if (StringUtils.isEmpty(extension)) {
-				fileName = fileName + "." + attachment.getExtension();
+			if(StringUtils.isEmpty(extension)){
+				fileName = fileName+ "." + attachment.getExtension();
 			}
 		}
-		byte[] bytes = null;
-		Optional<WorkCompletedExtensionEvent> event = Config.processPlatform().getExtensionEvents()
-				.getWorkCompletedAttachmentDownloadEvents()
-				.bind(workCompleted.getApplication(), workCompleted.getProcess());
-		if (event.isPresent()) {
-			bytes = this.extensionService(effectivePerson, attachment.getId(), event.get());
-		} else {
-			bytes = attachment.readContent(mapping);
-		}
-		Wo wo = new Wo(bytes, this.contentType(true, fileName), this.contentDisposition(true, fileName));
+		Wo wo = new Wo(attachment.readContent(mapping), this.contentType(true, fileName),
+				this.contentDisposition(true, fileName));
 		result.setData(wo);
 		return result;
 	}
 
-	private byte[] extensionService(EffectivePerson effectivePerson, String id, WorkCompletedExtensionEvent event)
-			throws Exception {
-		byte[] bytes = null;
-		Req req = new Req();
-		req.setPerson(effectivePerson.getDistinguishedName());
-		req.setAttachment(id);
-		if (StringUtils.isNotEmpty(event.getCustom())) {
-			bytes = ThisApplication.context().applications().postQueryBinary(event.getCustom(), event.getUrl(), req);
-		} else {
-			bytes = CipherConnectionAction.postBinary(effectivePerson.getDebugger(), event.getUrl(), req);
-		}
-		return bytes;
-	}
-
-	public static class Req {
-
-		private String person;
-		private String attachment;
-
-		public String getPerson() {
-			return person;
-		}
-
-		public void setPerson(String person) {
-			this.person = person;
-		}
-
-		public String getAttachment() {
-			return attachment;
-		}
-
-		public void setAttachment(String attachment) {
-			this.attachment = attachment;
-		}
-
-	}
-
 	public static class Wo extends WoFile {
 
 		public Wo(byte[] bytes, String contentType, String contentDisposition) {

+ 9 - 61
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/attachment/ActionDownloadWithWorkStream.java

@@ -1,13 +1,11 @@
 package com.x.processplatform.assemble.surface.jaxrs.attachment;
 
-import java.util.Optional;
+import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.lang3.BooleanUtils;
 
 import com.x.base.core.container.EntityManagerContainer;
 import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.project.config.Config;
-import com.x.base.core.project.config.ProcessPlatform.WorkExtensionEvent;
 import com.x.base.core.project.config.StorageMapping;
-import com.x.base.core.project.connection.CipherConnectionAction;
 import com.x.base.core.project.exception.ExceptionAccessDenied;
 import com.x.base.core.project.exception.ExceptionEntityNotExist;
 import com.x.base.core.project.http.ActionResult;
@@ -18,14 +16,10 @@ import com.x.processplatform.assemble.surface.ThisApplication;
 import com.x.processplatform.assemble.surface.WorkControl;
 import com.x.processplatform.core.entity.content.Attachment;
 import com.x.processplatform.core.entity.content.Work;
-
-import org.apache.commons.io.FilenameUtils;
-import org.apache.commons.lang3.BooleanUtils;
 import org.apache.commons.lang3.StringUtils;
 
 class ActionDownloadWithWorkStream extends BaseAction {
-	ActionResult<Wo> execute(EffectivePerson effectivePerson, String id, String workId, String fileName)
-			throws Exception {
+	ActionResult<Wo> execute(EffectivePerson effectivePerson, String id, String workId, String fileName) throws Exception {
 		ActionResult<Wo> result = new ActionResult<>();
 		Work work = null;
 		Attachment attachment = null;
@@ -50,66 +44,20 @@ class ActionDownloadWithWorkStream extends BaseAction {
 		}
 		StorageMapping mapping = ThisApplication.context().storageMappings().get(Attachment.class,
 				attachment.getStorage());
-		if (StringUtils.isBlank(fileName)) {
+		if(StringUtils.isBlank(fileName)){
 			fileName = attachment.getName();
-		} else {
+		}else{
 			String extension = FilenameUtils.getExtension(fileName);
-			if (StringUtils.isEmpty(extension)) {
-				fileName = fileName + "." + attachment.getExtension();
+			if(StringUtils.isEmpty(extension)){
+				fileName = fileName+ "." + attachment.getExtension();
 			}
 		}
-
-		byte[] bytes = null;
-		Optional<WorkExtensionEvent> event = Config.processPlatform().getExtensionEvents()
-				.getWorkAttachmentDownloadEvents().bind(work.getApplication(), work.getProcess(), work.getActivity());
-		if (event.isPresent()) {
-			bytes = this.extensionService(effectivePerson, attachment.getId(), event.get());
-		} else {
-			bytes = attachment.readContent(mapping);
-		}
-
-		Wo wo = new Wo(bytes, this.contentType(true, fileName), this.contentDisposition(true, fileName));
+		Wo wo = new Wo(attachment.readContent(mapping), this.contentType(true, fileName),
+				this.contentDisposition(true, fileName));
 		result.setData(wo);
 		return result;
 	}
 
-	private byte[] extensionService(EffectivePerson effectivePerson, String id, WorkExtensionEvent event)
-			throws Exception {
-		byte[] bytes = null;
-		Req req = new Req();
-		req.setPerson(effectivePerson.getDistinguishedName());
-		req.setAttachment(id);
-		if (StringUtils.isNotEmpty(event.getCustom())) {
-			bytes = ThisApplication.context().applications().postQueryBinary(event.getCustom(), event.getUrl(), req);
-		} else {
-			bytes = CipherConnectionAction.postBinary(effectivePerson.getDebugger(), event.getUrl(), req);
-		}
-		return bytes;
-	}
-
-	public static class Req {
-
-		private String person;
-		private String attachment;
-
-		public String getPerson() {
-			return person;
-		}
-
-		public void setPerson(String person) {
-			this.person = person;
-		}
-
-		public String getAttachment() {
-			return attachment;
-		}
-
-		public void setAttachment(String attachment) {
-			this.attachment = attachment;
-		}
-
-	}
-
 	public static class Wo extends WoFile {
 
 		public Wo(byte[] bytes, String contentType, String contentDisposition) {

+ 1 - 1
o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/jaxrs/work/ExceptionFromMappingNotExist.java

@@ -7,7 +7,7 @@ class ExceptionFromMappingNotExist extends PromptException {
 	private static final long serialVersionUID = -7038279889683420366L;
 
 	ExceptionFromMappingNotExist(String storage) {
-		super("from mapping not exist:{}.", storage);
+		super("form mapping not exist:{}.", storage);
 	}
 
 }