roo00 6 лет назад
Родитель
Сommit
580e2176fc
32 измененных файлов с 1871 добавлено и 245 удалено
  1. 23 3
      o2server/x_base_core_project/src/main/java/com/x/base/core/entity/StorageObject.java
  2. 1 1
      o2server/x_base_core_project/src/main/java/com/x/base/core/entity/StorageProtocol.java
  3. 18 0
      o2server/x_base_core_project/src/main/java/com/x/base/core/project/Context.java
  4. 7 4
      o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/StorageMapping.java
  5. 20 0
      o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/Vfs.java
  6. 1 1
      o2server/x_base_core_project/src/main/java/com/x/base/core/project/jaxrs/fireschedule/ActionExecute.java
  7. 1 1
      o2server/x_base_core_project/src/main/java/com/x/base/core/project/schedule/ScheduleLogRequest.java
  8. 30 0
      o2server/x_base_core_project/src/main/java/com/x/base/core/project/tools/DateTools.java
  9. 98 0
      o2server/x_file_assemble_control/src/main/java/com/x/file/assemble/control/jaxrs/attachment2/ActionDownloadImageWidthHeight.java
  10. 20 0
      o2server/x_file_assemble_control/src/main/java/com/x/file/assemble/control/jaxrs/attachment2/Attachment2Action.java
  11. 27 0
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/task/ActionListMyFilterPaging.java
  12. 27 0
      o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/task/ActionManageListFilterPaging.java
  13. 6 0
      o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/Attachment.java
  14. 201 18
      o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/Read.java
  15. 201 18
      o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/ReadCompleted.java
  16. 201 18
      o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/Review.java
  17. 203 18
      o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/Task.java
  18. 201 18
      o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/TaskCompleted.java
  19. 201 18
      o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/Work.java
  20. 205 22
      o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/WorkCompleted.java
  21. 32 5
      o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/element/Invoke.java
  22. 10 0
      o2server/x_processplatform_core_entity/src/test/java/com/x/processplatform/core/entity/content/test/TestClient.java
  23. 12 0
      o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/ExceptionInitialScript.java
  24. 5 1
      o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/ScriptHelper.java
  25. 21 0
      o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/processor/invoke/InvokeExecutor.java
  26. 15 6
      o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/processor/invoke/InvokeProcessor.java
  27. 12 0
      o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/processor/invoke/JaxrsObject.java
  28. 0 12
      o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/processor/manual/ManualProcessor.java
  29. 64 26
      o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/processor/merge/MergeProcessor.java
  30. 7 0
      o2server/x_processplatform_service_processing/src/test/java/com/x/processplatform/core/processing/test/TestClient.java
  31. 0 54
      o2server/x_program_center/src/main/java/com/x/program/center/schedule/CleanupScheduleLog.java
  32. 1 1
      o2server/x_program_center/src/main/java/com/x/program/center/schedule/FireSchedule.java

+ 23 - 3
o2server/x_base_core_project/src/main/java/com/x/base/core/entity/StorageObject.java

@@ -22,7 +22,7 @@ import org.apache.commons.vfs2.cache.NullFilesCache;
 import org.apache.commons.vfs2.impl.StandardFileSystemManager;
 import org.apache.commons.vfs2.provider.ftp.FtpFileSystemConfigBuilder;
 import org.apache.commons.vfs2.provider.ftp.FtpFileType;
-import org.apache.commons.vfs2.provider.http.HttpFileSystemConfigBuilder;
+import org.apache.commons.vfs2.provider.ftps.FtpsFileSystemConfigBuilder;
 import org.apache.commons.vfs2.provider.webdav.WebdavFileSystemConfigBuilder;
 
 import com.x.base.core.project.config.Config;
