This is an automated email from the ASF dual-hosted git repository.

leonbao pushed a commit to branch json_split
in repository https://gitbox.apache.org/repos/asf/incubator-dolphinscheduler.git


The following commit(s) were added to refs/heads/json_split by this push:
     new c7038a0  [Feature][JsonSplit] task and relation entity (#4475)
c7038a0 is described below

commit c7038a087ca3bc45b68005686c3647f36d1d8f8a
Author: JinyLeeChina <[email protected]>
AuthorDate: Sat Jan 16 23:57:59 2021 +0800

    [Feature][JsonSplit] task and relation entity (#4475)
    
    * task and relation entity
    
    * task and relation entity
    
    * task and relation entity
    
    * task and relation entity
    
    * task and relation entity
    
    * add timeout flag
    
    Co-authored-by: JinyLeeChina <[email protected]>
---
 .../common/enums/ConditionType.java                |  51 +++
 .../dolphinscheduler/common/enums/TimeoutFlag.java |  49 +++
 .../dao/entity/ProcessTaskRelation.java            | 252 ++++++++++++++
 .../dao/entity/ProcessTaskRelationLog.java         | 279 +++++++++++++++
 .../dao/entity/TaskDefinition.java                 | 359 +++++++++++++++++++
 .../dao/entity/TaskDefinitionLog.java              | 385 +++++++++++++++++++++
 sql/dolphinscheduler_mysql.sql                     |  24 +-
 7 files changed, 1387 insertions(+), 12 deletions(-)

diff --git 
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/enums/ConditionType.java
 
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/enums/ConditionType.java
new file mode 100644
index 0000000..3842aed
--- /dev/null
+++ 
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/enums/ConditionType.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.dolphinscheduler.common.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+
+/**
+ * condition type
+ */
+public enum ConditionType {
+    /**
+     * 0 none
+     * 1 judge
+     * 2 delay
+     */
+    NONE(0, "none"),
+    JUDGE(1, "judge"),
+    DELAY(2, "delay");
+
+    ConditionType(int code, String desc) {
+        this.code = code;
+        this.desc = desc;
+    }
+
+    @EnumValue
+    private final int code;
+    private final String desc;
+
+    public int getCode() {
+        return code;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+}
diff --git 
a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/enums/TimeoutFlag.java
 
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/enums/TimeoutFlag.java
new file mode 100644
index 0000000..4449487
--- /dev/null
+++ 
b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/enums/TimeoutFlag.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.dolphinscheduler.common.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+
+/**
+ * timeout flag
+ */
+public enum TimeoutFlag {
+    /**
+     * 0 close
+     * 1 open
+     */
+    CLOSE(0, "close"),
+    OPEN(1, "open");
+
+
+    TimeoutFlag(int code, String desc){
+        this.code = code;
+        this.desc = desc;
+    }
+
+    @EnumValue
+    private final int code;
+    private final String desc;
+
+    public int getCode() {
+        return code;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+}
diff --git 
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessTaskRelation.java
 
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessTaskRelation.java
new file mode 100644
index 0000000..6d1dd77
--- /dev/null
+++ 
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessTaskRelation.java
@@ -0,0 +1,252 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.dolphinscheduler.dao.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.dolphinscheduler.common.enums.ConditionType;
+import org.apache.dolphinscheduler.common.process.Property;
+import org.apache.dolphinscheduler.common.utils.JSONUtils;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * process task relation
+ */
+@TableName("t_ds_process_task_relation")
+public class ProcessTaskRelation {
+
+    /**
+     * id
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private int id;
+
+    /**
+     * name
+     */
+    private String name;
+
+    /**
+     * version
+     */
+    private int version;
+
+    /**
+     * project code
+     */
+    private long projectCode;
+
+    /**
+     * process code
+     */
+    private long processDefinitionCode;
+
+    /**
+     * pre project code
+     */
+    private long preProjectCode;
+
+    /**
+     * pre task code
+     */
+    private long preTaskCode;
+
+    /**
+     * post project code
+     */
+    private long postProjectCode;
+
+    /**
+     * post task code
+     */
+    private long postTaskCode;
+
+    /**
+     * condition type
+     */
+    private ConditionType conditionType;
+
+    /**
+     * condition parameters
+     */
+    private String conditionParams;
+
+    /**
+     * condition parameter list
+     */
+    @TableField(exist = false)
+    private List<Property> conditionParamList;
+
+    /**
+     * condition parameter map
+     */
+    @TableField(exist = false)
+    private Map<String, String> conditionParamMap;
+
+    /**
+     * create time
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
+
+    /**
+     * update time
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updateTime;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getConditionParams() {
+        return conditionParams;
+    }
+
+    public void setConditionParams(String conditionParams) {
+        if (conditionParams == null) {
+            this.conditionParamList = new ArrayList<>();
+        } else {
+            this.conditionParamList = JSONUtils.toList(conditionParams, 
Property.class);
+        }
+        this.conditionParams = conditionParams;
+    }
+
+    public List<Property> getConditionParamList() {
+        return conditionParamList;
+    }
+
+    public void setConditionParamList(List<Property> conditionParamList) {
+        this.conditionParams = JSONUtils.toJsonString(conditionParamList);
+        this.conditionParamList = conditionParamList;
+    }
+
+    public Map<String, String> getConditionParamMap() {
+        if (conditionParamMap == null && 
StringUtils.isNotEmpty(conditionParams)) {
+            List<Property> propList = JSONUtils.toList(conditionParams, 
Property.class);
+            conditionParamMap = 
propList.stream().collect(Collectors.toMap(Property::getProp, 
Property::getValue));
+        }
+
+        return conditionParamMap;
+    }
+
+    public void setConditionParamMap(Map<String, String> conditionParamMap) {
+        this.conditionParamMap = conditionParamMap;
+    }
+
+    public int getVersion() {
+        return version;
+    }
+
+    public void setVersion(int version) {
+        this.version = version;
+    }
+
+    public long getProjectCode() {
+        return projectCode;
+    }
+
+    public void setProjectCode(long projectCode) {
+        this.projectCode = projectCode;
+    }
+
+    public long getProcessDefinitionCode() {
+        return processDefinitionCode;
+    }
+
+    public void setProcessDefinitionCode(long processDefinitionCode) {
+        this.processDefinitionCode = processDefinitionCode;
+    }
+
+    public long getPreProjectCode() {
+        return preProjectCode;
+    }
+
+    public void setPreProjectCode(long preProjectCode) {
+        this.preProjectCode = preProjectCode;
+    }
+
+    public long getPreTaskCode() {
+        return preTaskCode;
+    }
+
+    public void setPreTaskCode(long preTaskCode) {
+        this.preTaskCode = preTaskCode;
+    }
+
+    public long getPostProjectCode() {
+        return postProjectCode;
+    }
+
+    public void setPostProjectCode(long postProjectCode) {
+        this.postProjectCode = postProjectCode;
+    }
+
+    public long getPostTaskCode() {
+        return postTaskCode;
+    }
+
+    public void setPostTaskCode(long postTaskCode) {
+        this.postTaskCode = postTaskCode;
+    }
+
+    public ConditionType getConditionType() {
+        return conditionType;
+    }
+
+    public void setConditionType(ConditionType conditionType) {
+        this.conditionType = conditionType;
+    }
+}
diff --git 
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessTaskRelationLog.java
 
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessTaskRelationLog.java
new file mode 100644
index 0000000..27f156c
--- /dev/null
+++ 
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/ProcessTaskRelationLog.java
@@ -0,0 +1,279 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.dolphinscheduler.dao.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.dolphinscheduler.common.enums.ConditionType;
+import org.apache.dolphinscheduler.common.process.Property;
+import org.apache.dolphinscheduler.common.utils.JSONUtils;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * process task relation log
+ */
+@TableName("t_ds_process_task_relation_log")
+public class ProcessTaskRelationLog {
+
+    /**
+     * id
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private int id;
+
+    /**
+     * name
+     */
+    private String name;
+
+    /**
+     * version
+     */
+    private int version;
+
+    /**
+     * project code
+     */
+    private long projectCode;
+
+    /**
+     * process code
+     */
+    private long processDefinitionCode;
+
+    /**
+     * pre project code
+     */
+    private long preProjectCode;
+
+    /**
+     * pre task code
+     */
+    private long preTaskCode;
+
+    /**
+     * post project code
+     */
+    private long postProjectCode;
+
+    /**
+     * post task code
+     */
+    private long postTaskCode;
+
+    /**
+     * condition type
+     */
+    private ConditionType conditionType;
+
+    /**
+     * condition parameters
+     */
+    private String conditionParams;
+
+    /**
+     * condition parameter list
+     */
+    @TableField(exist = false)
+    private List<Property> conditionParamList;
+
+    /**
+     * condition parameter map
+     */
+    @TableField(exist = false)
+    private Map<String, String> conditionParamMap;
+
+    /**
+     * operator user id
+     */
+    private int operator;
+
+    /**
+     * operate time
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date operateTime;
+
+    /**
+     * create time
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
+
+    /**
+     * update time
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updateTime;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getConditionParams() {
+        return conditionParams;
+    }
+
+    public void setConditionParams(String conditionParams) {
+        if (conditionParams == null) {
+            this.conditionParamList = new ArrayList<>();
+        } else {
+            this.conditionParamList = JSONUtils.toList(conditionParams, 
Property.class);
+        }
+        this.conditionParams = conditionParams;
+    }
+
+    public List<Property> getConditionParamList() {
+        return conditionParamList;
+    }
+
+    public void setConditionParamList(List<Property> conditionParamList) {
+        this.conditionParams = JSONUtils.toJsonString(conditionParamList);
+        this.conditionParamList = conditionParamList;
+    }
+
+    public Map<String, String> getConditionParamMap() {
+        if (conditionParamMap == null && 
StringUtils.isNotEmpty(conditionParams)) {
+            List<Property> propList = JSONUtils.toList(conditionParams, 
Property.class);
+            conditionParamMap = 
propList.stream().collect(Collectors.toMap(Property::getProp, 
Property::getValue));
+        }
+
+        return conditionParamMap;
+    }
+
+    public void setConditionParamMap(Map<String, String> conditionParamMap) {
+        this.conditionParamMap = conditionParamMap;
+    }
+
+    public int getVersion() {
+        return version;
+    }
+
+    public void setVersion(int version) {
+        this.version = version;
+    }
+
+    public long getProjectCode() {
+        return projectCode;
+    }
+
+    public void setProjectCode(long projectCode) {
+        this.projectCode = projectCode;
+    }
+
+    public long getProcessDefinitionCode() {
+        return processDefinitionCode;
+    }
+
+    public void setProcessDefinitionCode(long processDefinitionCode) {
+        this.processDefinitionCode = processDefinitionCode;
+    }
+
+    public long getPreProjectCode() {
+        return preProjectCode;
+    }
+
+    public void setPreProjectCode(long preProjectCode) {
+        this.preProjectCode = preProjectCode;
+    }
+
+    public long getPreTaskCode() {
+        return preTaskCode;
+    }
+
+    public void setPreTaskCode(long preTaskCode) {
+        this.preTaskCode = preTaskCode;
+    }
+
+    public long getPostProjectCode() {
+        return postProjectCode;
+    }
+
+    public void setPostProjectCode(long postProjectCode) {
+        this.postProjectCode = postProjectCode;
+    }
+
+    public long getPostTaskCode() {
+        return postTaskCode;
+    }
+
+    public void setPostTaskCode(long postTaskCode) {
+        this.postTaskCode = postTaskCode;
+    }
+
+    public ConditionType getConditionType() {
+        return conditionType;
+    }
+
+    public void setConditionType(ConditionType conditionType) {
+        this.conditionType = conditionType;
+    }
+
+    public int getOperator() {
+        return operator;
+    }
+
+    public void setOperator(int operator) {
+        this.operator = operator;
+    }
+
+    public Date getOperateTime() {
+        return operateTime;
+    }
+
+    public void setOperateTime(Date operateTime) {
+        this.operateTime = operateTime;
+    }
+}
diff --git 
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskDefinition.java
 
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskDefinition.java
new file mode 100644
index 0000000..3789fed
--- /dev/null
+++ 
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskDefinition.java
@@ -0,0 +1,359 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.dolphinscheduler.dao.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.dolphinscheduler.common.enums.*;
+import org.apache.dolphinscheduler.common.process.Property;
+import org.apache.dolphinscheduler.common.utils.JSONUtils;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+
+/**
+ * task definition
+ */
+@TableName("t_ds_task_definition")
+public class TaskDefinition {
+
+    /**
+     * id
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private int id;
+
+    /**
+     * code
+     */
+    private long code;
+
+    /**
+     * name
+     */
+    private String name;
+
+    /**
+     * version
+     */
+    private int version;
+
+    /**
+     * description
+     */
+    private String description;
+
+    /**
+     * project code
+     */
+    private long projectCode;
+
+    /**
+     * task user id
+     */
+    private int userId;
+
+    /**
+     * task type
+     */
+    private TaskType taskType;
+
+    /**
+     * user defined parameters
+     */
+    private String taskParams;
+
+    /**
+     * user defined parameter list
+     */
+    @TableField(exist = false)
+    private List<Property> taskParamList;
+
+    /**
+     * user define parameter map
+     */
+    @TableField(exist = false)
+    private Map<String, String> taskParamMap;
+
+    /**
+     * task is valid: yes/no
+     */
+    private Flag flag;
+
+    /**
+     * task priority
+     */
+    private Priority taskPriority;
+
+    /**
+     * user name
+     */
+    @TableField(exist = false)
+    private String userName;
+
+    /**
+     * project name
+     */
+    @TableField(exist = false)
+    private String projectName;
+
+    /**
+     * worker group
+     */
+    private String workerGroup;
+
+    /**
+     * fail retry times
+     */
+    private int failRetryTimes;
+
+    /**
+     * fail retry interval
+     */
+    private int failRetryInterval;
+
+    /**
+     * timeout flag
+     */
+    private TimeoutFlag timeoutFlag;
+
+    /**
+     * timeout notify strategy
+     */
+    private TaskTimeoutStrategy taskTimeoutStrategy;
+
+    /**
+     * task warning time out. unit: minute
+     */
+    private int timeout;
+
+    /**
+     * create time
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
+
+    /**
+     * update time
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updateTime;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public Flag getFlag() {
+        return flag;
+    }
+
+    public void setFlag(Flag flag) {
+        this.flag = flag;
+    }
+
+    public int getUserId() {
+        return userId;
+    }
+
+    public void setUserId(int userId) {
+        this.userId = userId;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getProjectName() {
+        return projectName;
+    }
+
+    public void setProjectName(String projectName) {
+        this.projectName = projectName;
+    }
+
+    public String getTaskParams() {
+        return taskParams;
+    }
+
+    public void setTaskParams(String taskParams) {
+        if (taskParams == null) {
+            this.taskParamList = new ArrayList<>();
+        } else {
+            this.taskParamList = JSONUtils.toList(taskParams, Property.class);
+        }
+        this.taskParams = taskParams;
+    }
+
+    public List<Property> getTaskParamList() {
+        return taskParamList;
+    }
+
+    public void setTaskParamList(List<Property> taskParamList) {
+        this.taskParams = JSONUtils.toJsonString(taskParamList);
+        this.taskParamList = taskParamList;
+    }
+
+    public Map<String, String> getTaskParamMap() {
+        if (taskParamMap == null && StringUtils.isNotEmpty(taskParams)) {
+            List<Property> propList = JSONUtils.toList(taskParams, 
Property.class);
+            taskParamMap = 
propList.stream().collect(Collectors.toMap(Property::getProp, 
Property::getValue));
+        }
+
+        return taskParamMap;
+    }
+
+    public void setTaskParamMap(Map<String, String> taskParamMap) {
+        this.taskParamMap = taskParamMap;
+    }
+
+    public int getTimeout() {
+        return timeout;
+    }
+
+    public void setTimeout(int timeout) {
+        this.timeout = timeout;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public long getCode() {
+        return code;
+    }
+
+    public void setCode(long code) {
+        this.code = code;
+    }
+
+    public int getVersion() {
+        return version;
+    }
+
+    public void setVersion(int version) {
+        this.version = version;
+    }
+
+    public long getProjectCode() {
+        return projectCode;
+    }
+
+    public void setProjectCode(long projectCode) {
+        this.projectCode = projectCode;
+    }
+
+    public TaskType getTaskType() {
+        return taskType;
+    }
+
+    public void setTaskType(TaskType taskType) {
+        this.taskType = taskType;
+    }
+
+    public Priority getTaskPriority() {
+        return taskPriority;
+    }
+
+    public void setTaskPriority(Priority taskPriority) {
+        this.taskPriority = taskPriority;
+    }
+
+    public String getWorkerGroup() {
+        return workerGroup;
+    }
+
+    public void setWorkerGroup(String workerGroup) {
+        this.workerGroup = workerGroup;
+    }
+
+    public int getFailRetryTimes() {
+        return failRetryTimes;
+    }
+
+    public void setFailRetryTimes(int failRetryTimes) {
+        this.failRetryTimes = failRetryTimes;
+    }
+
+    public int getFailRetryInterval() {
+        return failRetryInterval;
+    }
+
+    public void setFailRetryInterval(int failRetryInterval) {
+        this.failRetryInterval = failRetryInterval;
+    }
+
+    public TaskTimeoutStrategy getTaskTimeoutStrategy() {
+        return taskTimeoutStrategy;
+    }
+
+    public void setTaskTimeoutStrategy(TaskTimeoutStrategy 
taskTimeoutStrategy) {
+        this.taskTimeoutStrategy = taskTimeoutStrategy;
+    }
+
+    public TimeoutFlag getTimeoutFlag() {
+        return timeoutFlag;
+    }
+
+    public void setTimeoutFlag(TimeoutFlag timeoutFlag) {
+        this.timeoutFlag = timeoutFlag;
+    }
+}
diff --git 
a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskDefinitionLog.java
 
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskDefinitionLog.java
new file mode 100644
index 0000000..d9dd8a4
--- /dev/null
+++ 
b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/TaskDefinitionLog.java
@@ -0,0 +1,385 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.dolphinscheduler.dao.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.dolphinscheduler.common.enums.*;
+import org.apache.dolphinscheduler.common.process.Property;
+import org.apache.dolphinscheduler.common.utils.JSONUtils;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * task definition log
+ */
+@TableName("t_ds_task_definition_log")
+public class TaskDefinitionLog {
+
+    /**
+     * id
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private int id;
+
+    /**
+     * code
+     */
+    private long code;
+
+    /**
+     * name
+     */
+    private String name;
+
+    /**
+     * version
+     */
+    private int version;
+
+    /**
+     * description
+     */
+    private String description;
+
+    /**
+     * project code
+     */
+    private long projectCode;
+
+    /**
+     * task user id
+     */
+    private int userId;
+
+    /**
+     * task type
+     */
+    private TaskType taskType;
+
+    /**
+     * user defined parameters
+     */
+    private String taskParams;
+
+    /**
+     * user defined parameter list
+     */
+    @TableField(exist = false)
+    private List<Property> taskParamList;
+
+    /**
+     * user define parameter map
+     */
+    @TableField(exist = false)
+    private Map<String, String> taskParamMap;
+
+    /**
+     * task is valid: yes/no
+     */
+    private Flag flag;
+
+    /**
+     * task priority
+     */
+    private Priority taskPriority;
+
+    /**
+     * user name
+     */
+    @TableField(exist = false)
+    private String userName;
+
+    /**
+     * project name
+     */
+    @TableField(exist = false)
+    private String projectName;
+
+    /**
+     * worker group
+     */
+    private String workerGroup;
+
+    /**
+     * fail retry times
+     */
+    private int failRetryTimes;
+
+    /**
+     * fail retry interval
+     */
+    private int failRetryInterval;
+
+    /**
+     * timeout flag
+     */
+    private TimeoutFlag timeoutFlag;
+
+    /**
+     * timeout notify strategy
+     */
+    private TaskTimeoutStrategy taskTimeoutStrategy;
+
+    /**
+     * task warning time out. unit: minute
+     */
+    private int timeout;
+
+    /**
+     * operator user id
+     */
+    private int operator;
+
+    /**
+     * operate time
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date operateTime;
+
+    /**
+     * create time
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
+
+    /**
+     * update time
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updateTime;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public Flag getFlag() {
+        return flag;
+    }
+
+    public void setFlag(Flag flag) {
+        this.flag = flag;
+    }
+
+    public int getUserId() {
+        return userId;
+    }
+
+    public void setUserId(int userId) {
+        this.userId = userId;
+    }
+
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getProjectName() {
+        return projectName;
+    }
+
+    public void setProjectName(String projectName) {
+        this.projectName = projectName;
+    }
+
+    public String getTaskParams() {
+        return taskParams;
+    }
+
+    public void setTaskParams(String taskParams) {
+        if (taskParams == null) {
+            this.taskParamList = new ArrayList<>();
+        } else {
+            this.taskParamList = JSONUtils.toList(taskParams, Property.class);
+        }
+        this.taskParams = taskParams;
+    }
+
+    public List<Property> getTaskParamList() {
+        return taskParamList;
+    }
+
+    public void setTaskParamList(List<Property> taskParamList) {
+        this.taskParams = JSONUtils.toJsonString(taskParamList);
+        this.taskParamList = taskParamList;
+    }
+
+    public Map<String, String> getTaskParamMap() {
+        if (taskParamMap == null && StringUtils.isNotEmpty(taskParams)) {
+            List<Property> propList = JSONUtils.toList(taskParams, 
Property.class);
+            taskParamMap = 
propList.stream().collect(Collectors.toMap(Property::getProp, 
Property::getValue));
+        }
+
+        return taskParamMap;
+    }
+
+    public void setTaskParamMap(Map<String, String> taskParamMap) {
+        this.taskParamMap = taskParamMap;
+    }
+
+    public int getTimeout() {
+        return timeout;
+    }
+
+    public void setTimeout(int timeout) {
+        this.timeout = timeout;
+    }
+
+    public String getDescription() {
+        return description;
+    }
+
+    public void setDescription(String description) {
+        this.description = description;
+    }
+
+    public long getCode() {
+        return code;
+    }
+
+    public void setCode(long code) {
+        this.code = code;
+    }
+
+    public int getVersion() {
+        return version;
+    }
+
+    public void setVersion(int version) {
+        this.version = version;
+    }
+
+    public long getProjectCode() {
+        return projectCode;
+    }
+
+    public void setProjectCode(long projectCode) {
+        this.projectCode = projectCode;
+    }
+
+    public TaskType getTaskType() {
+        return taskType;
+    }
+
+    public void setTaskType(TaskType taskType) {
+        this.taskType = taskType;
+    }
+
+    public Priority getTaskPriority() {
+        return taskPriority;
+    }
+
+    public void setTaskPriority(Priority taskPriority) {
+        this.taskPriority = taskPriority;
+    }
+
+    public String getWorkerGroup() {
+        return workerGroup;
+    }
+
+    public void setWorkerGroup(String workerGroup) {
+        this.workerGroup = workerGroup;
+    }
+
+    public int getFailRetryTimes() {
+        return failRetryTimes;
+    }
+
+    public void setFailRetryTimes(int failRetryTimes) {
+        this.failRetryTimes = failRetryTimes;
+    }
+
+    public int getFailRetryInterval() {
+        return failRetryInterval;
+    }
+
+    public void setFailRetryInterval(int failRetryInterval) {
+        this.failRetryInterval = failRetryInterval;
+    }
+
+    public TaskTimeoutStrategy getTaskTimeoutStrategy() {
+        return taskTimeoutStrategy;
+    }
+
+    public void setTaskTimeoutStrategy(TaskTimeoutStrategy 
taskTimeoutStrategy) {
+        this.taskTimeoutStrategy = taskTimeoutStrategy;
+    }
+
+    public int getOperator() {
+        return operator;
+    }
+
+    public void setOperator(int operator) {
+        this.operator = operator;
+    }
+
+    public Date getOperateTime() {
+        return operateTime;
+    }
+
+    public void setOperateTime(Date operateTime) {
+        this.operateTime = operateTime;
+    }
+
+    public TimeoutFlag getTimeoutFlag() {
+        return timeoutFlag;
+    }
+
+    public void setTimeoutFlag(TimeoutFlag timeoutFlag) {
+        this.timeoutFlag = timeoutFlag;
+    }
+}
diff --git a/sql/dolphinscheduler_mysql.sql b/sql/dolphinscheduler_mysql.sql
index e900632..da6bfa2 100644
--- a/sql/dolphinscheduler_mysql.sql
+++ b/sql/dolphinscheduler_mysql.sql
@@ -407,7 +407,7 @@ CREATE TABLE `t_ds_process_definition` (
   `flag` tinyint(4) DEFAULT NULL COMMENT '0 not available, 1 available',
   `receivers` text COMMENT 'receivers',
   `receivers_cc` text COMMENT 'cc',
-  `timeout` int(11) DEFAULT '0' COMMENT 'time out',
+  `timeout` int(11) DEFAULT '0' COMMENT 'time out, unit: minute',
   `tenant_id` int(11) NOT NULL DEFAULT '-1' COMMENT 'tenant id',
   `create_time` datetime NOT NULL COMMENT 'create time',
   `update_time` datetime DEFAULT NULL COMMENT 'update time',
@@ -436,7 +436,7 @@ CREATE TABLE `t_ds_process_definition_log` (
   `flag` tinyint(4) DEFAULT NULL COMMENT '0 not available, 1 available',
   `receivers` text COMMENT 'receivers',
   `receivers_cc` text COMMENT 'cc',
-  `timeout` int(11) DEFAULT '0' COMMENT 'time out',
+  `timeout` int(11) DEFAULT '0' COMMENT 'time out,unit: minute',
   `tenant_id` int(11) NOT NULL DEFAULT '-1' COMMENT 'tenant id',
   `operator` int(11) DEFAULT NULL COMMENT 'operator user id',
   `operate_time` datetime DEFAULT NULL COMMENT 'operate time',
@@ -456,16 +456,16 @@ CREATE TABLE `t_ds_task_definition` (
   `description` text COMMENT 'description',
   `project_code` bigint(20) NOT NULL COMMENT 'project code',
   `user_id` int(11) DEFAULT NULL COMMENT 'task definition creator id',
-  `task_type` varchar(30) DEFAULT NULL COMMENT 'job type',
+  `task_type` tinyint(4) DEFAULT NULL COMMENT '0 shell,1 sql,2 sub_process,3 
procedure,4 mr,5 spark,6 python,7 dependent,8 flink,9 http,10 datax,11 
conditions,12 sqoop,13 waterdrop',
   `task_params` text COMMENT 'job custom parameters',
-  `run_flag` tinyint(2) DEFAULT NULL COMMENT '0 not available, 1 available',
+  `flag` tinyint(2) DEFAULT NULL COMMENT '0 not available, 1 available',
   `task_priority` tinyint(4) DEFAULT NULL COMMENT 'job priority',
   `worker_group` varchar(200) DEFAULT NULL COMMENT 'worker grouping',
   `fail_retry_times` int(11) DEFAULT NULL COMMENT 'number of failed retries',
   `fail_retry_interval` int(11) DEFAULT NULL COMMENT 'failed retry interval',
   `timeout_flag` tinyint(1) DEFAULT '0' COMMENT 'timeout flag:0 close, 1 open',
   `timeout_notify_strategy` tinyint(4) DEFAULT NULL COMMENT 'timeout 
notification policy: 0 warning, 1 fail',
-  `timeout_duration` int(11) DEFAULT '0' COMMENT 'timeout length',
+  `timeout` int(11) DEFAULT '0' COMMENT 'timeout length,unit: minute',
   `create_time` datetime NOT NULL COMMENT 'create time',
   `update_time` datetime DEFAULT NULL COMMENT 'update time',
   PRIMARY KEY (`id`,`code`),
@@ -483,16 +483,16 @@ CREATE TABLE `t_ds_task_definition_log` (
   `description` text COMMENT 'description',
   `project_code` bigint(20) NOT NULL COMMENT 'project code',
   `user_id` int(11) DEFAULT NULL COMMENT 'task definition creator id',
-  `task_type` varchar(30) DEFAULT NULL COMMENT 'job type',
+  `task_type` tinyint(4) DEFAULT NULL COMMENT '0 shell,1 sql,2 sub_process,3 
procedure,4 mr,5 spark,6 python,7 dependent,8 flink,9 http,10 datax,11 
conditions,12 sqoop,13 waterdrop',
   `task_params` text COMMENT 'job custom parameters',
-  `run_flag` tinyint(2) DEFAULT NULL COMMENT '0 not available, 1 available',
+  `flag` tinyint(2) DEFAULT NULL COMMENT '0 not available, 1 available',
   `task_priority` tinyint(4) DEFAULT NULL COMMENT 'job priority',
   `worker_group` varchar(200) DEFAULT NULL COMMENT 'worker grouping',
   `fail_retry_times` int(11) DEFAULT NULL COMMENT 'number of failed retries',
   `fail_retry_interval` int(11) DEFAULT NULL COMMENT 'failed retry interval',
   `timeout_flag` tinyint(1) DEFAULT '0' COMMENT 'timeout flag:0 close, 1 open',
   `timeout_notify_strategy` tinyint(4) DEFAULT NULL COMMENT 'timeout 
notification policy: 0 warning, 1 fail',
-  `timeout_duration` int(11) DEFAULT '0' COMMENT 'timeout length',
+  `timeout` int(11) DEFAULT '0' COMMENT 'timeout length,unit: minute',
   `operator` int(11) DEFAULT NULL COMMENT 'operator user id',
   `operate_time` datetime DEFAULT NULL COMMENT 'operate time',
   `create_time` datetime NOT NULL COMMENT 'create time',
@@ -511,10 +511,10 @@ CREATE TABLE `t_ds_process_task_relation` (
   `process_definition_code` bigint(20) NOT NULL COMMENT 'process code',
   `pre_project_code` bigint(20) NOT NULL COMMENT 'pre process code',
   `pre_task_code` bigint(20) NOT NULL COMMENT 'pre task code',
-  `condition_type` tinyint(2) DEFAULT NULL COMMENT 'condition type : 0 none, 1 
judge 2 delay',
-  `condition_params` text COMMENT 'condition params(json)',
   `post_project_code` bigint(20) NOT NULL COMMENT 'post process code',
   `post_task_code` bigint(20) NOT NULL COMMENT 'post task code',
+  `condition_type` tinyint(2) DEFAULT NULL COMMENT 'condition type : 0 none, 1 
judge 2 delay',
+  `condition_params` text COMMENT 'condition params(json)',
   `create_time` datetime NOT NULL COMMENT 'create time',
   `update_time` datetime DEFAULT NULL COMMENT 'update time',
   PRIMARY KEY (`id`)
@@ -531,10 +531,10 @@ CREATE TABLE `t_ds_process_task_relation_log` (
   `process_definition_code` bigint(20) NOT NULL COMMENT 'process code',
   `pre_project_code` bigint(20) NOT NULL COMMENT 'pre process code',
   `pre_task_code` bigint(20) NOT NULL COMMENT 'pre task code',
-  `condition_type` tinyint(2) DEFAULT NULL COMMENT 'condition type : 0 none, 1 
judge 2 delay',
-  `condition_params` text COMMENT 'condition params(json)',
   `post_project_code` bigint(20) NOT NULL COMMENT 'post process code',
   `post_task_code` bigint(20) NOT NULL COMMENT 'post task code',
+  `condition_type` tinyint(2) DEFAULT NULL COMMENT 'condition type : 0 none, 1 
judge 2 delay',
+  `condition_params` text COMMENT 'condition params(json)',
   `operator` int(11) DEFAULT NULL COMMENT 'operator user id',
   `operate_time` datetime DEFAULT NULL COMMENT 'operate time',
   `create_time` datetime NOT NULL COMMENT 'create time',

Reply via email to