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

添加work/V2GetWorkOrWorkCompleted

zhourui 5 лет назад
Родитель
Сommit
9001e898f7
32 измененных файлов с 321 добавлено и 273 удалено
  1. 3 1
      o2server/configSample/centerServer.json
  2. 9 3
      o2server/configSample/node_127.0.0.1.json
  3. 10 0
      o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/ApplicationServer.java
  4. 10 0
      o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/CenterServer.java
  5. 10 0
      o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/WebServer.java
  6. 1 0
      o2server/x_base_core_project/src/main/java/com/x/base/core/project/jaxrs/ResponseFactory.java
  7. 30 9
      o2server/x_console/src/main/java/com/x/server/console/action/HttpStatus.java
  8. 9 7
      o2server/x_console/src/main/java/com/x/server/console/server/JettySeverTools.java
  9. 5 7
      o2server/x_console/src/main/java/com/x/server/console/server/application/ApplicationServerTools.java
  10. 2 2
      o2server/x_console/src/main/java/com/x/server/console/server/center/CenterServerTools.java
  11. 2 2
      o2server/x_console/src/main/java/com/x/server/console/server/web/WebServerTools.java
  12. 0 1
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/attachment/ActionListWithWorkOrWorkCompleted.java
  13. 0 20
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/control/ActionGetWorkOrWorkCompleted.java
  14. 0 1
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/form/ActionGetWithWorkOrWorkCompleted.java
  15. 0 19
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/form/FormAction.java
  16. 0 133
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/form/V2LookupWorkOrWorkCompletedMobile.java
  17. 0 2
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/record/ActionListWithWorkOrWorkCompleted.java
  18. 0 1
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/ActionGetWithWorkOrWorkCompleted.java
  19. 111 24
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/V2GetWorkOrWorkCompleted.java
  20. 0 2
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/worklog/ActionListWithWorkOrWorkCompleted.java
  21. 2 0
      o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/element/Activity.java
  22. 11 6
      o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/element/Agent.java
  23. 11 4
      o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/element/Begin.java
  24. 7 4
      o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/element/Cancel.java
  25. 12 5
      o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/element/Delay.java
  26. 12 5
      o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/element/Embed.java
  27. 7 4
      o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/element/End.java
  28. 11 1
      o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/element/Invoke.java
  29. 11 4
      o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/element/Merge.java
  30. 13 1
      o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/element/Message.java
  31. 11 4
      o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/element/Service.java
  32. 11 1
      o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/element/Split.java

+ 3 - 1
o2server/configSample/centerServer.json

@@ -13,6 +13,7 @@
   "statExclusions": "*.js,*.gif,*.jpg,*.png,*.css,*.ico",
   "maxFormContent": 20.0,
   "exposeJest": true,
+  "persistentConnectionsEnable": false,
   "###enable": "是否启用###",
   "###order": "center节点顺序,顺序排列0,1,2...###",
   "###sslEnable": "是否启用ssl传输加密,如果启用将使用config/keystore文件作为密钥文件.使用config/token.json文件中的sslKeyStorePassword字段为密钥密码,sslKeyManagerPassword为管理密码.###",
@@ -27,5 +28,6 @@
   "###statEnable": "启用统计,默认启用统计.###",
   "###statExclusions": "统计忽略路径,默认忽略*.js,*.gif,*.jpg,*.png,*.css,*.ico###",
   "###maxFormContent": "最大提交数据限制(M),限制有所上传的内容大小,包括附件.###",
-  "###exposeJest": "暴露jest接口.###"
+  "###exposeJest": "暴露jest接口.###",
+  "###persistentConnectionsEnable": "是否启用长连接,默认false.###"
 }

+ 9 - 3
o2server/configSample/node_127.0.0.1.json

@@ -16,6 +16,7 @@
     "statExclusions": "*.js,*.gif,*.jpg,*.png,*.css,*.ico",
     "maxFormContent": 20.0,
     "exposeJest": true,
+    "persistentConnectionsEnable": false,
     "###enable": "是否启用###",
     "###order": "center节点顺序,顺序排列0,1,2...###",
     "###sslEnable": "是否启用ssl传输加密,如果启用将使用config/keystore文件作为密钥文件.使用config/token.json文件中的sslKeyStorePassword字段为密钥密码,sslKeyManagerPassword为管理密码.###",
@@ -30,7 +31,8 @@
     "###statEnable": "启用统计,默认启用统计.###",
     "###statExclusions": "统计忽略路径,默认忽略*.js,*.gif,*.jpg,*.png,*.css,*.ico###",
     "###maxFormContent": "最大提交数据限制(M),限制有所上传的内容大小,包括附件.###",