@@ -114,6 +114,7 @@ public abstract class StorageObject extends SliceJpaObject {
 	/** 将导入的流进行保存 */
 	public Long saveContent(StorageMapping mapping, InputStream input, String name) throws Exception {
 		this.setName(name);
+		this.setDeepPath(mapping.getDeepPath());
 		this.setExtension(StringUtils.lowerCase(FilenameUtils.getExtension(name)));
 		return this.updateContent(mapping, input);
 	}
@@ -252,6 +253,12 @@ public abstract class StorageObject extends SliceJpaObject {
 					+ URLEncoder.encode(mapping.getPassword(), DefaultCharset.name) + "@" + mapping.getHost() + ":"
 					+ mapping.getPort();
 			break;
+		case ftps:
+			// ftps://[ username[: password]@] hostname[: port][ relative-path]
+			prefix = "ftps://" + URLEncoder.encode(mapping.getUsername(), DefaultCharset.name) + ":"
+					+ URLEncoder.encode(mapping.getPassword(), DefaultCharset.name) + "@" + mapping.getHost() + ":"
+					+ mapping.getPort();
+			break;
 		case cifs:
 			// smb://[ username[: password]@] hostname[: port][ absolute-path]
 			prefix = "smb://" + URLEncoder.encode(mapping.getUsername(), DefaultCharset.name) + ":"
@@ -263,6 +270,7 @@ public abstract class StorageObject extends SliceJpaObject {
 			prefix = "webdav://" + URLEncoder.encode(mapping.getUsername(), DefaultCharset.name) + ":"
 					+ URLEncoder.encode(mapping.getPassword(), DefaultCharset.name) + "@" + mapping.getHost() + ":"
 					+ mapping.getPort();
+			break;
 		default:
 			break;
 		}
@@ -301,14 +309,26 @@ public abstract class StorageObject extends SliceJpaObject {
 			ftpBuilder.setSoTimeout(opts, 10000);
 			ftpBuilder.setControlEncoding(opts, DefaultCharset.name);
 			break;
+		case ftps:
+			FtpsFileSystemConfigBuilder ftpsBuilder = FtpsFileSystemConfigBuilder.getInstance();
+			ftpsBuilder.setPassiveMode(opts, Config.vfs().getFtp().getPassive());
+			/** 强制不校验IP */
+			ftpsBuilder.setRemoteVerification(opts, false);
+			// FtpFileType.BINARY is the default
+			ftpsBuilder.setFileType(opts, FtpFileType.BINARY);
+			ftpsBuilder.setConnectTimeout(opts, 10000);
+			ftpsBuilder.setSoTimeout(opts, 10000);
+			ftpsBuilder.setControlEncoding(opts, DefaultCharset.name);
+			break;
 		case cifs:
 			break;
 		case webdav:
-			WebdavFileSystemConfigBuilder webdavBuilder = (WebdavFileSystemConfigBuilder)WebdavFileSystemConfigBuilder.getInstance();
+			WebdavFileSystemConfigBuilder webdavBuilder = (WebdavFileSystemConfigBuilder) WebdavFileSystemConfigBuilder
+					.getInstance();
 			webdavBuilder.setConnectionTimeout(opts, 10000);
 			webdavBuilder.setSoTimeout(opts, 10000);
 			webdavBuilder.setUrlCharset(opts, DefaultCharset.name);
-			//webdavBuilder.setVersioning(opts, true);
+			// webdavBuilder.setVersioning(opts, true);
 			break;
 		default:
 			break;

+ 1 - 1
o2server/x_base_core_project/src/main/java/com/x/base/core/entity/StorageProtocol.java

@@ -1,6 +1,6 @@
 package com.x.base.core.entity;
 
 public enum StorageProtocol {
-	bzip2, file, ftp, ftps, gzip, hdfs, http, https, jar, ram, res, sftp, tar, temp, webdav, zip, cifs, mime;
+	ftp, ftps, webdav, cifs;
 	public static final int length = JpaObject.length_16B;
 }

+ 18 - 0
o2server/x_base_core_project/src/main/java/com/x/base/core/project/Context.java

@@ -266,6 +266,24 @@ public class Context extends AbstractContext {
 		this.scheduleLocalRequestList.add(new ScheduleLocalRequest(jobDetail, null, delay, interval));
 	}
 
+	/*
+	 * 接受Center调度的schedule在本地运行,和scheduleOnLocal没有本质区别,仅仅是个withDescription(
+	 * "schedule")不一样,在log中记录这个值.
+	 */
+	public <T extends AbstractJob> void fireScheduleOnLocal(Class<T> cls, Integer delay) throws Exception {
+		/* 需要单独生成一个独立任务,保证group和预约的任务不重复 */
+		JobDataMap jobDataMap = new JobDataMap();
+		jobDataMap.put("context", this);
+		JobDetail jobDetail = JobBuilder.newJob(cls).withIdentity(cls.getName(), clazz.getName())
+				.usingJobData(jobDataMap).withDescription(Config.node()).build();
+		/* 经过测试0代表不重复,仅运行一次 */
+		Trigger trigger = TriggerBuilder.newTrigger().withIdentity(cls.getName(), clazz.getName())
+				.withDescription("schedule").startAt(DateBuilder.futureDate(delay, IntervalUnit.SECOND))
+				.withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(1).withRepeatCount(0))
+				.build();
+		scheduler.scheduleJob(jobDetail, trigger);
+	}
+
 	public <T extends AbstractJob> void scheduleLocal(Class<T> cls, Integer delay) throws Exception {
 		/* 需要单独生成一个独立任务,保证group和预约的任务不重复 */
 		JobDataMap jobDataMap = new JobDataMap();

+ 7 - 4
o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/StorageMapping.java

@@ -1,5 +1,7 @@
 package com.x.base.core.project.config;
 
+import org.apache.commons.lang3.BooleanUtils;
+
 import com.x.base.core.entity.StorageProtocol;
 import com.x.base.core.project.gson.GsonPropertyObject;
 
@@ -32,6 +34,11 @@ public class StorageMapping extends GsonPropertyObject {
 
 	}
 
+	/* 默认是false */
+	public Boolean getDeepPath() {
+		return BooleanUtils.isTrue(this.deepPath);
+	}
+
 	public StorageProtocol getProtocol() {
 		return protocol;
 	}
@@ -64,10 +71,6 @@ public class StorageMapping extends GsonPropertyObject {
 		return name;
 	}
 
-	public Boolean getDeepPath() {
-		return deepPath;
-	}
-
 	public void setProtocol(StorageProtocol protocol) {
 		this.protocol = protocol;
 	}

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

@@ -7,6 +7,7 @@ import com.x.base.core.project.annotation.FieldDescribe;
 public class Vfs extends ConfigObject {
 
 	private Ftp ftp = new Ftp();
+	private Ftps ftps = new Ftps();
 
 	public Vfs() {
 	}
@@ -15,6 +16,10 @@ public class Vfs extends ConfigObject {
 		return ((null != this.ftp) ? this.ftp : new Ftp());
 	}
 
+	public Ftps getFtps() {
+		return ((null != this.ftps) ? this.ftps : new Ftps());
+	}
+
 	public static Vfs defaultInstance() {
 		return new Vfs();
 	}
@@ -34,6 +39,21 @@ public class Vfs extends ConfigObject {
 
 	}
 
+	public static class Ftps extends ConfigObject {
+
+		@FieldDescribe("是否启用被动方式传输,默认true")
+		private Boolean passive = true;
+
+		public Boolean getPassive() {
+			return (!BooleanUtils.isFalse(this.passive));
+		}
+
+		public void setPassive(Boolean passive) {
+			this.passive = passive;
+		}
+
+	}
+
 	public void setFtp(Ftp ftp) {
 		this.ftp = ftp;
 	}

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

@@ -20,7 +20,7 @@ class ActionExecute extends BaseAction {
 		ActionResult<Wo> result = new ActionResult<>();
 		com.x.base.core.project.Context ctx = com.x.base.core.project.Context.fromServletContext(servletContext);
 		Class<?> clz = Class.forName(className);
-		ctx.scheduleLocal((Class<AbstractJob>) clz, 1);
+		ctx.fireScheduleOnLocal((Class<AbstractJob>) clz, 1);
 		Wo wo = new Wo();
 		wo.setValue(true);
 		result.setData(wo);

+ 1 - 1
o2server/x_base_core_project/src/main/java/com/x/base/core/project/schedule/ScheduleLogRequest.java

@@ -34,7 +34,7 @@ public class ScheduleLogRequest extends GsonPropertyObject {
 		this.node = jobDetail.getDescription();
 		this.type = jobExecutionContext.getTrigger().getDescription();
 		this.elapsed = jobExecutionContext.getJobRunTime();
-		this.fireTime = jobExecutionContext.getNextFireTime();
+		this.fireTime = jobExecutionContext.getFireTime();
 		if (null != jobExecutionException) {
 			this.stackTrace = ExceptionUtils.getStackTrace(jobExecutionException);
 			this.success = false;

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

@@ -538,6 +538,36 @@ public class DateTools {
 		}
 		return calendar.getTime();
 	}
+
+	/**
+	 * 根据需要调整时间
+	 * @param dateTime
+	 * @param dayAdjust
+	 * @param hourAdjust
+	 * @param minuteAdjust
+	 * @param secondAdjust
+	 * @return
+	 */
+	public static  Date getAdjustTimeDay( Date dateTime, Integer dayAdjust, Integer hourAdjust, Integer minuteAdjust, Integer secondAdjust) {
+		Calendar calendar = Calendar.getInstance();
+		if(dateTime==null){
+			dateTime = new Date();
+		}
+		calendar.setTime( dateTime );
+		if ((null != dayAdjust) && (dayAdjust != 0)) {
+			calendar.add(Calendar.DAY_OF_MONTH, dayAdjust );
+		}
+		if ((null != hourAdjust) && (hourAdjust != 0)) {
+			calendar.add(Calendar.HOUR_OF_DAY, dayAdjust );
+		}
+		if ((null != minuteAdjust) && (minuteAdjust != 0)) {
+			calendar.add(Calendar.MINUTE, minuteAdjust );
+		}
+		if ((null != secondAdjust) && (secondAdjust != 0)) {
+			calendar.add(Calendar.SECOND, secondAdjust );
+		}
+		return calendar.getTime();
+	}
 	
 	  /** 
 	  * 判断当前日期是星期几

+ 98 - 0
o2server/x_file_assemble_control/src/main/java/com/x/file/assemble/control/jaxrs/attachment2/ActionDownloadImageWidthHeight.java

@@ -0,0 +1,98 @@
+package com.x.file.assemble.control.jaxrs.attachment2;
+
+import com.x.base.core.container.EntityManagerContainer;
+import com.x.base.core.container.factory.EntityManagerContainerFactory;
+import com.x.base.core.project.cache.ApplicationCache;
+import com.x.base.core.project.config.StorageMapping;
+import com.x.base.core.project.exception.ExceptionWhen;
+import com.x.base.core.project.http.ActionResult;
+import com.x.base.core.project.http.EffectivePerson;
+import com.x.base.core.project.jaxrs.WoFile;
+import com.x.file.assemble.control.ThisApplication;
+import com.x.file.core.entity.open.OriginFile;
+import com.x.file.core.entity.personal.Attachment2;
+import net.sf.ehcache.Ehcache;
+import net.sf.ehcache.Element;
+import org.apache.commons.io.output.ByteArrayOutputStream;
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.math.NumberUtils;
+import org.imgscalr.Scalr;
+
+import javax.imageio.ImageIO;
+import java.awt.image.BufferedImage;
+import java.io.ByteArrayInputStream;
+
+class ActionDownloadImageWidthHeight extends BaseAction {
+
+	private Ehcache cache = ApplicationCache.instance().getCache(ActionDownloadImageWidthHeight.class);
+
+	ActionResult<Wo> execute(EffectivePerson effectivePerson, String id, Integer width, Integer height)
+			throws Exception {
+		try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
+			ActionResult<Wo> result = new ActionResult<>();
+			Attachment2 attachment = emc.find(id, Attachment2.class, ExceptionWhen.not_found);
+			/* 判断文件的当前用户是否是管理员或者文件创建者 或者当前用户在分享或者共同编辑中 */
+			if (effectivePerson.isNotManager() && effectivePerson.isNotPerson(attachment.getPerson())) {
+				throw new Exception("person{name:" + effectivePerson.getDistinguishedName() + "} access attachment{id:"
+						+ id + "} denied.");
+			}
+			if (!ArrayUtils.contains(IMAGE_EXTENSIONS, attachment.getExtension())) {
+				throw new Exception("attachment not image file.");
+			}
+			if (width < 0 || width > 5000) {
+				throw new Exception("invalid width:" + width + ".");
+			}
+			if (height < 0 || height > 5000) {
+				throw new Exception("invalid height:" + height + ".");
+			}
+			OriginFile originFile = emc.find(attachment.getOriginFile(),OriginFile.class);
+			if (null == originFile) {
+				throw new ExceptionAttachmentNotExist(id,attachment.getOriginFile());
+			}
+			Wo wo = null;
+			String cacheKey = ApplicationCache.concreteCacheKey(this.getClass(), id+width+height);
+			Element element = cache.get(cacheKey);
+			if ((null != element) && (null != element.getObjectValue())) {
+				wo = (Wo) element.getObjectValue();
+				result.setData(wo);
+			} else {
+				StorageMapping mapping = ThisApplication.context().storageMappings().get(OriginFile.class,
+						originFile.getStorage());
+				try (ByteArrayOutputStream output = new ByteArrayOutputStream()) {
+					originFile.readContent(mapping, output);
+					try (ByteArrayInputStream input = new ByteArrayInputStream(output.toByteArray())) {
+						BufferedImage src = ImageIO.read(input);
+						int scalrWidth = (width == 0) ? src.getWidth() : width;
+						int scalrHeight = (height == 0) ? src.getHeight() : height;
+						Scalr.Mode mode = Scalr.Mode.FIT_TO_WIDTH;
+						if(src.getWidth()>src.getHeight()){
+							mode = Scalr.Mode.FIT_TO_HEIGHT;
+						}
+						BufferedImage scalrImage = Scalr.resize(src,Scalr.Method.SPEED, mode, NumberUtils.min(scalrWidth, src.getWidth()),
+								NumberUtils.min(scalrHeight, src.getHeight()));
+						try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
+							ImageIO.write(scalrImage, "png", baos);
+							byte[] bs = baos.toByteArray();
+
+							wo = new Wo(bs, this.contentType(false, attachment.getName()),
+									this.contentDisposition(false, attachment.getName()));
+
+							cache.put(new Element(cacheKey, wo));
+							result.setData(wo);
+						}
+					}
+				}
+			}
+
+			return result;
+		}
+	}
+
+	public static class Wo extends WoFile {
+
+		public Wo(byte[] bytes, String contentType, String contentDisposition) {
+			super(bytes, contentType, contentDisposition);
+		}
+
+	}
+}

+ 20 - 0
o2server/x_file_assemble_control/src/main/java/com/x/file/assemble/control/jaxrs/attachment2/Attachment2Action.java

@@ -89,6 +89,26 @@ public class Attachment2Action extends StandardJaxrsAction {
 		asyncResponse.resume(ResponseFactory.getDefaultActionResultResponse(result));
 	}
 
+	@JaxrsMethodDescribe(value = "下载图片设定宽高后的(png格式).width(0-5000)像素,0代表不限制,height(0-5000)像素,0代表不限制.", action = ActionDownloadImageWidthHeight.class)
+	@GET
+	@Path("{id}/download/image/width/{width}/height/{height}")
+	@Produces(HttpMediaType.APPLICATION_JSON_UTF_8)
+	@Consumes(MediaType.APPLICATION_JSON)
+	public void downloadImageWidthHeight(@Suspended final AsyncResponse asyncResponse,
+										  @Context HttpServletRequest request, @JaxrsParameterDescribe("附件标识") @PathParam("id") String id,
+										  @JaxrsParameterDescribe("宽度") @PathParam("width") Integer width,
+										  @JaxrsParameterDescribe("高度") @PathParam("height") Integer height) {
+		ActionResult<ActionDownloadImageWidthHeight.Wo> result = new ActionResult<>();
+		EffectivePerson effectivePerson = this.effectivePerson(request);
+		try {
+			result = new ActionDownloadImageWidthHeight().execute(effectivePerson, id, width, height);
+		} catch (Exception e) {
+			logger.error(e, effectivePerson, request, null);
+			result.error(e);
+		}
+		asyncResponse.resume(ResponseFactory.getDefaultActionResultResponse(result));
+	}
+
 	@JaxrsMethodDescribe(value = "获取指定人员共享给我的文件.", action = ActionGet.class)
 	@GET
 	@Path("{id}")

+ 27 - 0
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/task/ActionListMyFilterPaging.java

@@ -1,5 +1,6 @@
 package com.x.processplatform.assemble.surface.jaxrs.task;
 
+import java.util.Date;
 import java.util.List;
 
 import javax.persistence.EntityManager;
@@ -75,6 +76,14 @@ class ActionListMyFilterPaging extends BaseAction {
 		if (ListTools.isNotEmpty(wi.getActivityNameList())) {
 			p = cb.and(p, root.get(Task_.activityName).in(wi.getActivityNameList()));
 		}
+		if(StringUtils.isNotBlank(wi.getExpireTime())){
+			int expireTime = 0;
+			try {
+				expireTime = Integer.parseInt(wi.getExpireTime());
+			} catch (NumberFormatException e) {
+			}
+			p = cb.and(p, cb.lessThanOrEqualTo(root.get(Task_.expireTime), DateTools.getAdjustTimeDay(null, 0, -expireTime, 0, 0)));
+		}
 		if (StringUtils.isNotEmpty(wi.getKey())) {
 			String key = StringUtils.trim(StringUtils.replace(wi.getKey(), "\u3000", " "));
 			if (StringUtils.isNotEmpty(key)) {
@@ -119,6 +128,14 @@ class ActionListMyFilterPaging extends BaseAction {
 		if (ListTools.isNotEmpty(wi.getActivityNameList())) {
 			p = cb.and(p, root.get(Task_.activityName).in(wi.getActivityNameList()));
 		}
+		if(StringUtils.isNotBlank(wi.getExpireTime())){
+			int expireTime = 0;
+			try {
+				expireTime = Integer.parseInt(wi.getExpireTime());
+			} catch (NumberFormatException e) {
+			}
+			p = cb.and(p, cb.lessThanOrEqualTo(root.get(Task_.expireTime), DateTools.getAdjustTimeDay(null, 0, -expireTime, 0, 0)));
+		}
 		if (StringUtils.isNotEmpty(wi.getKey())) {
 			String key = StringUtils.trim(StringUtils.replace(wi.getKey(), "\u3000", " "));
 			if (StringUtils.isNotEmpty(key)) {
@@ -157,6 +174,9 @@ class ActionListMyFilterPaging extends BaseAction {
 		@FieldDescribe("开始时期")
 		private List<String> startTimeMonthList;
 
+		@FieldDescribe("时效超时时间(0表示所有已超时的、1表示超时1小时以上的、2、3...)")
+		private String expireTime;
+
 		@FieldDescribe("匹配关键字")
 		private String key;
 
@@ -224,6 +244,13 @@ class ActionListMyFilterPaging extends BaseAction {
 			this.endTime = endTime;
 		}
 
+		public String getExpireTime() {
+			return expireTime;
+		}
+
+		public void setExpireTime(String expireTime) {
+			this.expireTime = expireTime;
+		}
 	}
 
 	public static class Wo extends Task {

+ 27 - 0
o2server/x_processplatform_assemble_surface/src/main/java/com/x/processplatform/assemble/surface/jaxrs/task/ActionManageListFilterPaging.java

@@ -83,6 +83,14 @@ class ActionManageListFilterPaging extends BaseAction {
 		if (ListTools.isNotEmpty(wi.getActivityNameList())) {
 			p = cb.and(p, root.get(Task_.activityName).in(wi.getActivityNameList()));
 		}
+		if(StringUtils.isNotBlank(wi.getExpireTime())){
+			int expireTime = 0;
+			try {
+				expireTime = Integer.parseInt(wi.getExpireTime());
+			} catch (NumberFormatException e) {
+			}
+			p = cb.and(p, cb.lessThanOrEqualTo(root.get(Task_.expireTime), DateTools.getAdjustTimeDay(null, 0, -expireTime, 0, 0)));
+		}
 		if (StringUtils.isNotEmpty(wi.getKey())) {
 			String key = StringUtils.trim(StringUtils.replace(wi.getKey(), "\u3000", " "));
 			if (StringUtils.isNotEmpty(key)) {
@@ -131,6 +139,14 @@ class ActionManageListFilterPaging extends BaseAction {
 		if (ListTools.isNotEmpty(wi.getActivityNameList())) {
 			p = cb.and(p, root.get(Task_.activityName).in(wi.getActivityNameList()));
 		}
+		if(StringUtils.isNotBlank(wi.getExpireTime())){
+			int expireTime = 0;
+			try {
+				expireTime = Integer.parseInt(wi.getExpireTime());
+			} catch (NumberFormatException e) {
+			}
+			p = cb.and(p, cb.lessThanOrEqualTo(root.get(Task_.expireTime), DateTools.getAdjustTimeDay(null, 0, -expireTime, 0, 0)));
+		}
 		if (StringUtils.isNotEmpty(wi.getKey())) {
 			String key = StringUtils.trim(StringUtils.replace(wi.getKey(), "\u3000", " "));
 			if (StringUtils.isNotEmpty(key)) {
@@ -172,6 +188,9 @@ class ActionManageListFilterPaging extends BaseAction {
 		@FieldDescribe("开始时期")
 		private List<String> startTimeMonthList;
 
+		@FieldDescribe("时效超时时间(0表示所有已超时的、1表示超时1小时以上的、2、3...)")
+		private String expireTime;
+
 		@FieldDescribe("匹配关键字")
 		private String key;
 
@@ -246,6 +265,14 @@ class ActionManageListFilterPaging extends BaseAction {
 		public void setEndTime(String endTime) {
 			this.endTime = endTime;
 		}
+
+		public String getExpireTime() {
+			return expireTime;
+		}
+
+		public void setExpireTime(String expireTime) {
+			this.expireTime = expireTime;
+		}
 	}
 
 	public static class Wo extends Task {

+ 6 - 0
o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/Attachment.java

@@ -106,6 +106,12 @@ public class Attachment extends StorageObject {
 			throw new Exception("id can not be empty.");
 		}
 		String str = DateTools.format(workCreateTime, DateTools.formatCompact_yyyyMMdd);
+		if (BooleanUtils.isTrue(this.getDeepPath())) {
+			str += PATHSEPARATOR;
+			str += StringUtils.substring(this.job, 0, 2);
+			str += PATHSEPARATOR;
+			str += StringUtils.substring(this.job, 2, 4);
+		}
 		str += PATHSEPARATOR;
 		str += this.job;
 		str += PATHSEPARATOR;

+ 201 - 18
o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/Read.java

@@ -402,19 +402,40 @@ public class Read extends SliceJpaObject {
 	@CheckPersist(allowEmpty = true)
 	private String stringValue05;
 
-	public static final String integerValue01_FIELDNAME = "integerValue01";
-	@FieldDescribe("业务数据Integer值01.")
-	@Column(name = ColumnNamePrefix + integerValue01_FIELDNAME)
-	@Index(name = TABLE + IndexNameMiddle + integerValue01_FIELDNAME)
+	public static final String stringValue06_FIELDNAME = "stringValue06";
+	@FieldDescribe("业务数据String值06.")
+	@Column(length = length_255B, name = ColumnNamePrefix + stringValue06_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + stringValue06_FIELDNAME)
 	@CheckPersist(allowEmpty = true)
-	private Integer integerValue01;
+	private String stringValue06;
 
-	public static final String integerValue02_FIELDNAME = "integerValue02";
-	@FieldDescribe("业务数据Integer值02.")
-	@Column(name = ColumnNamePrefix + integerValue02_FIELDNAME)
-	@Index(name = TABLE + IndexNameMiddle + integerValue02_FIELDNAME)
+	public static final String stringValue07_FIELDNAME = "stringValue07";
+	@FieldDescribe("业务数据String值07.")
+	@Column(length = length_255B, name = ColumnNamePrefix + stringValue07_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + stringValue07_FIELDNAME)
 	@CheckPersist(allowEmpty = true)
-	private Integer integerValue02;
+	private String stringValue07;
+
+	public static final String stringValue08_FIELDNAME = "stringValue08";
+	@FieldDescribe("业务数据String值08.")
+	@Column(length = length_255B, name = ColumnNamePrefix + stringValue08_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + stringValue08_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private String stringValue08;
+
+	public static final String stringValue09_FIELDNAME = "stringValue09";
+	@FieldDescribe("业务数据String值09.")
+	@Column(length = length_255B, name = ColumnNamePrefix + stringValue09_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + stringValue09_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private String stringValue09;
+
+	public static final String stringValue10_FIELDNAME = "stringValue10";
+	@FieldDescribe("业务数据String值10.")
+	@Column(length = length_255B, name = ColumnNamePrefix + stringValue10_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + stringValue10_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private String stringValue10;
 
 	public static final String booleanValue01_FIELDNAME = "booleanValue01";
 	@FieldDescribe("业务数据Boolean值01.")
@@ -444,6 +465,27 @@ public class Read extends SliceJpaObject {
 	@CheckPersist(allowEmpty = true)
 	private Double doubleValue02;
 
+	public static final String doubleValue03_FIELDNAME = "doubleValue03";
+	@FieldDescribe("业务数据Double值03.")
+	@Column(name = ColumnNamePrefix + doubleValue03_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + doubleValue03_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Double doubleValue03;
+
+	public static final String doubleValue04_FIELDNAME = "doubleValue04";
+	@FieldDescribe("业务数据Double值04.")
+	@Column(name = ColumnNamePrefix + doubleValue04_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + doubleValue04_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Double doubleValue04;
+
+	public static final String doubleValue05_FIELDNAME = "doubleValue05";
+	@FieldDescribe("业务数据Double值05.")
+	@Column(name = ColumnNamePrefix + doubleValue05_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + doubleValue05_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Double doubleValue05;
+
 	public static final String longValue01_FIELDNAME = "longValue01";
 	@FieldDescribe("业务数据Long值01.")
 	@Column(name = ColumnNamePrefix + longValue01_FIELDNAME)
@@ -458,6 +500,27 @@ public class Read extends SliceJpaObject {
 	@CheckPersist(allowEmpty = true)
 	private Long longValue02;
 
+	public static final String longValue03_FIELDNAME = "longValue03";
+	@FieldDescribe("业务数据Long值03.")
+	@Column(name = ColumnNamePrefix + longValue03_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + longValue03_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Long longValue03;
+
+	public static final String longValue04_FIELDNAME = "longValue04";
+	@FieldDescribe("业务数据Long值04.")
+	@Column(name = ColumnNamePrefix + longValue04_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + longValue04_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Long longValue04;
+
+	public static final String longValue05_FIELDNAME = "longValue05";
+	@FieldDescribe("业务数据Long值05.")
+	@Column(name = ColumnNamePrefix + longValue05_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + longValue05_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Long longValue05;
+
 	public static final String dateTimeValue01_FIELDNAME = "dateTimeValue01";
 	@Temporal(TemporalType.TIMESTAMP)
 	@FieldDescribe("业务数据DateTime值01.")
@@ -474,6 +537,30 @@ public class Read extends SliceJpaObject {
 	@CheckPersist(allowEmpty = true)
 	private Date dateTimeValue02;
 
+	public static final String dateTimeValue03_FIELDNAME = "dateTimeValue03";
+	@Temporal(TemporalType.TIMESTAMP)
+	@FieldDescribe("业务数据DateTime值03.")
+	@Column(name = ColumnNamePrefix + dateTimeValue03_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + dateTimeValue03_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Date dateTimeValue03;
+
+	public static final String dateTimeValue04_FIELDNAME = "dateTimeValue04";
+	@Temporal(TemporalType.TIMESTAMP)
+	@FieldDescribe("业务数据DateTime值04.")
+	@Column(name = ColumnNamePrefix + dateTimeValue04_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + dateTimeValue04_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Date dateTimeValue04;
+
+	public static final String dateTimeValue05_FIELDNAME = "dateTimeValue05";
+	@Temporal(TemporalType.TIMESTAMP)
+	@FieldDescribe("业务数据DateTime值05.")
+	@Column(name = ColumnNamePrefix + dateTimeValue05_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + dateTimeValue05_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Date dateTimeValue05;
+
 	public static final String dateValue01_FIELDNAME = "dateValue01";
 	@Temporal(TemporalType.DATE)
 	@FieldDescribe("业务数据Date值01.")
@@ -766,20 +853,116 @@ public class Read extends SliceJpaObject {
 		this.stringValue05 = stringValue05;
 	}
 
-	public Integer getIntegerValue01() {
-		return integerValue01;
+	public String getStringValue06() {
+		return stringValue06;
+	}
+
+	public void setStringValue06(String stringValue06) {
+		this.stringValue06 = stringValue06;
+	}
+
+	public String getStringValue07() {
+		return stringValue07;
+	}
+
+	public void setStringValue07(String stringValue07) {
+		this.stringValue07 = stringValue07;
+	}
+
+	public String getStringValue08() {
+		return stringValue08;
+	}
+
+	public void setStringValue08(String stringValue08) {
+		this.stringValue08 = stringValue08;
+	}
+
+	public String getStringValue09() {
+		return stringValue09;
+	}
+
+	public void setStringValue09(String stringValue09) {
+		this.stringValue09 = stringValue09;
+	}
+
+	public String getStringValue10() {
+		return stringValue10;
+	}
+
+	public void setStringValue10(String stringValue10) {
+		this.stringValue10 = stringValue10;
+	}
+
+	public Double getDoubleValue03() {
+		return doubleValue03;
+	}
+
+	public void setDoubleValue03(Double doubleValue03) {
+		this.doubleValue03 = doubleValue03;
+	}
+
+	public Double getDoubleValue04() {
+		return doubleValue04;
+	}
+
+	public void setDoubleValue04(Double doubleValue04) {
+		this.doubleValue04 = doubleValue04;
+	}
+
+	public Double getDoubleValue05() {
+		return doubleValue05;
+	}
+
+	public void setDoubleValue05(Double doubleValue05) {
+		this.doubleValue05 = doubleValue05;
+	}
+
+	public Long getLongValue03() {
+		return longValue03;
+	}
+
+	public void setLongValue03(Long longValue03) {
+		this.longValue03 = longValue03;
+	}
+
+	public Long getLongValue04() {
+		return longValue04;
+	}
+
+	public void setLongValue04(Long longValue04) {
+		this.longValue04 = longValue04;
+	}
+
+	public Long getLongValue05() {
+		return longValue05;
+	}
+
+	public void setLongValue05(Long longValue05) {
+		this.longValue05 = longValue05;
+	}
+
+	public Date getDateTimeValue03() {
+		return dateTimeValue03;
+	}
+
+	public void setDateTimeValue03(Date dateTimeValue03) {
+		this.dateTimeValue03 = dateTimeValue03;
+	}
+
+	public Date getDateTimeValue04() {
+		return dateTimeValue04;
 	}
 
-	public void setIntegerValue01(Integer integerValue01) {
-		this.integerValue01 = integerValue01;
+	public void setDateTimeValue04(Date dateTimeValue04) {
+		this.dateTimeValue04 = dateTimeValue04;
 	}
 
-	public Integer getIntegerValue02() {
-		return integerValue02;
+	public Date getDateTimeValue05() {
+		return dateTimeValue05;
 	}
 
-	public void setIntegerValue02(Integer integerValue02) {
-		this.integerValue02 = integerValue02;
+	public void setDateTimeValue05(Date dateTimeValue05) {
+		this.dateTimeValue05 = dateTimeValue05;
 	}
 
 	public Boolean getBooleanValue01() {

+ 201 - 18
o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/ReadCompleted.java

@@ -418,19 +418,40 @@ public class ReadCompleted extends SliceJpaObject {
 	@CheckPersist(allowEmpty = true)
 	private String stringValue05;
 
-	public static final String integerValue01_FIELDNAME = "integerValue01";
-	@FieldDescribe("业务数据Integer值01.")
-	@Column(name = ColumnNamePrefix + integerValue01_FIELDNAME)
-	@Index(name = TABLE + IndexNameMiddle + integerValue01_FIELDNAME)
+	public static final String stringValue06_FIELDNAME = "stringValue06";
+	@FieldDescribe("业务数据String值06.")
+	@Column(length = length_255B, name = ColumnNamePrefix + stringValue06_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + stringValue06_FIELDNAME)
 	@CheckPersist(allowEmpty = true)
-	private Integer integerValue01;
+	private String stringValue06;
 
-	public static final String integerValue02_FIELDNAME = "integerValue02";
-	@FieldDescribe("业务数据Integer值02.")
-	@Column(name = ColumnNamePrefix + integerValue02_FIELDNAME)
-	@Index(name = TABLE + IndexNameMiddle + integerValue02_FIELDNAME)
+	public static final String stringValue07_FIELDNAME = "stringValue07";
+	@FieldDescribe("业务数据String值07.")
+	@Column(length = length_255B, name = ColumnNamePrefix + stringValue07_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + stringValue07_FIELDNAME)
 	@CheckPersist(allowEmpty = true)
-	private Integer integerValue02;
+	private String stringValue07;
+
+	public static final String stringValue08_FIELDNAME = "stringValue08";
+	@FieldDescribe("业务数据String值08.")
+	@Column(length = length_255B, name = ColumnNamePrefix + stringValue08_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + stringValue08_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private String stringValue08;
+
+	public static final String stringValue09_FIELDNAME = "stringValue09";
+	@FieldDescribe("业务数据String值09.")
+	@Column(length = length_255B, name = ColumnNamePrefix + stringValue09_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + stringValue09_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private String stringValue09;
+
+	public static final String stringValue10_FIELDNAME = "stringValue10";
+	@FieldDescribe("业务数据String值10.")
+	@Column(length = length_255B, name = ColumnNamePrefix + stringValue10_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + stringValue10_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private String stringValue10;
 
 	public static final String booleanValue01_FIELDNAME = "booleanValue01";
 	@FieldDescribe("业务数据Boolean值01.")
@@ -460,6 +481,27 @@ public class ReadCompleted extends SliceJpaObject {
 	@CheckPersist(allowEmpty = true)
 	private Double doubleValue02;
 
+	public static final String doubleValue03_FIELDNAME = "doubleValue03";
+	@FieldDescribe("业务数据Double值03.")
+	@Column(name = ColumnNamePrefix + doubleValue03_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + doubleValue03_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Double doubleValue03;
+
+	public static final String doubleValue04_FIELDNAME = "doubleValue04";
+	@FieldDescribe("业务数据Double值04.")
+	@Column(name = ColumnNamePrefix + doubleValue04_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + doubleValue04_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Double doubleValue04;
+
+	public static final String doubleValue05_FIELDNAME = "doubleValue05";
+	@FieldDescribe("业务数据Double值05.")
+	@Column(name = ColumnNamePrefix + doubleValue05_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + doubleValue05_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Double doubleValue05;
+
 	public static final String longValue01_FIELDNAME = "longValue01";
 	@FieldDescribe("业务数据Long值01.")
 	@Column(name = ColumnNamePrefix + longValue01_FIELDNAME)
@@ -474,6 +516,27 @@ public class ReadCompleted extends SliceJpaObject {
 	@CheckPersist(allowEmpty = true)
 	private Long longValue02;
 
+	public static final String longValue03_FIELDNAME = "longValue03";
+	@FieldDescribe("业务数据Long值03.")
+	@Column(name = ColumnNamePrefix + longValue03_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + longValue03_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Long longValue03;
+
+	public static final String longValue04_FIELDNAME = "longValue04";
+	@FieldDescribe("业务数据Long值04.")
+	@Column(name = ColumnNamePrefix + longValue04_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + longValue04_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Long longValue04;
+
+	public static final String longValue05_FIELDNAME = "longValue05";
+	@FieldDescribe("业务数据Long值05.")
+	@Column(name = ColumnNamePrefix + longValue05_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + longValue05_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Long longValue05;
+
 	public static final String dateTimeValue01_FIELDNAME = "dateTimeValue01";
 	@Temporal(TemporalType.TIMESTAMP)
 	@FieldDescribe("业务数据DateTime值01.")
@@ -490,6 +553,30 @@ public class ReadCompleted extends SliceJpaObject {
 	@CheckPersist(allowEmpty = true)
 	private Date dateTimeValue02;
 
+	public static final String dateTimeValue03_FIELDNAME = "dateTimeValue03";
+	@Temporal(TemporalType.TIMESTAMP)
+	@FieldDescribe("业务数据DateTime值03.")
+	@Column(name = ColumnNamePrefix + dateTimeValue03_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + dateTimeValue03_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Date dateTimeValue03;
+
+	public static final String dateTimeValue04_FIELDNAME = "dateTimeValue04";
+	@Temporal(TemporalType.TIMESTAMP)
+	@FieldDescribe("业务数据DateTime值04.")
+	@Column(name = ColumnNamePrefix + dateTimeValue04_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + dateTimeValue04_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Date dateTimeValue04;
+
+	public static final String dateTimeValue05_FIELDNAME = "dateTimeValue05";
+	@Temporal(TemporalType.TIMESTAMP)
+	@FieldDescribe("业务数据DateTime值05.")
+	@Column(name = ColumnNamePrefix + dateTimeValue05_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + dateTimeValue05_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Date dateTimeValue05;
+
 	public static final String dateValue01_FIELDNAME = "dateValue01";
 	@Temporal(TemporalType.DATE)
 	@FieldDescribe("业务数据Date值01.")
@@ -814,20 +901,116 @@ public class ReadCompleted extends SliceJpaObject {
 		this.stringValue05 = stringValue05;
 	}
 
-	public Integer getIntegerValue01() {
-		return integerValue01;
+	public String getStringValue06() {
+		return stringValue06;
+	}
+
+	public void setStringValue06(String stringValue06) {
+		this.stringValue06 = stringValue06;
+	}
+
+	public String getStringValue07() {
+		return stringValue07;
+	}
+
+	public void setStringValue07(String stringValue07) {
+		this.stringValue07 = stringValue07;
+	}
+
+	public String getStringValue08() {
+		return stringValue08;
+	}
+
+	public void setStringValue08(String stringValue08) {
+		this.stringValue08 = stringValue08;
+	}
+
+	public String getStringValue09() {
+		return stringValue09;
+	}
+
+	public void setStringValue09(String stringValue09) {
+		this.stringValue09 = stringValue09;
+	}
+
+	public String getStringValue10() {
+		return stringValue10;
+	}
+
+	public void setStringValue10(String stringValue10) {
+		this.stringValue10 = stringValue10;
+	}
+
+	public Double getDoubleValue03() {
+		return doubleValue03;
+	}
+
+	public void setDoubleValue03(Double doubleValue03) {
+		this.doubleValue03 = doubleValue03;
+	}
+
+	public Double getDoubleValue04() {
+		return doubleValue04;
+	}
+
+	public void setDoubleValue04(Double doubleValue04) {
+		this.doubleValue04 = doubleValue04;
+	}
+
+	public Double getDoubleValue05() {
+		return doubleValue05;
+	}
+
+	public void setDoubleValue05(Double doubleValue05) {
+		this.doubleValue05 = doubleValue05;
+	}
+
+	public Long getLongValue03() {
+		return longValue03;
+	}
+
+	public void setLongValue03(Long longValue03) {
+		this.longValue03 = longValue03;
+	}
+
+	public Long getLongValue04() {
+		return longValue04;
+	}
+
+	public void setLongValue04(Long longValue04) {
+		this.longValue04 = longValue04;
+	}
+
+	public Long getLongValue05() {
+		return longValue05;
+	}
+
+	public void setLongValue05(Long longValue05) {
+		this.longValue05 = longValue05;
+	}
+
+	public Date getDateTimeValue03() {
+		return dateTimeValue03;
+	}
+
+	public void setDateTimeValue03(Date dateTimeValue03) {
+		this.dateTimeValue03 = dateTimeValue03;
+	}
+
+	public Date getDateTimeValue04() {
+		return dateTimeValue04;
 	}
 
-	public void setIntegerValue01(Integer integerValue01) {
-		this.integerValue01 = integerValue01;
+	public void setDateTimeValue04(Date dateTimeValue04) {
+		this.dateTimeValue04 = dateTimeValue04;
 	}
 
-	public Integer getIntegerValue02() {
-		return integerValue02;
+	public Date getDateTimeValue05() {
+		return dateTimeValue05;
 	}
 
-	public void setIntegerValue02(Integer integerValue02) {
-		this.integerValue02 = integerValue02;
+	public void setDateTimeValue05(Date dateTimeValue05) {
+		this.dateTimeValue05 = dateTimeValue05;
 	}
 
 	public Boolean getBooleanValue01() {

+ 201 - 18
o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/Review.java

@@ -317,19 +317,40 @@ public class Review extends SliceJpaObject {
 	@CheckPersist(allowEmpty = true)
 	private String stringValue05;
 
-	public static final String integerValue01_FIELDNAME = "integerValue01";
-	@FieldDescribe("业务数据Integer值01.")
-	@Column(name = ColumnNamePrefix + integerValue01_FIELDNAME)
-	@Index(name = TABLE + IndexNameMiddle + integerValue01_FIELDNAME)
+	public static final String stringValue06_FIELDNAME = "stringValue06";
+	@FieldDescribe("业务数据String值06.")
+	@Column(length = length_255B, name = ColumnNamePrefix + stringValue06_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + stringValue06_FIELDNAME)
 	@CheckPersist(allowEmpty = true)
-	private Integer integerValue01;
+	private String stringValue06;
 
-	public static final String integerValue02_FIELDNAME = "integerValue02";
-	@FieldDescribe("业务数据Integer值02.")
-	@Column(name = ColumnNamePrefix + integerValue02_FIELDNAME)
-	@Index(name = TABLE + IndexNameMiddle + integerValue02_FIELDNAME)
+	public static final String stringValue07_FIELDNAME = "stringValue07";
+	@FieldDescribe("业务数据String值07.")
+	@Column(length = length_255B, name = ColumnNamePrefix + stringValue07_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + stringValue07_FIELDNAME)
 	@CheckPersist(allowEmpty = true)
-	private Integer integerValue02;
+	private String stringValue07;
+
+	public static final String stringValue08_FIELDNAME = "stringValue08";
+	@FieldDescribe("业务数据String值08.")
+	@Column(length = length_255B, name = ColumnNamePrefix + stringValue08_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + stringValue08_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private String stringValue08;
+
+	public static final String stringValue09_FIELDNAME = "stringValue09";
+	@FieldDescribe("业务数据String值09.")
+	@Column(length = length_255B, name = ColumnNamePrefix + stringValue09_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + stringValue09_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private String stringValue09;
+
+	public static final String stringValue10_FIELDNAME = "stringValue10";
+	@FieldDescribe("业务数据String值10.")
+	@Column(length = length_255B, name = ColumnNamePrefix + stringValue10_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + stringValue10_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private String stringValue10;
 
 	public static final String booleanValue01_FIELDNAME = "booleanValue01";
 	@FieldDescribe("业务数据Boolean值01.")
@@ -359,6 +380,27 @@ public class Review extends SliceJpaObject {
 	@CheckPersist(allowEmpty = true)
 	private Double doubleValue02;
 
+	public static final String doubleValue03_FIELDNAME = "doubleValue03";
+	@FieldDescribe("业务数据Double值03.")
+	@Column(name = ColumnNamePrefix + doubleValue03_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + doubleValue03_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Double doubleValue03;
+
+	public static final String doubleValue04_FIELDNAME = "doubleValue04";
+	@FieldDescribe("业务数据Double值04.")
+	@Column(name = ColumnNamePrefix + doubleValue04_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + doubleValue04_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Double doubleValue04;
+
+	public static final String doubleValue05_FIELDNAME = "doubleValue05";
+	@FieldDescribe("业务数据Double值05.")
+	@Column(name = ColumnNamePrefix + doubleValue05_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + doubleValue05_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Double doubleValue05;
+
 	public static final String longValue01_FIELDNAME = "longValue01";
 	@FieldDescribe("业务数据Long值01.")
 	@Column(name = ColumnNamePrefix + longValue01_FIELDNAME)
@@ -373,6 +415,27 @@ public class Review extends SliceJpaObject {
 	@CheckPersist(allowEmpty = true)
 	private Long longValue02;
 
+	public static final String longValue03_FIELDNAME = "longValue03";
+	@FieldDescribe("业务数据Long值03.")
+	@Column(name = ColumnNamePrefix + longValue03_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + longValue03_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Long longValue03;
+
+	public static final String longValue04_FIELDNAME = "longValue04";
+	@FieldDescribe("业务数据Long值04.")
+	@Column(name = ColumnNamePrefix + longValue04_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + longValue04_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Long longValue04;
+
+	public static final String longValue05_FIELDNAME = "longValue05";
+	@FieldDescribe("业务数据Long值05.")
+	@Column(name = ColumnNamePrefix + longValue05_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + longValue05_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Long longValue05;
+
 	public static final String dateTimeValue01_FIELDNAME = "dateTimeValue01";
 	@Temporal(TemporalType.TIMESTAMP)
 	@FieldDescribe("业务数据DateTime值01.")
@@ -389,6 +452,30 @@ public class Review extends SliceJpaObject {
 	@CheckPersist(allowEmpty = true)
 	private Date dateTimeValue02;
 
+	public static final String dateTimeValue03_FIELDNAME = "dateTimeValue03";
+	@Temporal(TemporalType.TIMESTAMP)
+	@FieldDescribe("业务数据DateTime值03.")
+	@Column(name = ColumnNamePrefix + dateTimeValue03_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + dateTimeValue03_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Date dateTimeValue03;
+
+	public static final String dateTimeValue04_FIELDNAME = "dateTimeValue04";
+	@Temporal(TemporalType.TIMESTAMP)
+	@FieldDescribe("业务数据DateTime值04.")
+	@Column(name = ColumnNamePrefix + dateTimeValue04_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + dateTimeValue04_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Date dateTimeValue04;
+
+	public static final String dateTimeValue05_FIELDNAME = "dateTimeValue05";
+	@Temporal(TemporalType.TIMESTAMP)
+	@FieldDescribe("业务数据DateTime值05.")
+	@Column(name = ColumnNamePrefix + dateTimeValue05_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + dateTimeValue05_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Date dateTimeValue05;
+
 	public static final String dateValue01_FIELDNAME = "dateValue01";
 	@Temporal(TemporalType.DATE)
 	@FieldDescribe("业务数据Date值01.")
@@ -617,20 +704,116 @@ public class Review extends SliceJpaObject {
 		this.stringValue05 = stringValue05;
 	}
 
-	public Integer getIntegerValue01() {
-		return integerValue01;
+	public String getStringValue06() {
+		return stringValue06;
+	}
+
+	public void setStringValue06(String stringValue06) {
+		this.stringValue06 = stringValue06;
+	}
+
+	public String getStringValue07() {
+		return stringValue07;
+	}
+
+	public void setStringValue07(String stringValue07) {
+		this.stringValue07 = stringValue07;
+	}
+
+	public String getStringValue08() {
+		return stringValue08;
+	}
+
+	public void setStringValue08(String stringValue08) {
+		this.stringValue08 = stringValue08;
+	}
+
+	public String getStringValue09() {
+		return stringValue09;
+	}
+
+	public void setStringValue09(String stringValue09) {
+		this.stringValue09 = stringValue09;
+	}
+
+	public String getStringValue10() {
+		return stringValue10;
+	}
+
+	public void setStringValue10(String stringValue10) {
+		this.stringValue10 = stringValue10;
+	}
+
+	public Double getDoubleValue03() {
+		return doubleValue03;
+	}
+
+	public void setDoubleValue03(Double doubleValue03) {
+		this.doubleValue03 = doubleValue03;
+	}
+
+	public Double getDoubleValue04() {
+		return doubleValue04;
+	}
+
+	public void setDoubleValue04(Double doubleValue04) {
+		this.doubleValue04 = doubleValue04;
+	}
+
+	public Double getDoubleValue05() {
+		return doubleValue05;
+	}
+
+	public void setDoubleValue05(Double doubleValue05) {
+		this.doubleValue05 = doubleValue05;
+	}
+
+	public Long getLongValue03() {
+		return longValue03;
+	}
+
+	public void setLongValue03(Long longValue03) {
+		this.longValue03 = longValue03;
+	}
+
+	public Long getLongValue04() {
+		return longValue04;
+	}
+
+	public void setLongValue04(Long longValue04) {
+		this.longValue04 = longValue04;
+	}
+
+	public Long getLongValue05() {
+		return longValue05;
+	}
+
+	public void setLongValue05(Long longValue05) {
+		this.longValue05 = longValue05;
+	}
+
+	public Date getDateTimeValue03() {
+		return dateTimeValue03;
+	}
+
+	public void setDateTimeValue03(Date dateTimeValue03) {
+		this.dateTimeValue03 = dateTimeValue03;
+	}
+
+	public Date getDateTimeValue04() {
+		return dateTimeValue04;
 	}
 
-	public void setIntegerValue01(Integer integerValue01) {
-		this.integerValue01 = integerValue01;
+	public void setDateTimeValue04(Date dateTimeValue04) {
+		this.dateTimeValue04 = dateTimeValue04;
 	}
 
-	public Integer getIntegerValue02() {
-		return integerValue02;
+	public Date getDateTimeValue05() {
+		return dateTimeValue05;
 	}
 
-	public void setIntegerValue02(Integer integerValue02) {
-		this.integerValue02 = integerValue02;
+	public void setDateTimeValue05(Date dateTimeValue05) {
+		this.dateTimeValue05 = dateTimeValue05;
 	}
 
 	public Boolean getBooleanValue01() {

+ 203 - 18
o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/Task.java

@@ -487,19 +487,40 @@ public class Task extends SliceJpaObject {
 	@CheckPersist(allowEmpty = true)
 	private String stringValue05;
 
-	public static final String integerValue01_FIELDNAME = "integerValue01";
-	@FieldDescribe("业务数据Integer值01.")
-	@Column(name = ColumnNamePrefix + integerValue01_FIELDNAME)
-	@Index(name = TABLE + IndexNameMiddle + integerValue01_FIELDNAME)
+	public static final String stringValue06_FIELDNAME = "stringValue06";
+	@FieldDescribe("业务数据String值06.")
+	@Column(length = length_255B, name = ColumnNamePrefix + stringValue06_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + stringValue06_FIELDNAME)
 	@CheckPersist(allowEmpty = true)
-	private Integer integerValue01;
+	private String stringValue06;
 
-	public static final String integerValue02_FIELDNAME = "integerValue02";
-	@FieldDescribe("业务数据Integer值02.")
-	@Column(name = ColumnNamePrefix + integerValue02_FIELDNAME)
-	@Index(name = TABLE + IndexNameMiddle + integerValue02_FIELDNAME)
+	public static final String stringValue07_FIELDNAME = "stringValue07";
+	@FieldDescribe("业务数据String值07.")
+	@Column(length = length_255B, name = ColumnNamePrefix + stringValue07_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + stringValue07_FIELDNAME)
 	@CheckPersist(allowEmpty = true)
-	private Integer integerValue02;
+	private String stringValue07;
+
+	public static final String stringValue08_FIELDNAME = "stringValue08";
+	@FieldDescribe("业务数据String值08.")
+	@Column(length = length_255B, name = ColumnNamePrefix + stringValue08_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + stringValue08_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private String stringValue08;
+
+	public static final String stringValue09_FIELDNAME = "stringValue09";
+	@FieldDescribe("业务数据String值09.")
+	@Column(length = length_255B, name = ColumnNamePrefix + stringValue09_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + stringValue09_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private String stringValue09;
+
+	public static final String stringValue10_FIELDNAME = "stringValue10";
+	@FieldDescribe("业务数据String值10.")
+	@Column(length = length_255B, name = ColumnNamePrefix + stringValue10_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + stringValue10_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private String stringValue10;
 
 	public static final String booleanValue01_FIELDNAME = "booleanValue01";
 	@FieldDescribe("业务数据Boolean值01.")
@@ -528,6 +549,27 @@ public class Task extends SliceJpaObject {
 	@Index(name = TABLE + IndexNameMiddle + doubleValue02_FIELDNAME)
 	@CheckPersist(allowEmpty = true)
 	private Double doubleValue02;
+	
+	public static final String doubleValue03_FIELDNAME = "doubleValue03";
+	@FieldDescribe("业务数据Double值03.")
+	@Column(name = ColumnNamePrefix + doubleValue03_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + doubleValue03_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Double doubleValue03;
+	
+	public static final String doubleValue04_FIELDNAME = "doubleValue04";
+	@FieldDescribe("业务数据Double值04.")
+	@Column(name = ColumnNamePrefix + doubleValue04_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + doubleValue04_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Double doubleValue04;
+	
+	public static final String doubleValue05_FIELDNAME = "doubleValue05";
+	@FieldDescribe("业务数据Double值05.")
+	@Column(name = ColumnNamePrefix + doubleValue05_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + doubleValue05_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Double doubleValue05;
 
 	public static final String longValue01_FIELDNAME = "longValue01";
 	@FieldDescribe("业务数据Long值01.")
@@ -542,6 +584,27 @@ public class Task extends SliceJpaObject {
 	@Index(name = TABLE + IndexNameMiddle + longValue02_FIELDNAME)
 	@CheckPersist(allowEmpty = true)
 	private Long longValue02;
+	
+	public static final String longValue03_FIELDNAME = "longValue03";
+	@FieldDescribe("业务数据Long值03.")
+	@Column(name = ColumnNamePrefix + longValue03_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + longValue03_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Long longValue03;
+	
+	public static final String longValue04_FIELDNAME = "longValue04";
+	@FieldDescribe("业务数据Long值04.")
+	@Column(name = ColumnNamePrefix + longValue04_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + longValue04_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Long longValue04;
+	
+	public static final String longValue05_FIELDNAME = "longValue05";
+	@FieldDescribe("业务数据Long值05.")
+	@Column(name = ColumnNamePrefix + longValue05_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + longValue05_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Long longValue05;
 
 	public static final String dateTimeValue01_FIELDNAME = "dateTimeValue01";
 	@Temporal(TemporalType.TIMESTAMP)
@@ -558,6 +621,30 @@ public class Task extends SliceJpaObject {
 	@Index(name = TABLE + IndexNameMiddle + dateTimeValue02_FIELDNAME)
 	@CheckPersist(allowEmpty = true)
 	private Date dateTimeValue02;
+	
+	public static final String dateTimeValue03_FIELDNAME = "dateTimeValue03";
+	@Temporal(TemporalType.TIMESTAMP)
+	@FieldDescribe("业务数据DateTime值03.")
+	@Column(name = ColumnNamePrefix + dateTimeValue03_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + dateTimeValue03_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Date dateTimeValue03;
+	
+	public static final String dateTimeValue04_FIELDNAME = "dateTimeValue04";
+	@Temporal(TemporalType.TIMESTAMP)
+	@FieldDescribe("业务数据DateTime值04.")
+	@Column(name = ColumnNamePrefix + dateTimeValue04_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + dateTimeValue04_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Date dateTimeValue04;
+	
+	public static final String dateTimeValue05_FIELDNAME = "dateTimeValue05";
+	@Temporal(TemporalType.TIMESTAMP)
+	@FieldDescribe("业务数据DateTime值05.")
+	@Column(name = ColumnNamePrefix + dateTimeValue05_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + dateTimeValue05_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Date dateTimeValue05;
 
 	public static final String dateValue01_FIELDNAME = "dateValue01";
 	@Temporal(TemporalType.DATE)
@@ -948,20 +1035,118 @@ public class Task extends SliceJpaObject {
 		this.stringValue05 = stringValue05;
 	}
 
-	public Integer getIntegerValue01() {
-		return integerValue01;
+ 
+
+	public String getStringValue06() {
+		return stringValue06;
+	}
+
+	public void setStringValue06(String stringValue06) {
+		this.stringValue06 = stringValue06;
+	}
+
+	public String getStringValue07() {
+		return stringValue07;
+	}
+
+	public void setStringValue07(String stringValue07) {
+		this.stringValue07 = stringValue07;
+	}
+
+	public String getStringValue08() {
+		return stringValue08;
+	}
+
+	public void setStringValue08(String stringValue08) {
+		this.stringValue08 = stringValue08;
+	}
+
+	public String getStringValue09() {
+		return stringValue09;
+	}
+
+	public void setStringValue09(String stringValue09) {
+		this.stringValue09 = stringValue09;
+	}
+
+	public String getStringValue10() {
+		return stringValue10;
+	}
+
+	public void setStringValue10(String stringValue10) {
+		this.stringValue10 = stringValue10;
+	}
+
+	public Double getDoubleValue03() {
+		return doubleValue03;
+	}
+
+	public void setDoubleValue03(Double doubleValue03) {
+		this.doubleValue03 = doubleValue03;
+	}
+
+	public Double getDoubleValue04() {
+		return doubleValue04;
+	}
+
+	public void setDoubleValue04(Double doubleValue04) {
+		this.doubleValue04 = doubleValue04;
+	}
+
+	public Double getDoubleValue05() {
+		return doubleValue05;
+	}
+
+	public void setDoubleValue05(Double doubleValue05) {
+		this.doubleValue05 = doubleValue05;
+	}
+
+	public Long getLongValue03() {
+		return longValue03;
+	}
+
+	public void setLongValue03(Long longValue03) {
+		this.longValue03 = longValue03;
+	}
+
+	public Long getLongValue04() {
+		return longValue04;
+	}
+
+	public void setLongValue04(Long longValue04) {
+		this.longValue04 = longValue04;
+	}
+
+	public Long getLongValue05() {
+		return longValue05;
+	}
+
+	public void setLongValue05(Long longValue05) {
+		this.longValue05 = longValue05;
+	}
+
+	public Date getDateTimeValue03() {
+		return dateTimeValue03;
+	}
+
+	public void setDateTimeValue03(Date dateTimeValue03) {
+		this.dateTimeValue03 = dateTimeValue03;
+	}
+
+	public Date getDateTimeValue04() {
+		return dateTimeValue04;
 	}
 
-	public void setIntegerValue01(Integer integerValue01) {
-		this.integerValue01 = integerValue01;
+	public void setDateTimeValue04(Date dateTimeValue04) {
+		this.dateTimeValue04 = dateTimeValue04;
 	}
 
-	public Integer getIntegerValue02() {
-		return integerValue02;
+	public Date getDateTimeValue05() {
+		return dateTimeValue05;
 	}
 
-	public void setIntegerValue02(Integer integerValue02) {
-		this.integerValue02 = integerValue02;
+	public void setDateTimeValue05(Date dateTimeValue05) {
+		this.dateTimeValue05 = dateTimeValue05;
 	}
 
 	public Boolean getBooleanValue01() {

+ 201 - 18
o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/TaskCompleted.java

@@ -549,19 +549,40 @@ public class TaskCompleted extends SliceJpaObject {
 	@CheckPersist(allowEmpty = true)
 	private String stringValue05;
 
-	public static final String integerValue01_FIELDNAME = "integerValue01";
-	@FieldDescribe("业务数据Integer值01.")
-	@Column(name = ColumnNamePrefix + integerValue01_FIELDNAME)
-	@Index(name = TABLE + IndexNameMiddle + integerValue01_FIELDNAME)
+	public static final String stringValue06_FIELDNAME = "stringValue06";
+	@FieldDescribe("业务数据String值06.")
+	@Column(length = length_255B, name = ColumnNamePrefix + stringValue06_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + stringValue06_FIELDNAME)
 	@CheckPersist(allowEmpty = true)
-	private Integer integerValue01;
+	private String stringValue06;
 
-	public static final String integerValue02_FIELDNAME = "integerValue02";
-	@FieldDescribe("业务数据Integer值02.")
-	@Column(name = ColumnNamePrefix + integerValue02_FIELDNAME)
-	@Index(name = TABLE + IndexNameMiddle + integerValue02_FIELDNAME)
+	public static final String stringValue07_FIELDNAME = "stringValue07";
+	@FieldDescribe("业务数据String值07.")
+	@Column(length = length_255B, name = ColumnNamePrefix + stringValue07_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + stringValue07_FIELDNAME)
 	@CheckPersist(allowEmpty = true)
-	private Integer integerValue02;
+	private String stringValue07;
+
+	public static final String stringValue08_FIELDNAME = "stringValue08";
+	@FieldDescribe("业务数据String值08.")
+	@Column(length = length_255B, name = ColumnNamePrefix + stringValue08_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + stringValue08_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private String stringValue08;
+
+	public static final String stringValue09_FIELDNAME = "stringValue09";
+	@FieldDescribe("业务数据String值09.")
+	@Column(length = length_255B, name = ColumnNamePrefix + stringValue09_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + stringValue09_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private String stringValue09;
+
+	public static final String stringValue10_FIELDNAME = "stringValue10";
+	@FieldDescribe("业务数据String值10.")
+	@Column(length = length_255B, name = ColumnNamePrefix + stringValue10_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + stringValue10_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private String stringValue10;
 
 	public static final String booleanValue01_FIELDNAME = "booleanValue01";
 	@FieldDescribe("业务数据Boolean值01.")
@@ -591,6 +612,27 @@ public class TaskCompleted extends SliceJpaObject {
 	@CheckPersist(allowEmpty = true)
 	private Double doubleValue02;
 
+	public static final String doubleValue03_FIELDNAME = "doubleValue03";
+	@FieldDescribe("业务数据Double值03.")
+	@Column(name = ColumnNamePrefix + doubleValue03_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + doubleValue03_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Double doubleValue03;
+
+	public static final String doubleValue04_FIELDNAME = "doubleValue04";
+	@FieldDescribe("业务数据Double值04.")
+	@Column(name = ColumnNamePrefix + doubleValue04_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + doubleValue04_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Double doubleValue04;
+
+	public static final String doubleValue05_FIELDNAME = "doubleValue05";
+	@FieldDescribe("业务数据Double值05.")
+	@Column(name = ColumnNamePrefix + doubleValue05_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + doubleValue05_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Double doubleValue05;
+
 	public static final String longValue01_FIELDNAME = "longValue01";
 	@FieldDescribe("业务数据Long值01.")
 	@Column(name = ColumnNamePrefix + longValue01_FIELDNAME)
@@ -605,6 +647,27 @@ public class TaskCompleted extends SliceJpaObject {
 	@CheckPersist(allowEmpty = true)
 	private Long longValue02;
 
+	public static final String longValue03_FIELDNAME = "longValue03";
+	@FieldDescribe("业务数据Long值03.")
+	@Column(name = ColumnNamePrefix + longValue03_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + longValue03_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Long longValue03;
+
+	public static final String longValue04_FIELDNAME = "longValue04";
+	@FieldDescribe("业务数据Long值04.")
+	@Column(name = ColumnNamePrefix + longValue04_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + longValue04_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Long longValue04;
+
+	public static final String longValue05_FIELDNAME = "longValue05";
+	@FieldDescribe("业务数据Long值05.")
+	@Column(name = ColumnNamePrefix + longValue05_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + longValue05_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Long longValue05;
+
 	public static final String dateTimeValue01_FIELDNAME = "dateTimeValue01";
 	@Temporal(TemporalType.TIMESTAMP)
 	@FieldDescribe("业务数据DateTime值01.")
@@ -621,6 +684,30 @@ public class TaskCompleted extends SliceJpaObject {
 	@CheckPersist(allowEmpty = true)
 	private Date dateTimeValue02;
 
+	public static final String dateTimeValue03_FIELDNAME = "dateTimeValue03";
+	@Temporal(TemporalType.TIMESTAMP)
+	@FieldDescribe("业务数据DateTime值03.")
+	@Column(name = ColumnNamePrefix + dateTimeValue03_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + dateTimeValue03_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Date dateTimeValue03;
+
+	public static final String dateTimeValue04_FIELDNAME = "dateTimeValue04";
+	@Temporal(TemporalType.TIMESTAMP)
+	@FieldDescribe("业务数据DateTime值04.")
+	@Column(name = ColumnNamePrefix + dateTimeValue04_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + dateTimeValue04_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Date dateTimeValue04;
+
+	public static final String dateTimeValue05_FIELDNAME = "dateTimeValue05";
+	@Temporal(TemporalType.TIMESTAMP)
+	@FieldDescribe("业务数据DateTime值05.")
+	@Column(name = ColumnNamePrefix + dateTimeValue05_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + dateTimeValue05_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Date dateTimeValue05;
+
 	public static final String dateValue01_FIELDNAME = "dateValue01";
 	@Temporal(TemporalType.DATE)
 	@FieldDescribe("业务数据Date值01.")
@@ -1025,20 +1112,116 @@ public class TaskCompleted extends SliceJpaObject {
 		this.stringValue05 = stringValue05;
 	}
 
-	public Integer getIntegerValue01() {
-		return integerValue01;
+	public String getStringValue06() {
+		return stringValue06;
+	}
+
+	public void setStringValue06(String stringValue06) {
+		this.stringValue06 = stringValue06;
+	}
+
+	public String getStringValue07() {
+		return stringValue07;
+	}
+
+	public void setStringValue07(String stringValue07) {
+		this.stringValue07 = stringValue07;
+	}
+
+	public String getStringValue08() {
+		return stringValue08;
+	}
+
+	public void setStringValue08(String stringValue08) {
+		this.stringValue08 = stringValue08;
+	}
+
+	public String getStringValue09() {
+		return stringValue09;
+	}
+
+	public void setStringValue09(String stringValue09) {
+		this.stringValue09 = stringValue09;
+	}
+
+	public String getStringValue10() {
+		return stringValue10;
+	}
+
+	public void setStringValue10(String stringValue10) {
+		this.stringValue10 = stringValue10;
+	}
+
+	public Double getDoubleValue03() {
+		return doubleValue03;
+	}
+
+	public void setDoubleValue03(Double doubleValue03) {
+		this.doubleValue03 = doubleValue03;
+	}
+
+	public Double getDoubleValue04() {
+		return doubleValue04;
+	}
+
+	public void setDoubleValue04(Double doubleValue04) {
+		this.doubleValue04 = doubleValue04;
+	}
+
+	public Double getDoubleValue05() {
+		return doubleValue05;
+	}
+
+	public void setDoubleValue05(Double doubleValue05) {
+		this.doubleValue05 = doubleValue05;
+	}
+
+	public Long getLongValue03() {
+		return longValue03;
+	}
+
+	public void setLongValue03(Long longValue03) {
+		this.longValue03 = longValue03;
+	}
+
+	public Long getLongValue04() {
+		return longValue04;
+	}
+
+	public void setLongValue04(Long longValue04) {
+		this.longValue04 = longValue04;
+	}
+
+	public Long getLongValue05() {
+		return longValue05;
+	}
+
+	public void setLongValue05(Long longValue05) {
+		this.longValue05 = longValue05;
+	}
+
+	public Date getDateTimeValue03() {
+		return dateTimeValue03;
+	}
+
+	public void setDateTimeValue03(Date dateTimeValue03) {
+		this.dateTimeValue03 = dateTimeValue03;
+	}
+
+	public Date getDateTimeValue04() {
+		return dateTimeValue04;
 	}
 
-	public void setIntegerValue01(Integer integerValue01) {
-		this.integerValue01 = integerValue01;
+	public void setDateTimeValue04(Date dateTimeValue04) {
+		this.dateTimeValue04 = dateTimeValue04;
 	}
 
-	public Integer getIntegerValue02() {
-		return integerValue02;
+	public Date getDateTimeValue05() {
+		return dateTimeValue05;
 	}
 
-	public void setIntegerValue02(Integer integerValue02) {
-		this.integerValue02 = integerValue02;
+	public void setDateTimeValue05(Date dateTimeValue05) {
+		this.dateTimeValue05 = dateTimeValue05;
 	}
 
 	public Boolean getBooleanValue01() {

+ 201 - 18
o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/Work.java

@@ -477,19 +477,40 @@ public class Work extends SliceJpaObject {
 	@CheckPersist(allowEmpty = true)
 	private String stringValue05;
 
-	public static final String integerValue01_FIELDNAME = "integerValue01";
-	@FieldDescribe("业务数据Integer值01.")
-	@Column(name = ColumnNamePrefix + integerValue01_FIELDNAME)
-	@Index(name = TABLE + IndexNameMiddle + integerValue01_FIELDNAME)
+	public static final String stringValue06_FIELDNAME = "stringValue06";
+	@FieldDescribe("业务数据String值06.")
+	@Column(length = length_255B, name = ColumnNamePrefix + stringValue06_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + stringValue06_FIELDNAME)
 	@CheckPersist(allowEmpty = true)
-	private Integer integerValue01;
+	private String stringValue06;
 
-	public static final String integerValue02_FIELDNAME = "integerValue02";
-	@FieldDescribe("业务数据Integer值02.")
-	@Column(name = ColumnNamePrefix + integerValue02_FIELDNAME)
-	@Index(name = TABLE + IndexNameMiddle + integerValue02_FIELDNAME)
+	public static final String stringValue07_FIELDNAME = "stringValue07";
+	@FieldDescribe("业务数据String值07.")
+	@Column(length = length_255B, name = ColumnNamePrefix + stringValue07_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + stringValue07_FIELDNAME)
 	@CheckPersist(allowEmpty = true)
-	private Integer integerValue02;
+	private String stringValue07;
+
+	public static final String stringValue08_FIELDNAME = "stringValue08";
+	@FieldDescribe("业务数据String值08.")
+	@Column(length = length_255B, name = ColumnNamePrefix + stringValue08_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + stringValue08_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private String stringValue08;
+
+	public static final String stringValue09_FIELDNAME = "stringValue09";
+	@FieldDescribe("业务数据String值09.")
+	@Column(length = length_255B, name = ColumnNamePrefix + stringValue09_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + stringValue09_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private String stringValue09;
+
+	public static final String stringValue10_FIELDNAME = "stringValue10";
+	@FieldDescribe("业务数据String值10.")
+	@Column(length = length_255B, name = ColumnNamePrefix + stringValue10_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + stringValue10_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private String stringValue10;
 
 	public static final String booleanValue01_FIELDNAME = "booleanValue01";
 	@FieldDescribe("业务数据Boolean值01.")
@@ -519,6 +540,27 @@ public class Work extends SliceJpaObject {
 	@CheckPersist(allowEmpty = true)
 	private Double doubleValue02;
 
+	public static final String doubleValue03_FIELDNAME = "doubleValue03";
+	@FieldDescribe("业务数据Double值03.")
+	@Column(name = ColumnNamePrefix + doubleValue03_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + doubleValue03_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Double doubleValue03;
+
+	public static final String doubleValue04_FIELDNAME = "doubleValue04";
+	@FieldDescribe("业务数据Double值04.")
+	@Column(name = ColumnNamePrefix + doubleValue04_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + doubleValue04_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Double doubleValue04;
+
+	public static final String doubleValue05_FIELDNAME = "doubleValue05";
+	@FieldDescribe("业务数据Double值05.")
+	@Column(name = ColumnNamePrefix + doubleValue05_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + doubleValue05_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Double doubleValue05;
+
 	public static final String longValue01_FIELDNAME = "longValue01";
 	@FieldDescribe("业务数据Long值01.")
 	@Column(name = ColumnNamePrefix + longValue01_FIELDNAME)
@@ -533,6 +575,27 @@ public class Work extends SliceJpaObject {
 	@CheckPersist(allowEmpty = true)
 	private Long longValue02;
 
+	public static final String longValue03_FIELDNAME = "longValue03";
+	@FieldDescribe("业务数据Long值03.")
+	@Column(name = ColumnNamePrefix + longValue03_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + longValue03_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Long longValue03;
+
+	public static final String longValue04_FIELDNAME = "longValue04";
+	@FieldDescribe("业务数据Long值04.")
+	@Column(name = ColumnNamePrefix + longValue04_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + longValue04_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Long longValue04;
+
+	public static final String longValue05_FIELDNAME = "longValue05";
+	@FieldDescribe("业务数据Long值05.")
+	@Column(name = ColumnNamePrefix + longValue05_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + longValue05_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Long longValue05;
+
 	public static final String dateTimeValue01_FIELDNAME = "dateTimeValue01";
 	@Temporal(TemporalType.TIMESTAMP)
 	@FieldDescribe("业务数据DateTime值01.")
@@ -549,6 +612,30 @@ public class Work extends SliceJpaObject {
 	@CheckPersist(allowEmpty = true)
 	private Date dateTimeValue02;
 
+	public static final String dateTimeValue03_FIELDNAME = "dateTimeValue03";
+	@Temporal(TemporalType.TIMESTAMP)
+	@FieldDescribe("业务数据DateTime值03.")
+	@Column(name = ColumnNamePrefix + dateTimeValue03_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + dateTimeValue03_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Date dateTimeValue03;
+
+	public static final String dateTimeValue04_FIELDNAME = "dateTimeValue04";
+	@Temporal(TemporalType.TIMESTAMP)
+	@FieldDescribe("业务数据DateTime值04.")
+	@Column(name = ColumnNamePrefix + dateTimeValue04_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + dateTimeValue04_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Date dateTimeValue04;
+
+	public static final String dateTimeValue05_FIELDNAME = "dateTimeValue05";
+	@Temporal(TemporalType.TIMESTAMP)
+	@FieldDescribe("业务数据DateTime值05.")
+	@Column(name = ColumnNamePrefix + dateTimeValue05_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + dateTimeValue05_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Date dateTimeValue05;
+
 	public static final String dateValue01_FIELDNAME = "dateValue01";
 	@Temporal(TemporalType.DATE)
 	@FieldDescribe("业务数据Date值01.")
@@ -957,20 +1044,116 @@ public class Work extends SliceJpaObject {
 		this.stringValue05 = stringValue05;
 	}
 
-	public Integer getIntegerValue01() {
-		return integerValue01;
+	public String getStringValue06() {
+		return stringValue06;
+	}
+
+	public void setStringValue06(String stringValue06) {
+		this.stringValue06 = stringValue06;
+	}
+
+	public String getStringValue07() {
+		return stringValue07;
+	}
+
+	public void setStringValue07(String stringValue07) {
+		this.stringValue07 = stringValue07;
+	}
+
+	public String getStringValue08() {
+		return stringValue08;
+	}
+
+	public void setStringValue08(String stringValue08) {
+		this.stringValue08 = stringValue08;
+	}
+
+	public String getStringValue09() {
+		return stringValue09;
+	}
+
+	public void setStringValue09(String stringValue09) {
+		this.stringValue09 = stringValue09;
+	}
+
+	public String getStringValue10() {
+		return stringValue10;
+	}
+
+	public void setStringValue10(String stringValue10) {
+		this.stringValue10 = stringValue10;
+	}
+
+	public Double getDoubleValue03() {
+		return doubleValue03;
+	}
+
+	public void setDoubleValue03(Double doubleValue03) {
+		this.doubleValue03 = doubleValue03;
+	}
+
+	public Double getDoubleValue04() {
+		return doubleValue04;
+	}
+
+	public void setDoubleValue04(Double doubleValue04) {
+		this.doubleValue04 = doubleValue04;
+	}
+
+	public Double getDoubleValue05() {
+		return doubleValue05;
+	}
+
+	public void setDoubleValue05(Double doubleValue05) {
+		this.doubleValue05 = doubleValue05;
+	}
+
+	public Long getLongValue03() {
+		return longValue03;
+	}
+
+	public void setLongValue03(Long longValue03) {
+		this.longValue03 = longValue03;
+	}
+
+	public Long getLongValue04() {
+		return longValue04;
+	}
+
+	public void setLongValue04(Long longValue04) {
+		this.longValue04 = longValue04;
+	}
+
+	public Long getLongValue05() {
+		return longValue05;
+	}
+
+	public void setLongValue05(Long longValue05) {
+		this.longValue05 = longValue05;
+	}
+
+	public Date getDateTimeValue03() {
+		return dateTimeValue03;
+	}
+
+	public void setDateTimeValue03(Date dateTimeValue03) {
+		this.dateTimeValue03 = dateTimeValue03;
+	}
+
+	public Date getDateTimeValue04() {
+		return dateTimeValue04;
 	}
 
-	public void setIntegerValue01(Integer integerValue01) {
-		this.integerValue01 = integerValue01;
+	public void setDateTimeValue04(Date dateTimeValue04) {
+		this.dateTimeValue04 = dateTimeValue04;
 	}
 
-	public Integer getIntegerValue02() {
-		return integerValue02;
+	public Date getDateTimeValue05() {
+		return dateTimeValue05;
 	}
 
-	public void setIntegerValue02(Integer integerValue02) {
-		this.integerValue02 = integerValue02;
+	public void setDateTimeValue05(Date dateTimeValue05) {
+		this.dateTimeValue05 = dateTimeValue05;
 	}
 
 	public Boolean getBooleanValue01() {

+ 205 - 22
o2server/x_processplatform_core_entity/src/main/java/com/x/processplatform/core/entity/content/WorkCompleted.java

@@ -378,19 +378,40 @@ public class WorkCompleted extends SliceJpaObject {
 	@CheckPersist(allowEmpty = true)
 	private String stringValue05;
 
-	public static final String integerValue01_FIELDNAME = "integerValue01";
-	@FieldDescribe("业务数据Integer值01.")
-	@Column(name = ColumnNamePrefix + integerValue01_FIELDNAME)
-	@Index(name = TABLE + IndexNameMiddle + integerValue01_FIELDNAME)
+	public static final String stringValue06_FIELDNAME = "stringValue06";
+	@FieldDescribe("业务数据String值06.")
+	@Column(length = length_255B, name = ColumnNamePrefix + stringValue06_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + stringValue06_FIELDNAME)
 	@CheckPersist(allowEmpty = true)
-	private Integer integerValue01;
+	private String stringValue06;
 
-	public static final String integerValue02_FIELDNAME = "integerValue02";
-	@FieldDescribe("业务数据Integer值02.")
-	@Column(name = ColumnNamePrefix + integerValue02_FIELDNAME)
-	@Index(name = TABLE + IndexNameMiddle + integerValue02_FIELDNAME)
+	public static final String stringValue07_FIELDNAME = "stringValue07";
+	@FieldDescribe("业务数据String值07.")
+	@Column(length = length_255B, name = ColumnNamePrefix + stringValue07_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + stringValue07_FIELDNAME)
 	@CheckPersist(allowEmpty = true)
-	private Integer integerValue02;
+	private String stringValue07;
+
+	public static final String stringValue08_FIELDNAME = "stringValue08";
+	@FieldDescribe("业务数据String值08.")
+	@Column(length = length_255B, name = ColumnNamePrefix + stringValue08_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + stringValue08_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private String stringValue08;
+
+	public static final String stringValue09_FIELDNAME = "stringValue09";
+	@FieldDescribe("业务数据String值09.")
+	@Column(length = length_255B, name = ColumnNamePrefix + stringValue09_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + stringValue09_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private String stringValue09;
+
+	public static final String stringValue10_FIELDNAME = "stringValue10";
+	@FieldDescribe("业务数据String值10.")
+	@Column(length = length_255B, name = ColumnNamePrefix + stringValue10_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + stringValue10_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private String stringValue10;
 
 	public static final String booleanValue01_FIELDNAME = "booleanValue01";
 	@FieldDescribe("业务数据Boolean值01.")
@@ -420,6 +441,27 @@ public class WorkCompleted extends SliceJpaObject {
 	@CheckPersist(allowEmpty = true)
 	private Double doubleValue02;
 
+	public static final String doubleValue03_FIELDNAME = "doubleValue03";
+	@FieldDescribe("业务数据Double值03.")
+	@Column(name = ColumnNamePrefix + doubleValue03_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + doubleValue03_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Double doubleValue03;
+
+	public static final String doubleValue04_FIELDNAME = "doubleValue04";
+	@FieldDescribe("业务数据Double值04.")
+	@Column(name = ColumnNamePrefix + doubleValue04_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + doubleValue04_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Double doubleValue04;
+
+	public static final String doubleValue05_FIELDNAME = "doubleValue05";
+	@FieldDescribe("业务数据Double值05.")
+	@Column(name = ColumnNamePrefix + doubleValue05_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + doubleValue05_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Double doubleValue05;
+
 	public static final String longValue01_FIELDNAME = "longValue01";
 	@FieldDescribe("业务数据Long值01.")
 	@Column(name = ColumnNamePrefix + longValue01_FIELDNAME)
@@ -434,6 +476,27 @@ public class WorkCompleted extends SliceJpaObject {
 	@CheckPersist(allowEmpty = true)
 	private Long longValue02;
 
+	public static final String longValue03_FIELDNAME = "longValue03";
+	@FieldDescribe("业务数据Long值03.")
+	@Column(name = ColumnNamePrefix + longValue03_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + longValue03_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Long longValue03;
+
+	public static final String longValue04_FIELDNAME = "longValue04";
+	@FieldDescribe("业务数据Long值04.")
+	@Column(name = ColumnNamePrefix + longValue04_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + longValue04_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Long longValue04;
+
+	public static final String longValue05_FIELDNAME = "longValue05";
+	@FieldDescribe("业务数据Long值05.")
+	@Column(name = ColumnNamePrefix + longValue05_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + longValue05_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Long longValue05;
+
 	public static final String dateTimeValue01_FIELDNAME = "dateTimeValue01";
 	@Temporal(TemporalType.TIMESTAMP)
 	@FieldDescribe("业务数据DateTime值01.")
@@ -450,6 +513,30 @@ public class WorkCompleted extends SliceJpaObject {
 	@CheckPersist(allowEmpty = true)
 	private Date dateTimeValue02;
 
+	public static final String dateTimeValue03_FIELDNAME = "dateTimeValue03";
+	@Temporal(TemporalType.TIMESTAMP)
+	@FieldDescribe("业务数据DateTime值03.")
+	@Column(name = ColumnNamePrefix + dateTimeValue03_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + dateTimeValue03_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Date dateTimeValue03;
+
+	public static final String dateTimeValue04_FIELDNAME = "dateTimeValue04";
+	@Temporal(TemporalType.TIMESTAMP)
+	@FieldDescribe("业务数据DateTime值04.")
+	@Column(name = ColumnNamePrefix + dateTimeValue04_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + dateTimeValue04_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Date dateTimeValue04;
+
+	public static final String dateTimeValue05_FIELDNAME = "dateTimeValue05";
+	@Temporal(TemporalType.TIMESTAMP)
+	@FieldDescribe("业务数据DateTime值05.")
+	@Column(name = ColumnNamePrefix + dateTimeValue05_FIELDNAME)
+	@Index(name = TABLE + IndexNameMiddle + dateTimeValue05_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private Date dateTimeValue05;
+
 	public static final String dateValue01_FIELDNAME = "dateValue01";
 	@Temporal(TemporalType.DATE)
 	@FieldDescribe("业务数据Date值01.")
@@ -730,14 +817,6 @@ public class WorkCompleted extends SliceJpaObject {
 		this.booleanValue01 = booleanValue01;
 	}
 
-	public Integer getIntegerValue01() {
-		return integerValue01;
-	}
-
-	public void setIntegerValue01(Integer integerValue01) {
-		this.integerValue01 = integerValue01;
-	}
-
 	public Double getDoubleValue01() {
 		return doubleValue01;
 	}
@@ -778,12 +857,116 @@ public class WorkCompleted extends SliceJpaObject {
 		this.timeValue01 = timeValue01;
 	}
 
-	public Integer getIntegerValue02() {
-		return integerValue02;
+	public String getStringValue06() {
+		return stringValue06;
+	}
+
+	public void setStringValue06(String stringValue06) {
+		this.stringValue06 = stringValue06;
+	}
+
+	public String getStringValue07() {
+		return stringValue07;
+	}
+
+	public void setStringValue07(String stringValue07) {
+		this.stringValue07 = stringValue07;
+	}
+
+	public String getStringValue08() {
+		return stringValue08;
+	}
+
+	public void setStringValue08(String stringValue08) {
+		this.stringValue08 = stringValue08;
+	}
+
+	public String getStringValue09() {
+		return stringValue09;
+	}
+
+	public void setStringValue09(String stringValue09) {
+		this.stringValue09 = stringValue09;
+	}
+
+	public String getStringValue10() {
+		return stringValue10;
+	}
+
+	public void setStringValue10(String stringValue10) {
+		this.stringValue10 = stringValue10;
+	}
+
+	public Double getDoubleValue03() {
+		return doubleValue03;
+	}
+
+	public void setDoubleValue03(Double doubleValue03) {
+		this.doubleValue03 = doubleValue03;
+	}
+
+	public Double getDoubleValue04() {
+		return doubleValue04;
+	}
+
+	public void setDoubleValue04(Double doubleValue04) {
+		this.doubleValue04 = doubleValue04;
+	}
+
+	public Double getDoubleValue05() {
+		return doubleValue05;
+	}
+
+	public void setDoubleValue05(Double doubleValue05) {
+		this.doubleValue05 = doubleValue05;
+	}
+
+	public Long getLongValue03() {
+		return longValue03;
+	}
+
+	public void setLongValue03(Long longValue03) {
+		this.longValue03 = longValue03;
+	}
+
+	public Long getLongValue04() {
+		return longValue04;
+	}
+
+	public void setLongValue04(Long longValue04) {
+		this.longValue04 = longValue04;
+	}
+
+	public Long getLongValue05() {
+		return longValue05;
+	}
+
+	public void setLongValue05(Long longValue05) {
+		this.longValue05 = longValue05;
+	}
+
+	public Date getDateTimeValue03() {
+		return dateTimeValue03;
+	}
+
+	public void setDateTimeValue03(Date dateTimeValue03) {
+		this.dateTimeValue03 = dateTimeValue03;
+	}
+
+	public Date getDateTimeValue04() {
+		return dateTimeValue04;
+	}
+
+	public void setDateTimeValue04(Date dateTimeValue04) {
+		this.dateTimeValue04 = dateTimeValue04;
+	}
+
+	public Date getDateTimeValue05() {
+		return dateTimeValue05;
 	}
 
-	public void setIntegerValue02(Integer integerValue02) {
-		this.integerValue02 = integerValue02;
+	public void setDateTimeValue05(Date dateTimeValue05) {
+		this.dateTimeValue05 = dateTimeValue05;
 	}
 
 	public Boolean getBooleanValue02() {

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

@@ -63,11 +63,6 @@ public class Invoke extends Activity {
 
 	/* 更新运行方法 */
 
-	// public static String[] FLA GS = new String[] { "id", "alias" };
-
-	/* flag标志位 */
-	/* Entity 默认字段结束 */
-
 	@FieldDescribe("分组")
 	@CheckPersist(allowEmpty = true)
 	@Column(length = JpaObject.length_255B, name = ColumnNamePrefix + group_FIELDNAME)
@@ -436,6 +431,22 @@ public class Invoke extends Activity {
 	@CheckPersist(allowEmpty = true)
 	private String jaxrsBodyScriptText;
 
+	public static final String jaxrsHeadScript_FIELDNAME = "jaxrsHeadScript";
+	@IdReference(Script.class)
+	@FieldDescribe("jaxrs请求头脚本.")
+	@Column(length = AbstractPersistenceProperties.processPlatform_name_length, name = ColumnNamePrefix
+			+ jaxrsHeadScript_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private String jaxrsHeadScript;
+
+	public static final String jaxrsHeadScriptText_FIELDNAME = "jaxrsHeadScriptText";
+	@FieldDescribe("jaxrs请求头脚本文本.")
+	@Lob
+	@Basic(fetch = FetchType.EAGER)
+	@Column(length = JpaObject.length_1M, name = ColumnNamePrefix + jaxrsHeadScriptText_FIELDNAME)
+	@CheckPersist(allowEmpty = true)
+	private String jaxrsHeadScriptText;
+
 	public static final String jaxrsContentType_FIELDNAME = "jaxrsContentType";
 	@FieldDescribe("发送请求的类型")
 	@Column(length = JpaObject.length_128B, name = ColumnNamePrefix + jaxrsContentType_FIELDNAME)
@@ -946,4 +957,20 @@ public class Invoke extends Activity {
 		this.opinionGroup = opinionGroup;
 	}
 
+	public String getJaxrsHeadScript() {
+		return jaxrsHeadScript;
+	}
+
+	public void setJaxrsHeadScript(String jaxrsHeadScript) {
+		this.jaxrsHeadScript = jaxrsHeadScript;
+	}
+
+	public String getJaxrsHeadScriptText() {
+		return jaxrsHeadScriptText;
+	}
+
+	public void setJaxrsHeadScriptText(String jaxrsHeadScriptText) {
+		this.jaxrsHeadScriptText = jaxrsHeadScriptText;
+	}
+
 }

+ 10 - 0
o2server/x_processplatform_core_entity/src/test/java/com/x/processplatform/core/entity/content/test/TestClient.java

@@ -3,6 +3,7 @@ package com.x.processplatform.core.entity.content.test;
 import java.io.File;
 
 import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.junit.Test;
 
 import com.x.base.core.project.gson.XGsonBuilder;
@@ -37,4 +38,13 @@ public class TestClient {
 
 	}
 
+	@Test
+	public void test2() {
+		String abc = "abcefg";
+		System.out.println(StringUtils.substring(abc, 0));
+		System.out.println(StringUtils.substring(abc, 0,2));
+		System.out.println(StringUtils.substring(abc, 2,4));
+		
+	}
+	
 }

+ 12 - 0
o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/ExceptionInitialScript.java

@@ -0,0 +1,12 @@
+package com.x.processplatform.service.processing;
+
+import com.x.base.core.project.exception.PromptException;
+
+class ExceptionInitialScript extends PromptException {
+
+	private static final long serialVersionUID = -2875973555673919197L;
+
+	ExceptionInitialScript(Exception e, String text) {
+		super(e, "初始化脚本执行错误, script:{}.", text);
+	}
+}

+ 5 - 1
o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/ScriptHelper.java

@@ -53,7 +53,11 @@ public class ScriptHelper {
 		for (Entry<String, Object> entry : map.entrySet()) {
 			engine.put(entry.getKey(), entry.getValue());
 		}
-		engine.eval(initialScriptText);
+		try {
+			engine.eval(initialScriptText);
+		} catch (Exception e) {
+			throw new ExceptionInitialScript(e, initialScriptText);
+		}
 	}
 
 	public Object eval(String scriptText) throws Exception {

+ 21 - 0
o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/processor/invoke/InvokeExecutor.java

@@ -2,6 +2,7 @@ package com.x.processplatform.service.processing.processor.invoke;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map.Entry;
 
 import org.apache.commons.lang3.StringUtils;
 
@@ -57,6 +58,11 @@ public class InvokeExecutor {
 		} else {
 			List<NameValuePair> heads = new ArrayList<>();
 			heads.add(new NameValuePair(HttpConnection.Content_Type, jaxrsObject.getContentType()));
+			if (null != jaxrsObject.getHead()) {
+				for (Entry<String, String> entry : jaxrsObject.getHead().entrySet()) {
+					heads.add(new NameValuePair(entry.getKey(), entry.getValue()));
+				}
+			}
 			return HttpConnection.postAsString(jaxrsObject.getAddress(), heads, jaxrsObject.getBody());
 		}
 	}
@@ -68,6 +74,11 @@ public class InvokeExecutor {
 		} else {
 			List<NameValuePair> heads = new ArrayList<>();
 			heads.add(new NameValuePair(HttpConnection.Content_Type, jaxrsObject.getContentType()));
+			if (null != jaxrsObject.getHead()) {
+				for (Entry<String, String> entry : jaxrsObject.getHead().entrySet()) {
+					heads.add(new NameValuePair(entry.getKey(), entry.getValue()));
+				}
+			}
 			return HttpConnection.postAsString(jaxrsObject.getAddress(), heads, jaxrsObject.getBody());
 		}
 	}
@@ -78,6 +89,11 @@ public class InvokeExecutor {
 		} else {
 			List<NameValuePair> heads = new ArrayList<>();
 			heads.add(new NameValuePair(HttpConnection.Content_Type, jaxrsObject.getContentType()));
+			if (null != jaxrsObject.getHead()) {
+				for (Entry<String, String> entry : jaxrsObject.getHead().entrySet()) {
+					heads.add(new NameValuePair(entry.getKey(), entry.getValue()));
+				}
+			}
 			return HttpConnection.getAsString(jaxrsObject.getAddress(), heads);
 		}
 	}
@@ -88,6 +104,11 @@ public class InvokeExecutor {
 		} else {
 			List<NameValuePair> heads = new ArrayList<>();
 			heads.add(new NameValuePair(HttpConnection.Content_Type, jaxrsObject.getContentType()));
+			if (null != jaxrsObject.getHead()) {
+				for (Entry<String, String> entry : jaxrsObject.getHead().entrySet()) {
+					heads.add(new NameValuePair(entry.getKey(), entry.getValue()));
+				}
+			}
 			return HttpConnection.deleteAsString(jaxrsObject.getAddress(), heads);
 		}
 	}

+ 15 - 6
o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/processor/invoke/InvokeProcessor.java

@@ -2,6 +2,7 @@ package com.x.processplatform.service.processing.processor.invoke;
 
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
@@ -218,11 +219,11 @@ public class InvokeProcessor extends AbstractInvokeProcessor {
 		String result = "";
 		String address = this.jaxrsUrl(aeiObjects, invoke);
 		String body = "";
-		JaxrsObject jaxrsObject = null;
+		JaxrsObject jaxrsObject = new JaxrsObject();
+		jaxrsObject.setHead(this.jaxrsEvalHead(aeiObjects, invoke));
 		switch (StringUtils.lowerCase(invoke.getJaxrsMethod())) {
 		case "post":
 			body = this.jaxrsEvalBody(aeiObjects, invoke);
-			jaxrsObject = new JaxrsObject();
 			jaxrsObject.setMethod("post");
 			jaxrsObject.setInternal(false);
 			jaxrsObject.setAddress(address);
@@ -237,7 +238,6 @@ public class InvokeProcessor extends AbstractInvokeProcessor {
 			break;
 		case "put":
 			body = this.jaxrsEvalBody(aeiObjects, invoke);
-			jaxrsObject = new JaxrsObject();
 			jaxrsObject.setMethod("put");
 			jaxrsObject.setInternal(false);
 			jaxrsObject.setAddress(address);
@@ -251,7 +251,6 @@ public class InvokeProcessor extends AbstractInvokeProcessor {
 			}
 			break;
 		case "get":
-			jaxrsObject = new JaxrsObject();
 			jaxrsObject.setMethod("get");
 			jaxrsObject.setInternal(false);
 			jaxrsObject.setAddress(address);
@@ -264,7 +263,6 @@ public class InvokeProcessor extends AbstractInvokeProcessor {
 			}
 			break;
 		case "delete":
-			jaxrsObject = new JaxrsObject();
 			jaxrsObject.setMethod("delete");
 			jaxrsObject.setInternal(false);
 			jaxrsObject.setAddress(address);
@@ -285,7 +283,7 @@ public class InvokeProcessor extends AbstractInvokeProcessor {
 		case "trace":
 			break;
 		default:
-			throw new Exception("unknown http method " + invoke.getJaxrsMethod());
+			throw new Exception("unknown http method: " + invoke.getJaxrsMethod());
 		}
 		if (!BooleanUtils.isTrue(invoke.getAsync())) {
 			WrapScriptObject jaxrsResponse = new WrapScriptObject();
@@ -328,6 +326,17 @@ public class InvokeProcessor extends AbstractInvokeProcessor {
 		return jaxrsBody.get();
 	}
 
+	private Map<String, String> jaxrsEvalHead(AeiObjects aeiObjects, Invoke invoke) throws Exception {
+		Map<String, String> map = new LinkedHashMap<>();
+		if ((StringUtils.isNotEmpty(invoke.getJaxrsHeadScript()))
+				|| (StringUtils.isNotEmpty(invoke.getJaxrsHeadScriptText()))) {
+			ScriptHelper scriptHelper = ScriptHelperFactory.create(aeiObjects, new BindingPair("jaxrsHead", map));
+			scriptHelper.eval(aeiObjects.getWork().getApplication(), invoke.getJaxrsHeadScript(),
+					invoke.getJaxrsHeadScriptText());
+		}
+		return map;
+	}
+
 	public class JaxrsBody {
 
 		private String value;

+ 12 - 0
o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/processor/invoke/JaxrsObject.java

@@ -1,5 +1,7 @@
 package com.x.processplatform.service.processing.processor.invoke;
 
+import java.util.Map;
+
 import com.x.base.core.project.gson.GsonPropertyObject;
 
 public class JaxrsObject extends GsonPropertyObject {
@@ -12,6 +14,16 @@ public class JaxrsObject extends GsonPropertyObject {
 
 	private String contentType;
 
+	private Map<String, String> head;
+
+	public Map<String, String> getHead() {
+		return head;
+	}
+
+	public void setHead(Map<String, String> head) {
+		this.head = head;
+	}
+
 	private Boolean internal;
 
 	public String getMethod() {

+ 0 - 12
o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/processor/manual/ManualProcessor.java

@@ -608,18 +608,6 @@ public class ManualProcessor extends AbstractManualProcessor {
 			this.mergeHint(aeiObjects, aeiObjects.getWork(), other);
 			this.mergeAttachment(aeiObjects, aeiObjects.getWork(), other);
 			this.mergeWorkLog(aeiObjects, aeiObjects.getWork(), other);
-//			try {
-//				aeiObjects.getWorkLogs().stream().filter(
-//						p -> StringUtils.equals(p.getFromActivityToken(), aeiObjects.getWork().getActivityToken()))
-//						.forEach(obj -> {
-//							System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!###########");
-//							System.out.println(obj);
-//							System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!###########");
-//							aeiObjects.getDeleteWorkLogs().add(obj);
-//						});
-//			} catch (Exception e) {
-//				logger.error(e);
-//			}
 			aeiObjects.getUpdateWorks().add(other);
 			aeiObjects.getDeleteWorks().add(aeiObjects.getWork());
 			return other;

+ 64 - 26
o2server/x_processplatform_service_processing/src/main/java/com/x/processplatform/service/processing/processor/merge/MergeProcessor.java

@@ -4,12 +4,14 @@ import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.List;
 
+import org.apache.commons.collections4.ListUtils;
 import org.apache.commons.lang3.BooleanUtils;
 import org.apache.commons.lang3.StringUtils;
 
 import com.x.base.core.container.EntityManagerContainer;
 import com.x.base.core.project.logger.Logger;
 import com.x.base.core.project.logger.LoggerFactory;
+import com.x.base.core.project.tools.ListTools;
 import com.x.processplatform.core.entity.content.Work;
 import com.x.processplatform.core.entity.element.Merge;
 import com.x.processplatform.core.entity.element.Route;
@@ -40,8 +42,47 @@ public class MergeProcessor extends AbstractMergeProcessor {
 			results.add(aeiObjects.getWork());
 			return results;
 		}
-		String join = StringUtils.join(aeiObjects.getWork().getSplitTokenList(), ",");
+		Work other = findWorkMergeTo(aeiObjects);
+
+		/* 完全找不到合并的文档,唯一一份 */
+		if (null != other) {
+			aeiObjects.getUpdateWorks().add(other);
+			aeiObjects.getDeleteWorks().add(aeiObjects.getWork());
+			this.mergeTaskCompleted(aeiObjects, aeiObjects.getWork(), other);
+			this.mergeRead(aeiObjects, aeiObjects.getWork(), other);
+			this.mergeReadCompleted(aeiObjects, aeiObjects.getWork(), other);
+			this.mergeReview(aeiObjects, aeiObjects.getWork(), other);
+			this.mergeHint(aeiObjects, aeiObjects.getWork(), other);
+			this.mergeAttachment(aeiObjects, aeiObjects.getWork(), other);
+			this.mergeWorkLog(aeiObjects, aeiObjects.getWork(), other);
+			aeiObjects.getWorkLogs().stream()
+					.filter(p -> StringUtils.equals(p.getFromActivityToken(), aeiObjects.getWork().getActivityToken()))
+					.forEach(obj -> {
+						aeiObjects.getDeleteWorkLogs().add(obj);
+					});
+		} else {
+			Work branch = this.findWorkBranch(aeiObjects);
+			if (null != branch) {
+				aeiObjects.getWork().setSplitting(true);
+				aeiObjects.getWork().setSplitTokenList(ListUtils.longestCommonSubsequence(
+						aeiObjects.getWork().getSplitTokenList(), branch.getSplitTokenList()));
+				aeiObjects.getWork().setSplitToken(aeiObjects.getWork().getSplitTokenList()
+						.get(aeiObjects.getWork().getSplitTokenList().size() - 1));
+				aeiObjects.getWork().setSplitValue("");
+				results.add(aeiObjects.getWork());
+			} else {
+				aeiObjects.getWork().setSplitting(false);
+				aeiObjects.getWork().setSplitTokenList(new ArrayList<String>());
+				aeiObjects.getWork().setSplitToken("");
+				aeiObjects.getWork().setSplitValue("");
+				results.add(aeiObjects.getWork());
+			}
+		}
+		return results;
+	}
 
+	private Work findWorkMergeTo(AeiObjects aeiObjects) throws Exception {
+		String join = StringUtils.join(aeiObjects.getWork().getSplitTokenList(), ",");
 		/* 查找同级 */
 		Work other = aeiObjects.getWorks().stream().filter(o -> {
 			if (BooleanUtils.isTrue(o.getSplitting()) && (o != aeiObjects.getWork())) {
@@ -54,11 +95,11 @@ public class MergeProcessor extends AbstractMergeProcessor {
 			return o1.getCreateTime().compareTo(o2.getCreateTime());
 		}).findFirst().orElse(null);
 
-		/* 找不到同级找上层 */
+		/* 找不到同级那么开始早更深层次的文档 */
 		if (null == other) {
 			other = aeiObjects.getWorks().stream().filter(o -> {
 				if (BooleanUtils.isTrue(o.getSplitting()) && (o != aeiObjects.getWork())) {
-					if (StringUtils.startsWith(join, StringUtils.join(o.getSplitTokenList(), ","))) {
+					if (StringUtils.startsWith(StringUtils.join(o.getSplitTokenList(), ","), join)) {
 						return true;
 					}
 				}
@@ -71,31 +112,28 @@ public class MergeProcessor extends AbstractMergeProcessor {
 				return compare;
 			}).findFirst().orElse(null);
 		}
+		return other;
+	}
 
-		/* 完全找不到合并的文档,唯一一份 */
-		if (null == other) {
-			aeiObjects.getWork().setSplitting(false);
-			aeiObjects.getWork().setSplitToken("");
-			aeiObjects.getWork().setSplitTokenList(new ArrayList<String>());
-			aeiObjects.getWork().setSplitValue("");
-			results.add(aeiObjects.getWork());
-		} else {
-			aeiObjects.getUpdateWorks().add(other);
-			aeiObjects.getDeleteWorks().add(aeiObjects.getWork());
-			this.mergeTaskCompleted(aeiObjects, aeiObjects.getWork(), other);
-			this.mergeRead(aeiObjects, aeiObjects.getWork(), other);
-			this.mergeReadCompleted(aeiObjects, aeiObjects.getWork(), other);
-			this.mergeReview(aeiObjects, aeiObjects.getWork(), other);
-			this.mergeHint(aeiObjects, aeiObjects.getWork(), other);
-			this.mergeAttachment(aeiObjects, aeiObjects.getWork(), other);
-			this.mergeWorkLog(aeiObjects, aeiObjects.getWork(), other);
-			aeiObjects.getWorkLogs().stream()
-					.filter(p -> StringUtils.equals(p.getFromActivityToken(), aeiObjects.getWork().getActivityToken()))
-					.forEach(obj -> {
-						aeiObjects.getDeleteWorkLogs().add(obj);
-					});
+	private Work findWorkBranch(AeiObjects aeiObjects) throws Exception {
+		Work branch = null;
+		String join = StringUtils.join(aeiObjects.getWork().getSplitTokenList(), ",");
+		while (StringUtils.indexOf(join, ",") > 0) {
+			join = StringUtils.substringBeforeLast(join, ",");
+			final String part = join;
+			branch = aeiObjects.getWorks().stream().filter(o -> {
+				if (BooleanUtils.isTrue(o.getSplitting()) && (o != aeiObjects.getWork())) {
+					if (StringUtils.startsWithIgnoreCase(StringUtils.join(o.getSplitTokenList(), ","), part)) {
+						return true;
+					}
+				}
+				return false;
+			}).findFirst().orElse(null);
+			if (null != branch) {
+				return branch;
+			}
 		}
-		return results;
+		return null;
 	}
 
 	private void mergeTaskCompleted(AeiObjects aeiObjects, Work work, Work oldest) {

+ 7 - 0
o2server/x_processplatform_service_processing/src/test/java/com/x/processplatform/core/processing/test/TestClient.java

@@ -60,5 +60,12 @@ public class TestClient {
 		System.out.println(list);
 
 	}
+	
+	@Test
+	public void test3() {
+		String aa="dddddddddd,aaa,bbb";
+//System.out.println(StringUtils.sub(aa, "@"));
+		
+	}
 
 }

+ 0 - 54
o2server/x_program_center/src/main/java/com/x/program/center/schedule/CleanupScheduleLog.java

@@ -32,8 +32,6 @@ public class CleanupScheduleLog implements Job {
 		try {
 			try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
 				Business business = new Business(emc);
-//				this.clearScheduleLocal(business);
-//				this.clearSchedule(business);
 				this.clearScheduleLog(business);
 			}
 		} catch (Exception e) {
@@ -43,58 +41,6 @@ public class CleanupScheduleLog implements Job {
 
 	}
 
-//	private void clearScheduleLocal(Business business) throws Exception {
-//		List<ScheduleLocal> list = new ArrayList<>();
-//		do {
-//			EntityManagerContainer emc = business.entityManagerContainer();
-//			EntityManager em = emc.get(ScheduleLocal.class);
-//			CriteriaBuilder cb = em.getCriteriaBuilder();
-//			CriteriaQuery<ScheduleLocal> cq = cb.createQuery(ScheduleLocal.class);
-//			Root<ScheduleLocal> root = cq.from(ScheduleLocal.class);
-//			Calendar threshold = Calendar.getInstance();
-//			threshold.add(Calendar.SECOND, -(30 * 3));
-//			Predicate p = cb.lessThan(root.get(ScheduleLocal_.reportTime), threshold.getTime());
-//			list = em.createQuery(cq.select(root).where(p)).setMaxResults(10000).getResultList();
-//			if (!list.isEmpty()) {
-//				emc.beginTransaction(ScheduleLocal.class);
-//				list.stream().forEach(o -> {
-//					try {
-//						emc.remove(o, CheckRemoveType.all);
-//					} catch (Exception e) {
-//						e.printStackTrace();
-//					}
-//				});
-//				emc.commit();
-//			}
-//		} while (!list.isEmpty());
-//	}
-
-//	private void clearSchedule(Business business) throws Exception {
-//		List<Schedule> list = new ArrayList<>();
-//		do {
-//			EntityManagerContainer emc = business.entityManagerContainer();
-//			EntityManager em = emc.get(Schedule.class);
-//			CriteriaBuilder cb = em.getCriteriaBuilder();
-//			CriteriaQuery<Schedule> cq = cb.createQuery(Schedule.class);
-//			Root<Schedule> root = cq.from(Schedule.class);
-//			Calendar threshold = Calendar.getInstance();
-//			threshold.add(Calendar.SECOND, -(30 * 3));
-//			Predicate p = cb.lessThan(root.get(Schedule_.reportTime), threshold.getTime());
-//			list = em.createQuery(cq.select(root).where(p)).setMaxResults(10000).getResultList();
-//			if (!list.isEmpty()) {
-//				emc.beginTransaction(Schedule.class);
-//				list.stream().forEach(o -> {
-//					try {
-//						emc.remove(o, CheckRemoveType.all);
-//					} catch (Exception e) {
-//						e.printStackTrace();
-//					}
-//				});
-//				emc.commit();
-//			}
-//		} while (!list.isEmpty());
-//	}
-
 	private void clearScheduleLog(Business business) throws Exception {
 		List<ScheduleLog> list = new ArrayList<>();
 		do {

+ 1 - 1
o2server/x_program_center/src/main/java/com/x/program/center/schedule/FireSchedule.java

@@ -10,6 +10,7 @@ import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
 
+import org.apache.commons.lang3.StringUtils;
 import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
 
@@ -79,7 +80,6 @@ public class FireSchedule extends BaseAction {
 
 	private Date getLastStartTime(ScheduleRequest request) throws Exception {
 		Date lastStartTime = request.getLastStartTime();
-		// Date lastStartTime = null;
 		if (null == lastStartTime) {
 			try (EntityManagerContainer emc = EntityManagerContainerFactory.instance().create()) {
 				EntityManager em = emc.get(ScheduleLog.class);