diff --git a/hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/service/imp/WorkFlowFormServiceImpl.java b/hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/service/imp/WorkFlowFormServiceImpl.java index 003fd0c43..810560008 100644 --- a/hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/service/imp/WorkFlowFormServiceImpl.java +++ b/hsweb-system/hsweb-system-workflow/hsweb-system-workflow-local/src/main/java/org/hswebframework/web/workflow/service/imp/WorkFlowFormServiceImpl.java @@ -2,7 +2,16 @@ package org.hswebframework.web.workflow.service.imp; import org.activiti.engine.runtime.ProcessInstance; import org.activiti.engine.task.Task; +import org.hswebframework.ezorm.rdb.RDBTable; +import org.hswebframework.ezorm.rdb.meta.RDBColumnMetaData; +import org.hswebframework.ezorm.rdb.meta.RDBTableMetaData; +import org.hswebframework.ezorm.rdb.meta.converter.DateTimeConverter; +import org.hswebframework.ezorm.rdb.render.dialect.Dialect; +import org.hswebframework.web.authorization.Authentication; import org.hswebframework.web.service.form.DynamicFormOperationService; +import org.hswebframework.web.service.form.initialize.ColumnInitializeContext; +import org.hswebframework.web.service.form.initialize.DynamicFormInitializeCustomer; +import org.hswebframework.web.service.form.initialize.TableInitializeContext; import org.hswebframework.web.workflow.service.config.ProcessConfigurationService; import org.hswebframework.web.workflow.service.WorkFlowFormService; import org.hswebframework.web.workflow.service.config.ActivityConfiguration; @@ -12,6 +21,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; +import java.sql.JDBCType; +import java.util.Date; import java.util.Map; /** @@ -19,7 +30,7 @@ import java.util.Map; * @since 3.0.0-RC */ @Service -public class WorkFlowFormServiceImpl extends AbstractFlowableService implements WorkFlowFormService { +public class WorkFlowFormServiceImpl extends AbstractFlowableService implements WorkFlowFormService, DynamicFormInitializeCustomer { @Autowired private ProcessConfigurationService processConfigurationService; @@ -75,8 +86,9 @@ public class WorkFlowFormServiceImpl extends AbstractFlowableService implements acceptStartProcessFormData(instance, formData); - formData.put("taskId", task.getId()); - formData.put("taskDefineKey", task.getTaskDefinitionKey()); + formData.put("processTaskId", task.getId()); + formData.put("processTaskDefineKey", task.getTaskDefinitionKey()); + formData.put("processTaskName",task.getName()); } @@ -87,8 +99,176 @@ public class WorkFlowFormServiceImpl extends AbstractFlowableService implements formData.put("processDefineId", instance.getProcessDefinitionId()); formData.put("processDefineKey", instance.getProcessDefinitionKey()); formData.put("processDefineName", instance.getProcessDefinitionName()); - formData.put("processDefineName", instance.getProcessDefinitionVersion()); + formData.put("processDefineVersion", instance.getProcessDefinitionVersion()); formData.put("processInstanceId", instance.getProcessInstanceId()); } + + @Override + public void customTableSetting(TableInitializeContext context) { + RDBTableMetaData table = context.getTable(); + Dialect dialect = context.getDatabase().getMeta().getDialect(); + + //----------taskId-------------- + { + RDBColumnMetaData processTaskId = new RDBColumnMetaData(); + processTaskId.setJavaType(String.class); + processTaskId.setJdbcType(JDBCType.VARCHAR); + processTaskId.setLength(32); + processTaskId.setName("proc_task_id"); + processTaskId.setAlias("processTaskId"); + processTaskId.setDataType(dialect.buildDataType(processTaskId)); + processTaskId.setComment("流程任务ID"); + table.addColumn(processTaskId); + } + + //----------taskDefineKey-------------- + { + RDBColumnMetaData taskDefineKey = new RDBColumnMetaData(); + taskDefineKey.setJavaType(String.class); + taskDefineKey.setJdbcType(JDBCType.VARCHAR); + taskDefineKey.setLength(128); + taskDefineKey.setName("proc_task_key"); + taskDefineKey.setAlias("processTaskDefineKey"); + taskDefineKey.setDataType(dialect.buildDataType(taskDefineKey)); + taskDefineKey.setComment("流程任务定义KEY"); + table.addColumn(taskDefineKey); + } + + //----------taskName-------------- + { + RDBColumnMetaData processTaskName = new RDBColumnMetaData(); + processTaskName.setJavaType(String.class); + processTaskName.setJdbcType(JDBCType.VARCHAR); + processTaskName.setLength(128); + processTaskName.setName("proc_task_name"); + processTaskName.setAlias("processTaskName"); + processTaskName.setDataType(dialect.buildDataType(processTaskName)); + processTaskName.setComment("流程任务定义名称"); + table.addColumn(processTaskName); + } + + //----------processDefineId-------------- + { + RDBColumnMetaData processDefineId = new RDBColumnMetaData(); + processDefineId.setJavaType(String.class); + processDefineId.setJdbcType(JDBCType.VARCHAR); + processDefineId.setLength(32); + processDefineId.setName("proc_def_id"); + processDefineId.setAlias("processDefineId"); + processDefineId.setDataType(dialect.buildDataType(processDefineId)); + processDefineId.setProperty("read-only", true); + processDefineId.setComment("流程定义ID"); + table.addColumn(processDefineId); + } + //----------processDefineKey-------------- + { + RDBColumnMetaData processDefineKey = new RDBColumnMetaData(); + processDefineKey.setJavaType(String.class); + processDefineKey.setJdbcType(JDBCType.VARCHAR); + processDefineKey.setLength(32); + processDefineKey.setName("proc_def_key"); + processDefineKey.setAlias("processDefineKey"); + processDefineKey.setDataType(dialect.buildDataType(processDefineKey)); + processDefineKey.setProperty("read-only", true); + processDefineKey.setComment("流程定义KEY"); + table.addColumn(processDefineKey); + } //----------processDefineName-------------- + { + RDBColumnMetaData processDefineName = new RDBColumnMetaData(); + processDefineName.setJavaType(String.class); + processDefineName.setJdbcType(JDBCType.VARCHAR); + processDefineName.setLength(128); + processDefineName.setName("proc_def_name"); + processDefineName.setAlias("processDefineName"); + processDefineName.setDataType(dialect.buildDataType(processDefineName)); + processDefineName.setProperty("read-only", true); + processDefineName.setComment("流程定义Name"); + table.addColumn(processDefineName); + }//----------processDefineVersion-------------- + { + RDBColumnMetaData processDefineVersion = new RDBColumnMetaData(); + processDefineVersion.setJavaType(Integer.class); + processDefineVersion.setJdbcType(JDBCType.INTEGER); + processDefineVersion.setLength(32); + processDefineVersion.setPrecision(32); + processDefineVersion.setScale(0); + processDefineVersion.setName("proc_def_ver"); + processDefineVersion.setAlias("processDefineVersion"); + processDefineVersion.setDataType(dialect.buildDataType(processDefineVersion)); + processDefineVersion.setProperty("read-only", true); + processDefineVersion.setComment("流程定义版本"); + table.addColumn(processDefineVersion); + }//----------processDefineVersion-------------- + { + RDBColumnMetaData processInstanceId = new RDBColumnMetaData(); + processInstanceId.setJavaType(String.class); + processInstanceId.setJdbcType(JDBCType.VARCHAR); + processInstanceId.setLength(32); + processInstanceId.setName("proc_ins_id"); + processInstanceId.setAlias("processInstanceId"); + processInstanceId.setDataType(dialect.buildDataType(processInstanceId)); + processInstanceId.setProperty("read-only", true); + processInstanceId.setComment("流程实例ID"); + table.addColumn(processInstanceId); + }//----------creatorUserId-------------- + { + RDBColumnMetaData creatorUserId = new RDBColumnMetaData(); + creatorUserId.setJavaType(String.class); + creatorUserId.setJdbcType(JDBCType.VARCHAR); + creatorUserId.setLength(32); + creatorUserId.setName("creator_id"); + creatorUserId.setAlias("creatorId"); + creatorUserId.setDataType(dialect.buildDataType(creatorUserId)); + creatorUserId.setProperty("read-only", true); + creatorUserId.setComment("创建人ID"); + creatorUserId.setDefaultValue(() -> Authentication.current().map(autz -> autz.getUser().getId()).orElse(null)); + table.addColumn(creatorUserId); + } + {//-----------creatorName--------- + RDBColumnMetaData creatorName = new RDBColumnMetaData(); + creatorName.setJavaType(String.class); + creatorName.setJdbcType(JDBCType.VARCHAR); + creatorName.setLength(32); + creatorName.setName("creator_name"); + creatorName.setAlias("creatorName"); + creatorName.setDataType(dialect.buildDataType(creatorName)); + creatorName.setProperty("read-only", true); + creatorName.setComment("创建人姓名"); + creatorName.setDefaultValue(() -> Authentication.current().map(autz -> autz.getUser().getName()).orElse(null)); + table.addColumn(creatorName); + } + {//-----------creatorName--------- + RDBColumnMetaData createTime = new RDBColumnMetaData(); + createTime.setJavaType(Date.class); + createTime.setJdbcType(JDBCType.TIMESTAMP); + createTime.setName("create_time"); + createTime.setAlias("createTime"); + createTime.setDataType(dialect.buildDataType(createTime)); + createTime.setProperty("read-only", true); + createTime.setComment("创建时间"); + createTime.setNotNull(true); + createTime.setValueConverter(new DateTimeConverter("yyyy-MM-dd HH:mm:ss",Date.class)); + createTime.setDefaultValue(Date::new); + table.addColumn(createTime); + } + {//-----------lastUpdateTime--------- + RDBColumnMetaData lastUpdateTime = new RDBColumnMetaData(); + lastUpdateTime.setJavaType(Date.class); + lastUpdateTime.setJdbcType(JDBCType.TIMESTAMP); + lastUpdateTime.setName("last_update_time"); + lastUpdateTime.setAlias("lastUpdateTime"); + lastUpdateTime.setDataType(dialect.buildDataType(lastUpdateTime)); + lastUpdateTime.setComment("最后一次修改时间"); + lastUpdateTime.setNotNull(true); + lastUpdateTime.setValueConverter(new DateTimeConverter("yyyy-MM-dd HH:mm:ss",Date.class)); + lastUpdateTime.setDefaultValue(Date::new); + table.addColumn(lastUpdateTime); + } + } + + @Override + public void customTableColumnSetting(ColumnInitializeContext context) { + + } }