-    "###exposeJest": "暴露jest接口.###"
+    "###exposeJest": "暴露jest接口.###",
+    "###persistentConnectionsEnable": "是否启用长连接,默认false.###"
   },
   "application": {
     "enable": true,
@@ -48,6 +50,7 @@
     "statExclusions": "*.js,*.gif,*.jpg,*.png,*.css,*.ico",
     "maxFormContent": 20.0,
     "exposeJest": true,
+    "persistentConnectionsEnable": false,
     "###enable": "是否启用###",
     "###port": "http/https端口,负责向前端提供数据访问接口.默认为20020端口.###",
     "###sslEnable": "是否启用ssl传输加密,如果启用将使用config/keystore文件作为密钥文件.使用config/token.json文件中的sslKeyStorePassword字段为密钥密码,sslKeyManagerPassword为管理密码.###",
@@ -62,7 +65,8 @@
     "###statEnable": "启用统计,默认启用统计.###",
     "###statExclusions": "统计忽略路径,默认忽略*.js,*.gif,*.jpg,*.png,*.css,*.ico###",
     "###maxFormContent": "最大提交数据限制(M),限制有所上传的内容大小,包括附件.###",
-    "###exposeJest": "暴露jest接口.###"
+    "###exposeJest": "暴露jest接口.###",
+    "###persistentConnectionsEnable": "是否启用长连接,默认false.###"
   },
   "web": {
     "enable": true,
@@ -73,6 +77,7 @@
     "statEnable": false,
     "statExclusions": "*.gif,*.jpg,*.png,*.ico",
     "cacheControlMaxAge": 0.0,
+    "persistentConnectionsEnable": true,
     "###enable": "是否启用###",
     "###port": "http/https端口,用户输入网址后实际访问的第一个端口.http协议默认为80端口,https默认为443端口.###",
     "###sslEnable": "是否启用ssl传输加密,如果启用将使用config/keystore文件作为密钥文件.使用config/token.json文件中的sslKeyStorePassword字段为密钥密码,sslKeyManagerPassword为管理密码.###",
@@ -84,7 +89,8 @@
     "###statExclusions": "统计忽略路径,默认忽略*.gif,*.jpg,*.png,*.ico###",
     "###cacheControlMaxAge": "服务器max-age缓存时间(秒)###",
     "###proxyCenterEnable": "是否启用center服务器代理.###",
-    "###proxyApplicationEnable": "是否启用application服务器代理###"
+    "###proxyApplicationEnable": "是否启用application服务器代理###",
+    "###persistentConnectionsEnable": "是否启用长连接,默认false.###"
   },
   "data": {
     "enable": true,

+ 10 - 0
o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/ApplicationServer.java

@@ -21,6 +21,7 @@ public class ApplicationServer extends ConfigObject {
 	private static final String DEFAULT_STATEXCLUSIONS = "*.js,*.gif,*.jpg,*.png,*.css,*.ico";
 	private static final Integer DEFAULT_MAXFORMCONTENT = 20;
 	private static final Boolean DEFAULT_EXPOSEJEST = true;
+	private static final Boolean DEFAULT_PERSISTENTCONNECTIONSENABLE = false;
 
 	public ApplicationServer() {
 		this.enable = true;
@@ -38,6 +39,7 @@ public class ApplicationServer extends ConfigObject {
 		this.statExclusions = DEFAULT_STATEXCLUSIONS;
 		this.maxFormContent = DEFAULT_MAXFORMCONTENT;
 		this.exposeJest = DEFAULT_EXPOSEJEST;
+		this.persistentConnectionsEnable = DEFAULT_PERSISTENTCONNECTIONSENABLE;
 	}
 
 	@FieldDescribe("是否启用")
@@ -71,6 +73,14 @@ public class ApplicationServer extends ConfigObject {
 	@FieldDescribe("暴露jest接口.")
 	private Boolean exposeJest;
 
+	@FieldDescribe("是否启用长连接,默认false.")
+	private Boolean persistentConnectionsEnable;
+
+	public Boolean getPersistentConnectionsEnable() {
+		return persistentConnectionsEnable == null ? DEFAULT_PERSISTENTCONNECTIONSENABLE
+				: this.persistentConnectionsEnable;
+	}
+
 	public Boolean getExposeJest() {
 		return BooleanUtils.isNotFalse(this.exposeJest);
 	}

+ 10 - 0
o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/CenterServer.java

@@ -22,6 +22,7 @@ public class CenterServer extends ConfigObject {
 	private static final String DEFAULT_STATEXCLUSIONS = "*.js,*.gif,*.jpg,*.png,*.css,*.ico";
 	private static final Integer DEFAULT_MAXFORMCONTENT = 20;
 	private static final Boolean DEFAULT_EXPOSEJEST = true;
+	private static final Boolean DEFAULT_PERSISTENTCONNECTIONSENABLE = false;
 
 	public static CenterServer defaultInstance() {
 		return new CenterServer();
@@ -42,6 +43,7 @@ public class CenterServer extends ConfigObject {
 		this.statExclusions = DEFAULT_STATEXCLUSIONS;
 		this.maxFormContent = DEFAULT_MAXFORMCONTENT;
 		this.exposeJest = DEFAULT_EXPOSEJEST;
+		this.persistentConnectionsEnable = DEFAULT_PERSISTENTCONNECTIONSENABLE;
 	}
 
 	@FieldDescribe("是否启用")
@@ -75,6 +77,14 @@ public class CenterServer extends ConfigObject {
 	@FieldDescribe("暴露jest接口.")
 	private Boolean exposeJest;
 
+	@FieldDescribe("是否启用长连接,默认false.")
+	private Boolean persistentConnectionsEnable;
+
+	public Boolean getPersistentConnectionsEnable() {
+		return persistentConnectionsEnable == null ? DEFAULT_PERSISTENTCONNECTIONSENABLE
+				: this.persistentConnectionsEnable;
+	}
+
 	public Boolean getExposeJest() {
 		return BooleanUtils.isNotFalse(this.exposeJest);
 	}

+ 10 - 0
o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/WebServer.java

@@ -22,6 +22,7 @@ public class WebServer extends ConfigObject {
 		this.statEnable = DEFAULT_STATENABLE;
 		this.statExclusions = DEFAULT_STATEXCLUSIONS;
 		this.cacheControlMaxAge = DEFAULT_CACHECONTROLMAXAGE;
+		this.persistentConnectionsEnable = DEFAULT_PERSISTENTCONNECTIONSENABLE;
 	}
 
 	private static final Integer DEFAULT_HTTP_PORT = 80;
@@ -33,6 +34,7 @@ public class WebServer extends ConfigObject {
 	private static final Integer DEFAULT_CACHECONTROLMAXAGE = 0;
 	private static final Boolean DEFAULT_PROXYCENTERENABLE = true;
 	private static final Boolean DEFAULT_PROXYAPPLICATIONENABLE = true;
+	private static final Boolean DEFAULT_PERSISTENTCONNECTIONSENABLE = false;
 
 	@FieldDescribe("是否启用")
 	private Boolean enable;
@@ -61,6 +63,14 @@ public class WebServer extends ConfigObject {
 	@FieldDescribe("是否启用application服务器代理")
 	private Boolean proxyApplicationEnable;
 
+	@FieldDescribe("是否启用长连接,默认false.")
+	private Boolean persistentConnectionsEnable;
+
+	public Boolean getPersistentConnectionsEnable() {
+		return persistentConnectionsEnable == null ? DEFAULT_PERSISTENTCONNECTIONSENABLE
+				: this.persistentConnectionsEnable;
+	}
+
 	public Boolean getProxyCenterEnable() {
 		return proxyCenterEnable == null ? DEFAULT_PROXYCENTERENABLE : this.proxyCenterEnable;
 	}

+ 1 - 0
o2server/x_base_core_project/src/main/java/com/x/base/core/project/jaxrs/ResponseFactory.java

@@ -182,6 +182,7 @@ public class ResponseFactory {
 		} else {
 			crc.update(XGsonBuilder.toJson(o).getBytes(DefaultCharset.charset_utf_8));
 		}
+		// crc.update(XGsonBuilder.toJson(o).getBytes(DefaultCharset.charset_utf_8));
 		return crc.getValue() + "";
 	}
 

+ 30 - 9
o2server/x_console/src/main/java/com/x/server/console/action/HttpStatus.java

@@ -1,15 +1,21 @@
 package com.x.server.console.action;
 
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.OutputStreamWriter;
 import java.lang.management.ManagementFactory;
 import java.lang.management.ThreadMXBean;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 
-import com.x.server.console.server.Servers;
-
 import org.apache.commons.lang3.BooleanUtils;
 import org.apache.commons.lang3.StringUtils;
 
+import com.x.base.core.project.config.Config;
+import com.x.base.core.project.tools.DateTools;
+import com.x.server.console.server.Servers;
+
 /**
  * @author
  */
@@ -31,24 +37,39 @@ public class HttpStatus extends Thread {
 						bean.getTotalStartedThreadCount(), bean.getThreadCount(), bean.getPeakThreadCount(),
 						bean.getDaemonThreadCount(), deadLockedCount));
 				if (BooleanUtils.isTrue(Servers.centerServerIsRunning())) {
-					list.add(String.format("  +++ center server thread pool size:%d, idle:%d.",
+					String file = "centerServer_" + DateTools.compact(new Date()) + ".txt";
+					list.add(String.format("  +++ center server thread pool size:%d, idle:%d, detail:%d.",
 							Servers.centerServer.getThreadPool().getThreads(),
-							Servers.centerServer.getThreadPool().getIdleThreads()));
+							Servers.centerServer.getThreadPool().getIdleThreads(), file));
+					try (FileOutputStream stream = new FileOutputStream(new File(Config.dir_logs(true), file));
+							OutputStreamWriter writer = new OutputStreamWriter(stream)) {
+						Servers.centerServer.dump(writer);
+					}
 				}
 				if (BooleanUtils.isTrue(Servers.applicationServerIsRunning())) {
-					list.add(String.format("  +++ application server thread pool size:%d, idle:%d.",
+					String file = "applicationServer_" + DateTools.compact(new Date()) + ".txt";
+					list.add(String.format("  +++ application server thread pool size:%d, idle:%d, detail:%d.",
 							Servers.applicationServer.getThreadPool().getThreads(),
-							Servers.applicationServer.getThreadPool().getIdleThreads()));
+							Servers.applicationServer.getThreadPool().getIdleThreads(), file));
+					try (FileOutputStream stream = new FileOutputStream(new File(Config.dir_logs(true), file));
+							OutputStreamWriter writer = new OutputStreamWriter(stream)) {
+						Servers.applicationServer.dump(writer);
+					}
 				}
 				if (BooleanUtils.isTrue(Servers.webServerIsRunning())) {
-					list.add(String.format("  +++ web server thread pool size:%d, idle:%d.",
+					String file = "webServer_" + DateTools.compact(new Date()) + ".txt";
+					list.add(String.format("  +++ web server thread pool size:%d, idle:%d, detail:%d.",
 							Servers.webServer.getThreadPool().getThreads(),
-							Servers.webServer.getThreadPool().getIdleThreads()));
+							Servers.webServer.getThreadPool().getIdleThreads(), file));
+					try (FileOutputStream stream = new FileOutputStream(new File(Config.dir_logs(true), file));
+							OutputStreamWriter writer = new OutputStreamWriter(stream)) {
+						Servers.webServer.dump(writer);
+					}
 				}
 				System.out.println(StringUtils.join(list, StringUtils.LF));
 				Thread.sleep(2000);
 			}
-		} catch (InterruptedException e) {
+		} catch (Exception e) {
 			e.printStackTrace();
 		}
 	}

+ 9 - 7
o2server/x_console/src/main/java/com/x/server/console/server/JettySeverTools.java

@@ -27,7 +27,8 @@ import com.x.base.core.project.config.Config;
 
 public abstract class JettySeverTools {
 
-	protected static void addHttpsConnector(Server server, Integer port) throws Exception {
+	protected static void addHttpsConnector(Server server, Integer port, boolean persistentConnectionsEnable)
+			throws Exception {
 		SslContextFactory sslContextFactory = new SslContextFactory.Server();
 		sslContextFactory.setKeyStorePath(Config.sslKeyStore().getAbsolutePath());
 		sslContextFactory.setKeyStorePassword(Config.token().getSslKeyStorePassword());
@@ -35,12 +36,11 @@ public abstract class JettySeverTools {
 		sslContextFactory.setTrustAll(true);
 		HttpConfiguration config = new HttpConfiguration();
 		config.setSecureScheme("https");
-		config.setOutputBufferSize(1024 * 2048);
+		config.setPersistentConnectionsEnabled(persistentConnectionsEnable);
 		config.setRequestHeaderSize(8192 * 2);
 		config.setResponseHeaderSize(8192 * 2);
-		config.setSendServerVersion(true);
+		config.setSendServerVersion(false);
 		config.setSendDateHeader(false);
-
 		ServerConnector https = new ServerConnector(server,
 				new SslConnectionFactory(sslContextFactory, HttpVersion.HTTP_1_1.asString()),
 				new HttpConnectionFactory(config));
@@ -50,12 +50,14 @@ public abstract class JettySeverTools {
 		server.addConnector(https);
 	}
 
-	protected static void addHttpConnector(Server server, Integer port) throws Exception {
+	protected static void addHttpConnector(Server server, Integer port, boolean persistentConnectionsEnable)
+			throws Exception {
 		HttpConfiguration config = new HttpConfiguration();
-		config.setOutputBufferSize(1024 * 2048);
+		// config.setOutputBufferSize(1024 * 2048);
+		config.setPersistentConnectionsEnabled(persistentConnectionsEnable);
 		config.setRequestHeaderSize(8192 * 2);
 		config.setResponseHeaderSize(8192 * 2);
-		config.setSendServerVersion(true);
+		config.setSendServerVersion(false);
 		config.setSendDateHeader(false);
 		ServerConnector http = new ServerConnector(server, new HttpConnectionFactory(config));
 		http.setAcceptQueueSize(-1);

+ 5 - 7
o2server/x_console/src/main/java/com/x/server/console/server/application/ApplicationServerTools.java

@@ -101,9 +101,8 @@ public class ApplicationServerTools extends JettySeverTools {
 			x_portal_assemble_surface.class.getName(), x_attendance_assemble_control.class.getName(),
 			x_bbs_assemble_control.class.getName(), x_file_assemble_control.class.getName(),
 			x_meeting_assemble_control.class.getName(), x_mind_assemble_control.class.getName(),
-			x_hotpic_assemble_control.class.getName(),
-			x_query_service_processing.class.getName(), x_query_assemble_designer.class.getName(),
-			x_query_assemble_surface.class.getName());
+			x_hotpic_assemble_control.class.getName(), x_query_service_processing.class.getName(),
+			x_query_assemble_designer.class.getName(), x_query_assemble_surface.class.getName());
 
 	public static Server start(ApplicationServer applicationServer) throws Exception {
 
@@ -129,9 +128,9 @@ public class ApplicationServerTools extends JettySeverTools {
 		server.setAttribute("maxFormContentSize", applicationServer.getMaxFormContent() * 1024 * 1024);
 
 		if (BooleanUtils.isTrue(applicationServer.getSslEnable())) {
-			addHttpsConnector(server, applicationServer.getPort());
+			addHttpsConnector(server, applicationServer.getPort(), applicationServer.getPersistentConnectionsEnable());
 		} else {
-			addHttpConnector(server, applicationServer.getPort());
+			addHttpConnector(server, applicationServer.getPort(), applicationServer.getPersistentConnectionsEnable());
 		}
 
 		GzipHandler gzipHandler = new GzipHandler();
@@ -185,8 +184,7 @@ public class ApplicationServerTools extends JettySeverTools {
 					}
 					if (BooleanUtils.isFalse(applicationServer.getExposeJest())) {
 						FilterHolder denialOfServiceFilterHolder = new FilterHolder(new DenialOfServiceFilter());
-						webApp.addFilter(denialOfServiceFilterHolder, "/jest/*",
-								EnumSet.of(DispatcherType.REQUEST));
+						webApp.addFilter(denialOfServiceFilterHolder, "/jest/*", EnumSet.of(DispatcherType.REQUEST));
 					}
 					handlers.addHandler(webApp);
 				} else if (Files.exists(dir)) {

+ 2 - 2
o2server/x_console/src/main/java/com/x/server/console/server/center/CenterServerTools.java

@@ -89,9 +89,9 @@ public class CenterServerTools extends JettySeverTools {
 		server.setAttribute("maxFormContentSize", centerServer.getMaxFormContent() * 1024 * 1024);
 
 		if (BooleanUtils.isTrue(centerServer.getSslEnable())) {
-			addHttpsConnector(server, centerServer.getPort());
+			addHttpsConnector(server, centerServer.getPort(), centerServer.getPersistentConnectionsEnable());
 		} else {
-			addHttpConnector(server, centerServer.getPort());
+			addHttpConnector(server, centerServer.getPort(), centerServer.getPersistentConnectionsEnable());
 		}
 
 		GzipHandler gzipHandler = new GzipHandler();

+ 2 - 2
o2server/x_console/src/main/java/com/x/server/console/server/web/WebServerTools.java

@@ -70,9 +70,9 @@ public class WebServerTools extends JettySeverTools {
 		threadPool.setMaxThreads(WEBSERVER_THREAD_POOL_SIZE_MAX);
 		Server server = new Server(threadPool);
 		if (webServer.getSslEnable()) {
-			addHttpsConnector(server, webServer.getPort());
+			addHttpsConnector(server, webServer.getPort(), webServer.getPersistentConnectionsEnable());
 		} else {
-			addHttpConnector(server, webServer.getPort());
+			addHttpConnector(server, webServer.getPort(), webServer.getPersistentConnectionsEnable());
 		}
 		WebAppContext context = new WebAppContext();
 		context.setContextPath("/");

+ 0 - 1
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/attachment/ActionListWithWorkOrWorkCompleted.java

@@ -33,7 +33,6 @@ class ActionListWithWorkOrWorkCompleted extends BaseAction {
 			ActionResult<List<Wo>> result = new ActionResult<>();
 
 			Business business = new Business(emc);
-
 			CompletableFuture<List<Wo>> _wos = CompletableFuture.supplyAsync(() -> {
 				List<Wo> wos = new ArrayList<>();
 				try {

+ 0 - 20
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/control/ActionGetWorkOrWorkCompleted.java

@@ -48,9 +48,7 @@ class ActionGetWorkOrWorkCompleted extends BaseAction {
 	ActionResult<Wo> execute(EffectivePerson effectivePerson, String workOrWorkCompleted) throws Exception {
 		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
 			ActionResult<Wo> result = new ActionResult<>();
-
 			Business business = new Business(emc);
-
 			CompletableFuture<Wo> _wo = CompletableFuture.supplyAsync(() -> {
 				Wo wo = null;
 				try {
@@ -84,24 +82,6 @@ class ActionGetWorkOrWorkCompleted extends BaseAction {
 
 			result.setData(_wo.get());
 			return result;
-
-//			if (!business.readableWithWorkOrWorkCompleted(effectivePerson, workOrWorkCompleted,
-//					new ExceptionEntityNotExist(workOrWorkCompleted))) {
-//				throw new ExceptionAccessDenied(effectivePerson);
-//			}
-//
-//			Wo wo = null;
-//
-//			Work work = emc.find(workOrWorkCompleted, Work.class);
-//
-//			if (null != work) {
-//				wo = this.work(business, effectivePerson, work);
-//			} else {
-//				wo = this.workCompleted(business, effectivePerson, emc.flag(workOrWorkCompleted, WorkCompleted.class));
-//			}
-//
-//			result.setData(wo);
-//			return result;
 		}
 	}
 

+ 0 - 1
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/form/ActionGetWithWorkOrWorkCompleted.java

@@ -31,7 +31,6 @@ class ActionGetWithWorkOrWorkCompleted extends BaseAction {
 	ActionResult<Wo> execute(EffectivePerson effectivePerson, String workOrWorkCompleted) throws Exception {
 		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
 			ActionResult<Wo> result = new ActionResult<>();
-
 			Business business = new Business(emc);
 
 			CompletableFuture<Wo> _wo = CompletableFuture.supplyAsync(() -> {

+ 0 - 19
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/form/FormAction.java

@@ -159,25 +159,6 @@ public class FormAction extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
 	}
 
-	@JaxrsMethodDescribe(value = "查询移动端表单,如果有表单那么返回表单id,如果使用的是combine的表单直接返回内容.", action = V2LookupWorkOrWorkCompletedMobile.class)
-	@GET
-	@Path("v2/lookup/workorworkcompleted/{workOrWorkCompleted}/mobile")
-	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
-	@Consumes(MediaType.APPLICATION_JSON)
-	public void V2LookupWorkOrWorkCompletedMobile(@Suspended final AsyncResponse asyncResponse,
-			@Context HttpServletRequest request,
-			@JaxrsParameterDescribe("工作或已完成工作标识") @PathParam("workOrWorkCompleted") String workOrWorkCompleted) {
-		ActionResult<V2LookupWorkOrWorkCompletedMobile.Wo> result = new ActionResult<>();
-		EffectivePerson effectivePerson = this.effectivePerson(request);
-		try {
-			result = new V2LookupWorkOrWorkCompletedMobile().execute(effectivePerson, workOrWorkCompleted);
-		} catch (Exception e) {
-			logger.error(e, effectivePerson, request, null);
-			result.error(e);
-		}
-		asyncResponse.resume(ResponseFactory.getEntityTagActionResultResponse(request, result));
-	}
-
 	@JaxrsMethodDescribe(value = "获取表单.", action = V2Get.class)
 	@GET
 	@Path("v2/{id}")

+ 0 - 133
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/form/V2LookupWorkOrWorkCompletedMobile.java

@@ -1,133 +0,0 @@
-package com.x.processplatform.assemble.surface.jaxrs.form;
-
-import java.util.Map.Entry;
-
-import org.apache.commons.lang3.StringUtils;
-
-import com.x.base.core.container.EntityManagerContainer;
-import com.x.base.core.container.factory.EntityManagerContainerFactory;
-import com.x.base.core.project.exception.ExceptionAccessDenied;
-import com.x.base.core.project.exception.ExceptionEntityNotExist;
-import com.x.base.core.project.http.ActionResult;
-import com.x.base.core.project.http.EffectivePerson;
-import com.x.base.core.project.logger.Logger;
-import com.x.base.core.project.logger.LoggerFactory;
-import com.x.base.core.project.tools.PropertyTools;
-import com.x.processplatform.assemble.surface.Business;
-import com.x.processplatform.assemble.surface.jaxrs.form.ActionGetWithWorkOrWorkCompletedMobile.Wo;
-import com.x.processplatform.assemble.surface.jaxrs.form.BaseAction.AbstractWo;
-import com.x.processplatform.core.entity.content.Work;
-import com.x.processplatform.core.entity.content.WorkCompleted;
-import com.x.processplatform.core.entity.content.WorkCompletedProperties;
-import com.x.processplatform.core.entity.element.Activity;
-import com.x.processplatform.core.entity.element.Form;
-import com.x.processplatform.core.entity.element.Script;
-
-class V2LookupWorkOrWorkCompletedMobile extends BaseAction {
-
-	private static Logger logger = LoggerFactory.getLogger(V2LookupWorkOrWorkCompletedMobile.class);
-
-	ActionResult<Wo> execute(EffectivePerson effectivePerson, String workOrWorkCompleted) throws Exception {
-		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
-			ActionResult<Wo> result = new ActionResult<>();
-			Business business = new Business(emc);
-			if (!business.readableWithWorkOrWorkCompleted(effectivePerson, workOrWorkCompleted,
-					new ExceptionEntityNotExist(workOrWorkCompleted))) {
-				throw new ExceptionAccessDenied(effectivePerson);
-			}
-			Wo wo = new Wo();
-			Work work = emc.find(workOrWorkCompleted, Work.class);
-			if (null != work) {
-				this.work(business, work, wo);
-			} else {
-				this.workCompleted(business, emc.flag(workOrWorkCompleted, WorkCompleted.class), wo);
-			}
-			result.setData(wo);
-			return result;
-		}
-	}
-
-	private void work(Business business, Work work, Wo wo) throws Exception {
-		String id = work.getForm();
-		if (!StringUtils.isEmpty(id)) {
-			wo.setId(id);
-		} else {
-			Activity activity = business.getActivity(work);
-			id = PropertyTools.getOrElse(activity, Activity.form_FIELDNAME, String.class, "");
-		}
-		wo.setId(id);
-	}
-
-	private void workCompleted(Business business, WorkCompleted workCompleted, Wo wo) throws Exception {
-		// 先使用当前库的表单,如果不存在使用储存的表单.
-		if (StringUtils.isNotEmpty(workCompleted.getForm())) {
-			Form form = business.form().pick(workCompleted.getForm());
-			if (null != form) {
-				wo.setForm(toWoFormDataOrMobileData(form));
-				related(business, wo, form);
-			}
-		} else if (null != workCompleted.getProperties().getForm()) {
-			wo.setForm(toWoFormDataOrMobileData(workCompleted.getProperties().getForm()));
-			if (StringUtils.isNotBlank(workCompleted.getProperties().getForm().getData())) {
-				workCompleted.getProperties().getRelatedFormList()
-						.forEach(o -> wo.getRelatedFormMap().put(o.getId(), toWoFormDataOrMobileData(o)));
-			} else {
-				workCompleted.getProperties().getMobileRelatedFormList()
-						.forEach(o -> wo.getRelatedFormMap().put(o.getId(), toWoFormMobileDataOrData(o)));
-			}
-		}
-		workCompleted.getProperties().getRelatedScriptList().stream()
-				.forEach(o -> wo.getRelatedScriptMap().put(o.getId(), toWoScript(o)));
-	}
-
-	private void related(Business business, Wo wo, Form form) throws Exception {
-		if (StringUtils.isNotBlank(form.getMobileData())) {
-			for (String mobileRelatedFormId : form.getProperties().getMobileRelatedFormList()) {
-				Form relatedForm = business.form().pick(mobileRelatedFormId);
-				if (null != relatedForm) {
-					wo.getRelatedFormMap().put(mobileRelatedFormId, toWoFormMobileDataOrData(relatedForm));
-				}
-			}
-		} else {
-			for (String relatedFormId : form.getProperties().getRelatedFormList()) {
-				Form relatedForm = business.form().pick(relatedFormId);
-				if (null != relatedForm) {
-					wo.getRelatedFormMap().put(relatedFormId, toWoFormDataOrMobileData(relatedForm));
-				}
-			}
-		}
-		relatedScript(business, wo, form);
-	}
-
-	protected void relatedScript(Business business, AbstractWo wo, Form form) throws Exception {
-		for (Entry<String, String> entry : form.getProperties().getMobileRelatedScriptMap().entrySet()) {
-			switch (entry.getValue()) {
-			case WorkCompletedProperties.Script.TYPE_PROCESSPLATFORM:
-				Script relatedScript = business.script().pick(entry.getKey());
-				if (null != relatedScript) {
-					wo.getRelatedScriptMap().put(entry.getKey(), toWoScript(relatedScript));
-				}
-				break;
-			case WorkCompletedProperties.Script.TYPE_CMS:
-				com.x.cms.core.entity.element.Script relatedCmsScript = business.cms().script().pick(entry.getKey());
-				if (null != relatedCmsScript) {
-					wo.getRelatedScriptMap().put(entry.getKey(), toWoScript(relatedCmsScript));
-				}
-				break;
-			case WorkCompletedProperties.Script.TYPE_PORTAL:
-				com.x.portal.core.entity.Script relatedPortalScript = business.portal().script().pick(entry.getKey());
-				if (null != relatedPortalScript) {
-					wo.getRelatedScriptMap().put(entry.getKey(), toWoScript(relatedPortalScript));
-				}
-				break;
-			default:
-				break;
-			}
-		}
-	}
-
-	public static class Wo extends AbstractWo {
-
-	}
-
-}

+ 0 - 2
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/record/ActionListWithWorkOrWorkCompleted.java

@@ -32,9 +32,7 @@ class ActionListWithWorkOrWorkCompleted extends BaseAction {
 	ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, String workOrWorkCompleted) throws Exception {
 		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
 			ActionResult<List<Wo>> result = new ActionResult<>();
-
 			Business business = new Business(emc);
-
 			CompletableFuture<List<Wo>> _wos = CompletableFuture.supplyAsync(() -> {
 				List<Wo> wos = new ArrayList<>();
 				try {

+ 0 - 1
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/ActionGetWithWorkOrWorkCompleted.java

@@ -45,7 +45,6 @@ class ActionGetWithWorkOrWorkCompleted extends BaseAction {
 		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
 			ActionResult<Wo> result = new ActionResult<>();
 			Business business = new Business(emc);
-
 			CompletableFuture<Wo> _wo = CompletableFuture.supplyAsync(() -> {
 				Wo wo = null;
 				try {

+ 111 - 24
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/work/V2GetWorkOrWorkCompleted.java

@@ -35,6 +35,7 @@ import com.x.processplatform.assemble.surface.Business;
 import com.x.processplatform.core.entity.content.Attachment;
 import com.x.processplatform.core.entity.content.Data;
 import com.x.processplatform.core.entity.content.Read;
+import com.x.processplatform.core.entity.content.Record;
 import com.x.processplatform.core.entity.content.Task;
 import com.x.processplatform.core.entity.content.Work;
 import com.x.processplatform.core.entity.content.WorkCompleted;
@@ -53,21 +54,40 @@ class V2GetWorkOrWorkCompleted extends BaseAction {
 		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
 			ActionResult<Wo> result = new ActionResult<>();
 			Business business = new Business(emc);
-			if (!business.readableWithWorkOrWorkCompleted(effectivePerson, workOrWorkCompleted,
-					new ExceptionEntityNotExist(workOrWorkCompleted))) {
-				throw new ExceptionAccessDenied(effectivePerson);
-			}
-			Wo wo = null;
-			Work work = business.entityManagerContainer().find(workOrWorkCompleted, Work.class);
-			if (null != work) {
-				wo = this.work(effectivePerson, business, work);
-			} else {
-				WorkCompleted workCompleted = emc.flag(workOrWorkCompleted, WorkCompleted.class);
-				if (null != workCompleted) {
-					wo = this.workCompleted(business, effectivePerson, workCompleted);
+
+			CompletableFuture<Wo> _wo = CompletableFuture.supplyAsync(() -> {
+				Wo wo = null;
+				try {
+					Work work = business.entityManagerContainer().find(workOrWorkCompleted, Work.class);
+					if (null != work) {
+						wo = this.work(effectivePerson, business, work);
+					} else {
+						WorkCompleted workCompleted = emc.flag(workOrWorkCompleted, WorkCompleted.class);
+						if (null != workCompleted) {
+							wo = this.workCompleted(business, effectivePerson, workCompleted);
+						}
+					}
+				} catch (Exception e) {
+					logger.error(e);
+				}
+				return wo;
+			});
+
+			CompletableFuture<Boolean> _control = CompletableFuture.supplyAsync(() -> {
+				Boolean value = false;
+				try {
+					value = business.readableWithWorkOrWorkCompleted(effectivePerson, workOrWorkCompleted,
+							new ExceptionEntityNotExist(workOrWorkCompleted));
+				} catch (Exception e) {
+					logger.error(e);
 				}
+				return value;
+			});
+
+			if (BooleanUtils.isFalse(_control.get())) {
+				throw new ExceptionAccessDenied(effectivePerson, workOrWorkCompleted);
 			}
-			result.setData(wo);
+			result.setData(_wo.get());
 			return result;
 		}
 	}
@@ -75,17 +95,34 @@ class V2GetWorkOrWorkCompleted extends BaseAction {
 	private Wo work(EffectivePerson effectivePerson, Business business, Work work)
 			throws InterruptedException, ExecutionException {
 		Wo wo = new Wo();
-		// Date s = new Date();
 		CompletableFuture.allOf(workJson(work, wo), activity(business, work, wo), data(business, work, wo),
 				task(effectivePerson, business, work, wo), read(effectivePerson, business, work.getJob(), wo),
 				creatorIdentity(business, work.getCreatorIdentity(), wo),
 				creatorPerson(business, work.getCreatorPerson(), wo), creatorUnit(business, work.getCreatorUnit(), wo),
-				attachment(effectivePerson, business, work.getJob(), wo)).get();
-		// System.out.println("!!!!!!!!!!!!!!!!work:" + ((new Date()).getTime() -
-		// s.getTime()));
+				attachment(effectivePerson, business, work.getJob(), wo),
+				record(effectivePerson, business, work.getJob(), wo)).get();
+		for (WoTask woTask : wo.getTaskList()) {
+			wo.getRecordList().add(taskToRecord(woTask));
+		}
 		return wo;
 	}
 
+	private WoRecord taskToRecord(WoTask woTask) {
+		WoRecord o = new WoRecord();
+		o.setType(Record.TYPE_CURRENTTASK);
+		o.setFromActivity(woTask.getActivity());
+		o.setFromActivityAlias(woTask.getActivityAlias());
+		o.setFromActivityName(woTask.getActivityName());
+		o.setFromActivityToken(woTask.getActivityToken());
+		o.setFromActivityType(woTask.getActivityType());
+		o.setPerson(woTask.getPerson());
+		o.setIdentity(o.getIdentity());
+		o.setUnit(woTask.getUnit());
+		o.getProperties().setStartTime(woTask.getStartTime());
+		o.getProperties().setEmpowerFromIdentity(woTask.getEmpowerFromIdentity());
+		return o;
+	}
+
 	private CompletableFuture<Void> data(Business business, Work work, Wo wo) {
 		return CompletableFuture.runAsync(() -> {
 			try {
@@ -107,6 +144,36 @@ class V2GetWorkOrWorkCompleted extends BaseAction {
 		});
 	}
 
+	private CompletableFuture<Void> record(EffectivePerson effectivePerson, Business business, String job, Wo wo) {
+		return CompletableFuture.runAsync(() -> {
+			try {
+				wo.setRecordList(business.entityManagerContainer()
+						.fetchEqual(Record.class, WoRecord.copier, Record.job_FIELDNAME, job).stream()
+						.sorted(Comparator.comparing(WoRecord::getOrder)).collect(Collectors.toList()));
+			} catch (Exception e) {
+				logger.error(e);
+			}
+		});
+	}
+
+	private CompletableFuture<Void> completedRecord(EffectivePerson effectivePerson, Business business,
+			WorkCompleted workCompleted, Wo wo) {
+		return CompletableFuture.runAsync(() -> {
+			try {
+				if (ListTools.isNotEmpty(workCompleted.getProperties().getRecordList())) {
+					wo.setRecordList(WoRecord.copier.copy(workCompleted.getProperties().getRecordList()).stream()
+							.sorted(Comparator.comparing(WoRecord::getOrder)).collect(Collectors.toList()));
+				} else {
+					wo.setRecordList(business.entityManagerContainer()
+							.fetchEqual(Record.class, WoRecord.copier, Record.job_FIELDNAME, workCompleted.getJob())
+							.stream().sorted(Comparator.comparing(WoRecord::getOrder)).collect(Collectors.toList()));
+				}
+			} catch (Exception e) {
+				logger.error(e);
+			}
+		});
+	}
+
 	private CompletableFuture<Void> activity(Business business, Work work, Wo wo) {
 		return CompletableFuture.runAsync(() -> {
 			try {
@@ -117,12 +184,9 @@ class V2GetWorkOrWorkCompleted extends BaseAction {
 					activity.copyTo(woActivity);
 					wo.setActivity(woActivity);
 					if (Objects.equals(ActivityType.manual, activity.getActivityType())) {
-						wo.setRouteList(business.entityManagerContainer().fetchIn(Route.class, WoRoute.copier,
-								JpaObject.id_FIELDNAME, ((Manual) activity).getRouteList()));
+						wo.setRouteList(WoRoute.copier.copy(business.route().pick(((Manual) activity).getRouteList())));
 					}
 				}
-				// System.out.println("!!!!!!!!!!!!!!!!activity:" + ((new Date()).getTime() -
-				// s.getTime()));
 			} catch (Exception e) {
 				logger.error(e);
 			}
@@ -256,7 +320,8 @@ class V2GetWorkOrWorkCompleted extends BaseAction {
 				creatorIdentity(business, workCompleted.getCreatorIdentity(), wo),
 				creatorPerson(business, workCompleted.getCreatorPerson(), wo),
 				creatorUnit(business, workCompleted.getCreatorUnit(), wo),
-				attachment(effectivePerson, business, workCompleted.getJob(), wo)).get();
+				attachment(effectivePerson, business, workCompleted.getJob(), wo),
+				completedRecord(effectivePerson, business, workCompleted, wo)).get();
 		return wo;
 	}
 
@@ -373,6 +438,9 @@ class V2GetWorkOrWorkCompleted extends BaseAction {
 		// work和workCompleted都有
 		private List<WoAttachment> attachmentList;
 
+		// work和workCompleted都有
+		private List<WoRecord> recordList;
+
 		// 只有work有
 		private WoActivity activity;
 		// 只有work有
@@ -478,6 +546,14 @@ class V2GetWorkOrWorkCompleted extends BaseAction {
 			this.attachmentList = attachmentList;
 		}
 
+		public List<WoRecord> getRecordList() {
+			return recordList;
+		}
+
+		public void setRecordList(List<WoRecord> recordList) {
+			this.recordList = recordList;
+		}
+
 	}
 
 	public static class WoWork extends Work {
@@ -616,7 +692,10 @@ class V2GetWorkOrWorkCompleted extends BaseAction {
 
 	}
 
-	public static class WoRoute extends GsonPropertyObject {
+	public static class WoRoute extends Route {
+
+		private static final long serialVersionUID = 556378904185283486L;
+
 		static WrapCopier<Route, WoRoute> copier = WrapCopierFactory.wo(Route.class, WoRoute.class,
 				ListTools.toList(JpaObject.id_FIELDNAME, Route.name_FIELDNAME, Route.description_FIELDNAME,
 						Route.alias_FIELDNAME),
@@ -636,7 +715,6 @@ class V2GetWorkOrWorkCompleted extends BaseAction {
 		public void setControl(WoAttachmentControl control) {
 			this.control = control;
 		}
-
 	}
 
 	public static class WoAttachmentControl extends GsonPropertyObject {
@@ -671,4 +749,13 @@ class V2GetWorkOrWorkCompleted extends BaseAction {
 
 	}
 
+	public static class WoRecord extends Record {
+
+		private static final long serialVersionUID = -7666329770246726197L;
+
+		static WrapCopier<Record, WoRecord> copier = WrapCopierFactory.wo(Record.class, WoRecord.class,
+				JpaObject.singularAttributeField(Record.class, true, false), JpaObject.FieldsInvisible);
+
+	}
+
 }

+ 0 - 2
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/worklog/ActionListWithWorkOrWorkCompleted.java

@@ -46,7 +46,6 @@ class ActionListWithWorkOrWorkCompleted extends BaseAction {
 	ActionResult<List<Wo>> execute(EffectivePerson effectivePerson, String workOrWorkCompleted) throws Exception {
 		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
 			ActionResult<List<Wo>> result = new ActionResult<>();
-
 			Business business = new Business(emc);
 
 			final String job = business.job().findWithWorkOrWorkCompleted(workOrWorkCompleted);
@@ -138,7 +137,6 @@ class ActionListWithWorkOrWorkCompleted extends BaseAction {
 			ListTools.groupStick(wos, readCompleteds, WorkLog.fromActivityToken_FIELDNAME,
 					ReadCompleted.activityToken_FIELDNAME, READCOMPLETEDLIST_FIELDNAME);
 			result.setData(wos);
-			result.setData(wos);
 			return result;
 		}
 	}

+ 2 - 0
o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/element/Activity.java

@@ -100,6 +100,8 @@ public abstract class Activity extends SliceJpaObject {
 
 	public abstract String getOpinionGroup();
 
+	public abstract List<String> getRouteList();
+
 	public abstract void setOpinionGroup(String opinionGroup);
 
 	// 是否允许调度

+ 11 - 6
o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/element/Agent.java

@@ -1,5 +1,6 @@
 package com.x.processplatform.core.entity.element;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import javax.persistence.Basic;
@@ -14,6 +15,7 @@ import javax.persistence.OrderColumn;
 import javax.persistence.Table;
 import javax.persistence.UniqueConstraint;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.openjpa.persistence.PersistentCollection;
 import org.apache.openjpa.persistence.jdbc.ContainerTable;
 import org.apache.openjpa.persistence.jdbc.ElementColumn;
@@ -26,6 +28,7 @@ import com.x.base.core.entity.annotation.ContainerEntity;
 import com.x.base.core.entity.annotation.Flag;
 import com.x.base.core.entity.annotation.IdReference;
 import com.x.base.core.project.annotation.FieldDescribe;
+import com.x.base.core.project.tools.ListTools;
 import com.x.processplatform.core.entity.PersistenceProperties;
 
 @Entity
@@ -60,12 +63,14 @@ public class Agent extends Activity {
 		// nothing
 	}
 
-	/* 更新运行方法 */
-
-	// public static String[] FLA GS = new String[] { "id", "alias" };
-
-	/* flag标志位 */
-	/* Entity 默认字段结束 */
+	@Override
+	public List<String> getRouteList() {
+		if (StringUtils.isNotEmpty(this.getRoute())) {
+			return ListTools.toList(this.getRoute());
+		} else {
+			return new ArrayList<>();
+		}
+	}
 
 	@FieldDescribe("分组")
 	@CheckPersist(allowEmpty = true)

+ 11 - 4
o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/element/Begin.java

@@ -1,5 +1,6 @@
 package com.x.processplatform.core.entity.element;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import javax.persistence.Basic;
@@ -14,6 +15,7 @@ import javax.persistence.OrderColumn;
 import javax.persistence.Table;
 import javax.persistence.UniqueConstraint;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.openjpa.persistence.PersistentCollection;
 import org.apache.openjpa.persistence.jdbc.ContainerTable;
 import org.apache.openjpa.persistence.jdbc.ElementColumn;
@@ -27,6 +29,7 @@ import com.x.base.core.entity.annotation.ContainerEntity;
 import com.x.base.core.entity.annotation.Flag;
 import com.x.base.core.entity.annotation.IdReference;
 import com.x.base.core.project.annotation.FieldDescribe;
+import com.x.base.core.project.tools.ListTools;
 import com.x.processplatform.core.entity.PersistenceProperties;
 
 @Entity
@@ -60,10 +63,14 @@ public class Begin extends Activity {
 		// nothing
 	}
 
-	/* 更新运行方法 */
-
-	/* flag标志位 */
-	/* Entity 默认字段结束 */
+	@Override
+	public List<String> getRouteList() {
+		if (StringUtils.isNotEmpty(this.getRoute())) {
+			return ListTools.toList(this.getRoute());
+		} else {
+			return new ArrayList<>();
+		}
+	}
 
 	@FieldDescribe("分组")
 	@CheckPersist(allowEmpty = true)

+ 7 - 4
o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/element/Cancel.java

@@ -1,5 +1,6 @@
 package com.x.processplatform.core.entity.element;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import javax.persistence.Basic;
@@ -14,6 +15,7 @@ import javax.persistence.OrderColumn;
 import javax.persistence.Table;
 import javax.persistence.UniqueConstraint;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.openjpa.persistence.PersistentCollection;
 import org.apache.openjpa.persistence.jdbc.ContainerTable;
 import org.apache.openjpa.persistence.jdbc.ElementColumn;
@@ -26,6 +28,7 @@ import com.x.base.core.entity.annotation.ContainerEntity;
 import com.x.base.core.entity.annotation.Flag;
 import com.x.base.core.entity.annotation.IdReference;
 import com.x.base.core.project.annotation.FieldDescribe;
+import com.x.base.core.project.tools.ListTools;
 import com.x.processplatform.core.entity.PersistenceProperties;
 
 @Entity
@@ -59,10 +62,10 @@ public class Cancel extends Activity {
 		// nothing
 	}
 
-	/* 更新运行方法 */
-
-	/* flag标志位 */
-	/* Entity 默认字段结束 */
+	@Override
+	public List<String> getRouteList() {
+		return new ArrayList<>();
+	}
 
 	@FieldDescribe("分组")
 	@CheckPersist(allowEmpty = true)

+ 12 - 5
o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/element/Delay.java

@@ -1,5 +1,6 @@
 package com.x.processplatform.core.entity.element;
 
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
 
@@ -17,6 +18,7 @@ import javax.persistence.OrderColumn;
 import javax.persistence.Table;
 import javax.persistence.UniqueConstraint;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.openjpa.persistence.PersistentCollection;
 import org.apache.openjpa.persistence.jdbc.ContainerTable;
 import org.apache.openjpa.persistence.jdbc.ElementColumn;
@@ -29,6 +31,7 @@ import com.x.base.core.entity.annotation.ContainerEntity;
 import com.x.base.core.entity.annotation.Flag;
 import com.x.base.core.entity.annotation.IdReference;
 import com.x.base.core.project.annotation.FieldDescribe;
+import com.x.base.core.project.tools.ListTools;
 import com.x.processplatform.core.entity.PersistenceProperties;
 
 @Entity
@@ -62,10 +65,14 @@ public class Delay extends Activity {
 		// nothing
 	}
 
-	/* 更新运行方法 */
-
-	/* flag标志位 */
-	/* Entity 默认字段结束 */
+	@Override
+	public List<String> getRouteList() {
+		if (StringUtils.isNotEmpty(this.getRoute())) {
+			return ListTools.toList(this.getRoute());
+		} else {
+			return new ArrayList<>();
+		}
+	}
 
 	@FieldDescribe("分组")
 	@CheckPersist(allowEmpty = true)
@@ -337,7 +344,7 @@ public class Delay extends Activity {
 	@CheckPersist(allowEmpty = true)
 	@Column(name = ColumnNamePrefix + allowSuspend_FIELDNAME)
 	private Boolean allowSuspend;
-	
+
 	public static final String route_FIELDNAME = "route";
 	@IdReference(Route.class)
 	@FieldDescribe("出口路由.")

+ 12 - 5
o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/element/Embed.java

@@ -1,5 +1,6 @@
 package com.x.processplatform.core.entity.element;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import javax.persistence.Basic;
@@ -23,8 +24,10 @@ import com.x.base.core.entity.annotation.ContainerEntity;
 import com.x.base.core.entity.annotation.Flag;
 import com.x.base.core.entity.annotation.IdReference;
 import com.x.base.core.project.annotation.FieldDescribe;
+import com.x.base.core.project.tools.ListTools;
 import com.x.processplatform.core.entity.PersistenceProperties;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.openjpa.persistence.PersistentCollection;
 import org.apache.openjpa.persistence.jdbc.ContainerTable;
 import org.apache.openjpa.persistence.jdbc.ElementColumn;
@@ -64,10 +67,14 @@ public class Embed extends Activity {
 
 	/* 更新运行方法 */
 
-	// public static String[] FLA GS = new String[] { "id", "alias" };
-
-	/* flag标志位 */
-	/* Entity 默认字段结束 */
+	@Override
+	public List<String> getRouteList() {
+		if (StringUtils.isNotEmpty(this.getRoute())) {
+			return ListTools.toList(this.getRoute());
+		} else {
+			return new ArrayList<>();
+		}
+	}
 
 	@FieldDescribe("分组")
 	@CheckPersist(allowEmpty = true)
@@ -334,7 +341,7 @@ public class Embed extends Activity {
 	@Column(name = ColumnNamePrefix + allowRerouteTo_FIELDNAME)
 	@Index(name = TABLE + IndexNameMiddle + allowRerouteTo_FIELDNAME)
 	private Boolean allowRerouteTo;
-	
+
 	@FieldDescribe("允许挂起")
 	@CheckPersist(allowEmpty = true)
 	@Column(name = ColumnNamePrefix + allowSuspend_FIELDNAME)

+ 7 - 4
o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/element/End.java

@@ -1,5 +1,6 @@
 package com.x.processplatform.core.entity.element;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import javax.persistence.Basic;
@@ -20,8 +21,10 @@ import com.x.base.core.entity.annotation.ContainerEntity;
 import com.x.base.core.entity.annotation.Flag;
 import com.x.base.core.entity.annotation.IdReference;
 import com.x.base.core.project.annotation.FieldDescribe;
+import com.x.base.core.project.tools.ListTools;
 import com.x.processplatform.core.entity.PersistenceProperties;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.openjpa.persistence.PersistentCollection;
 import org.apache.openjpa.persistence.jdbc.ContainerTable;
 import org.apache.openjpa.persistence.jdbc.ElementColumn;
@@ -59,10 +62,10 @@ public class End extends Activity {
 		// nothing
 	}
 
-	/* 更新运行方法 */
-
-	/* flag标志位 */
-	/* Entity 默认字段结束 */
+	@Override
+	public List<String> getRouteList() {
+		return new ArrayList<>();
+	}
 
 	@FieldDescribe("分组")
 	@CheckPersist(allowEmpty = true)

+ 11 - 1
o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/element/Invoke.java

@@ -1,5 +1,6 @@
 package com.x.processplatform.core.entity.element;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import javax.persistence.Basic;
@@ -16,6 +17,7 @@ import javax.persistence.OrderColumn;
 import javax.persistence.Table;
 import javax.persistence.UniqueConstraint;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.openjpa.persistence.PersistentCollection;
 import org.apache.openjpa.persistence.jdbc.ContainerTable;
 import org.apache.openjpa.persistence.jdbc.ElementColumn;
@@ -29,6 +31,7 @@ import com.x.base.core.entity.annotation.ContainerEntity;
 import com.x.base.core.entity.annotation.Flag;
 import com.x.base.core.entity.annotation.IdReference;
 import com.x.base.core.project.annotation.FieldDescribe;
+import com.x.base.core.project.tools.ListTools;
 import com.x.processplatform.core.entity.PersistenceProperties;
 
 @Entity
@@ -62,7 +65,14 @@ public class Invoke extends Activity {
 		// nothing
 	}
 
-	/* 更新运行方法 */
+	@Override
+	public List<String> getRouteList() {
+		if (StringUtils.isNotEmpty(this.getRoute())) {
+			return ListTools.toList(this.getRoute());
+		} else {
+			return new ArrayList<>();
+		}
+	}
 
 	@FieldDescribe("分组")
 	@CheckPersist(allowEmpty = true)

+ 11 - 4
o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/element/Merge.java

@@ -1,5 +1,6 @@
 package com.x.processplatform.core.entity.element;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import javax.persistence.Basic;
@@ -14,6 +15,7 @@ import javax.persistence.OrderColumn;
 import javax.persistence.Table;
 import javax.persistence.UniqueConstraint;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.openjpa.persistence.PersistentCollection;
 import org.apache.openjpa.persistence.jdbc.ContainerTable;
 import org.apache.openjpa.persistence.jdbc.ElementColumn;
@@ -26,6 +28,7 @@ import com.x.base.core.entity.annotation.ContainerEntity;
 import com.x.base.core.entity.annotation.Flag;
 import com.x.base.core.entity.annotation.IdReference;
 import com.x.base.core.project.annotation.FieldDescribe;
+import com.x.base.core.project.tools.ListTools;
 import com.x.processplatform.core.entity.PersistenceProperties;
 
 @Entity
@@ -59,10 +62,14 @@ public class Merge extends Activity {
 		// nothing
 	}
 
-	/* 更新运行方法 */
-
-	/* flag标志位 */
-	/* Entity 默认字段结束 */
+	@Override
+	public List<String> getRouteList() {
+		if (StringUtils.isNotEmpty(this.getRoute())) {
+			return ListTools.toList(this.getRoute());
+		} else {
+			return new ArrayList<>();
+		}
+	}
 
 	@FieldDescribe("分组")
 	@CheckPersist(allowEmpty = true)

+ 13 - 1
o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/element/Message.java

@@ -1,5 +1,6 @@
 package com.x.processplatform.core.entity.element;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import javax.persistence.Basic;
@@ -14,6 +15,7 @@ import javax.persistence.OrderColumn;
 import javax.persistence.Table;
 import javax.persistence.UniqueConstraint;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.openjpa.persistence.PersistentCollection;
 import org.apache.openjpa.persistence.jdbc.ContainerTable;
 import org.apache.openjpa.persistence.jdbc.ElementColumn;
@@ -27,6 +29,7 @@ import com.x.base.core.entity.annotation.ContainerEntity;
 import com.x.base.core.entity.annotation.Flag;
 import com.x.base.core.entity.annotation.IdReference;
 import com.x.base.core.project.annotation.FieldDescribe;
+import com.x.base.core.project.tools.ListTools;
 import com.x.processplatform.core.entity.PersistenceProperties;
 
 @Entity
@@ -60,6 +63,15 @@ public class Message extends Activity {
 		// nothing
 	}
 
+	@Override
+	public List<String> getRouteList() {
+		if (StringUtils.isNotEmpty(this.getRoute())) {
+			return ListTools.toList(this.getRoute());
+		} else {
+			return new ArrayList<>();
+		}
+	}
+
 	@FieldDescribe("分组")
 	@CheckPersist(allowEmpty = true)
 	@Column(length = JpaObject.length_255B, name = ColumnNamePrefix + group_FIELDNAME)
@@ -325,7 +337,7 @@ public class Message extends Activity {
 	@Column(name = ColumnNamePrefix + allowRerouteTo_FIELDNAME)
 	@Index(name = TABLE + IndexNameMiddle + allowRerouteTo_FIELDNAME)
 	private Boolean allowRerouteTo;
-	
+
 	@FieldDescribe("允许挂起")
 	@CheckPersist(allowEmpty = true)
 	@Column(name = ColumnNamePrefix + allowSuspend_FIELDNAME)

+ 11 - 4
o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/element/Service.java

@@ -1,5 +1,6 @@
 package com.x.processplatform.core.entity.element;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import javax.persistence.Basic;
@@ -14,6 +15,7 @@ import javax.persistence.OrderColumn;
 import javax.persistence.Table;
 import javax.persistence.UniqueConstraint;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.openjpa.persistence.PersistentCollection;
 import org.apache.openjpa.persistence.jdbc.ContainerTable;
 import org.apache.openjpa.persistence.jdbc.ElementColumn;
@@ -26,6 +28,7 @@ import com.x.base.core.entity.annotation.ContainerEntity;
 import com.x.base.core.entity.annotation.Flag;
 import com.x.base.core.entity.annotation.IdReference;
 import com.x.base.core.project.annotation.FieldDescribe;
+import com.x.base.core.project.tools.ListTools;
 import com.x.processplatform.core.entity.PersistenceProperties;
 
 @Entity
@@ -59,10 +62,14 @@ public class Service extends Activity {
 		// nothing
 	}
 
-	/* 更新运行方法 */
-
-	/* flag标志位 */
-	/* Entity 默认字段结束 */
+	@Override
+	public List<String> getRouteList() {
+		if (StringUtils.isNotEmpty(this.getRoute())) {
+			return ListTools.toList(this.getRoute());
+		} else {
+			return new ArrayList<>();
+		}
+	}
 
 	@FieldDescribe("分组")
 	@CheckPersist(allowEmpty = true)

+ 11 - 1
o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/element/Split.java

@@ -1,5 +1,6 @@
 package com.x.processplatform.core.entity.element;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import javax.persistence.Basic;
@@ -14,6 +15,7 @@ import javax.persistence.OrderColumn;
 import javax.persistence.Table;
 import javax.persistence.UniqueConstraint;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.openjpa.persistence.PersistentCollection;
 import org.apache.openjpa.persistence.jdbc.ContainerTable;
 import org.apache.openjpa.persistence.jdbc.ElementColumn;
@@ -27,6 +29,7 @@ import com.x.base.core.entity.annotation.ContainerEntity;
 import com.x.base.core.entity.annotation.Flag;
 import com.x.base.core.entity.annotation.IdReference;
 import com.x.base.core.project.annotation.FieldDescribe;
+import com.x.base.core.project.tools.ListTools;
 import com.x.processplatform.core.entity.PersistenceProperties;
 
 /**
@@ -63,7 +66,14 @@ public class Split extends Activity {
 		// nothing
 	}
 
-	/* 更新运行方法 */
+	@Override
+	public List<String> getRouteList() {
+		if (StringUtils.isNotEmpty(this.getRoute())) {
+			return ListTools.toList(this.getRoute());
+		} else {
+			return new ArrayList<>();
+		}
+	}
 
 	@FieldDescribe("分组")
 	@CheckPersist(allowEmpty = true)