//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vJAXB 2.1.10 in JDK 6 
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
// Any modifications to this file will be lost upon recompilation of the source schema. 
// Generated on: 2017.10.26 at 07:21:56 下午 CST 
//


package com.artfess.bpm.defxml.entity.ext;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
import java.util.ArrayList;
import java.util.List;


/**
 * 流程定义的扩展配置属性
 * 
 * <p>Java class for extProperties complex type.
 * 
 * <p>The following schema fragment specifies the expected content contained within this class.
 * 
 * <pre>
 * &lt;complexType name="extProperties">
 *   &lt;complexContent>
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       &lt;sequence>
 *         &lt;element name="subjectRule" type="{http://www.w3.org/2001/XMLSchema}string"/>
 *         &lt;element name="description" type="{http://www.w3.org/2001/XMLSchema}string"/>
 *         &lt;element name="startNotifyType" type="{http://www.w3.org/2001/XMLSchema}string"/>
 *         &lt;element name="archiveNotifyType" type="{http://www.w3.org/2001/XMLSchema}string"/>
 *         &lt;element name="notifyType" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
 *         &lt;element name="skipFirstNode" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
 *         &lt;element name="firstNodeUserAssign" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
 *         &lt;element name="skipSameUser" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
 *         &lt;element name="allowCopyTo" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
 *         &lt;element name="allowTransTo" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
 *         &lt;element name="useMainForm" type="{http://www.w3.org/2001/XMLSchema}string"/>
 *         &lt;element name="doneDataVersion" type="{http://www.w3.org/2001/XMLSchema}string"/>
 *         &lt;element name="allowReference" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
 *         &lt;element name="allowRefCounts" type="{http://www.w3.org/2001/XMLSchema}int"/>
 *         &lt;element name="extProperty" type="{http://www.jee-soft.cn/bpm}extProperty" maxOccurs="unbounded" minOccurs="0"/>
 *       &lt;/sequence>
 *       &lt;attribute name="allowExecutorEmpty" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
 *       &lt;attribute name="skipExecutorEmpty" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
 *       &lt;attribute name="testNotifyType" type="{http://www.w3.org/2001/XMLSchema}string" default="mail" />
 *       &lt;attribute name="skipRules" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" />
 *       &lt;attribute name="dateType" type="{http://www.w3.org/2001/XMLSchema}string" default="worktime" />
 *       &lt;attribute name="dueTime" type="{http://www.w3.org/2001/XMLSchema}int" default="0" />
 *     &lt;/restriction>
 *   &lt;/complexContent>
 * &lt;/complexType>
 * </pre>
 * 
 * 
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "extProperties", propOrder = {
    "subjectRule",
    "description",
    "startNotifyType",
    "archiveNotifyType",
    "notifyType",
    "skipFirstNode",
    "firstNodeUserAssign",
    "skipSameUser",
    "allowCopyTo",
    "allowTransTo",
    "useMainForm",
    "allowReference",
    "allowRefCounts",
    "extProperty",
    "doneDataVersion",
    "checkLimit",
    "startLimit"
})
public class ExtProperties {

    @XmlElement(required = true)
    protected String subjectRule;
    @XmlElement(required = true)
    protected String description;
    @XmlElement(required = true, defaultValue = "mail")
    protected String startNotifyType;
    @XmlElement(required = true, defaultValue = "mail")
    protected String archiveNotifyType;
    @XmlElement(defaultValue = "mail")
    protected String notifyType;
    @XmlElement(defaultValue = "true")
    protected boolean skipFirstNode;
    @XmlElement(defaultValue = "false")
    protected boolean firstNodeUserAssign;
    @XmlElement(defaultValue = "true")
    protected boolean skipSameUser;
    @XmlElement(defaultValue = "false")
    protected boolean allowCopyTo;
    @XmlElement(defaultValue = "false")
    protected boolean allowTransTo;
    @XmlElement(required = true, defaultValue = "")
    protected String useMainForm;
    @XmlElement(defaultValue = "false")
    protected boolean allowReference;
    @XmlElement(defaultValue = "5")
    protected int allowRefCounts;
    protected List<ExtProperty> extProperty;
    @XmlAttribute
    protected Boolean allowExecutorEmpty;
    @XmlAttribute
    protected Boolean skipExecutorEmpty;
    @XmlAttribute
    protected String testNotifyType;
    @XmlAttribute
    @XmlSchemaType(name = "anySimpleType")
    protected String skipRules;
    @XmlAttribute
    protected String dateType;
    @XmlAttribute
    protected Integer dueTime;
    @XmlElement(required = false, defaultValue = "history")
    protected String doneDataVersion;
    @XmlElement(required = false,defaultValue = "all,end")
    protected String checkLimit;
    @XmlElement(required = false,defaultValue = "self,back,end")
    protected String startLimit;

    /**
     * Gets the value of the subjectRule property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getSubjectRule() {
        return subjectRule;
    }

    /**
     * Sets the value of the subjectRule property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setSubjectRule(String value) {
        this.subjectRule = value;
    }

    /**
     * Gets the value of the description property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getDescription() {
        return description;
    }

    /**
     * Sets the value of the description property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setDescription(String value) {
        this.description = value;
    }

    /**
     * Gets the value of the startNotifyType property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getStartNotifyType() {
        return startNotifyType;
    }

    /**
     * Sets the value of the startNotifyType property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setStartNotifyType(String value) {
        this.startNotifyType = value;
    }

    /**
     * Gets the value of the archiveNotifyType property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getArchiveNotifyType() {
        return archiveNotifyType;
    }

    /**
     * Sets the value of the archiveNotifyType property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setArchiveNotifyType(String value) {
        this.archiveNotifyType = value;
    }

    /**
     * Gets the value of the notifyType property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getNotifyType() {
        return notifyType;
    }

    /**
     * Sets the value of the notifyType property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setNotifyType(String value) {
        this.notifyType = value;
    }

    /**
     * Gets the value of the skipFirstNode property.
     * 
     */
    public boolean isSkipFirstNode() {
        return skipFirstNode;
    }

    /**
     * Sets the value of the skipFirstNode property.
     * 
     */
    public void setSkipFirstNode(boolean value) {
        this.skipFirstNode = value;
    }

    /**
     * Gets the value of the firstNodeUserAssign property.
     * 
     */
    public boolean isFirstNodeUserAssign() {
        return firstNodeUserAssign;
    }

    /**
     * Sets the value of the firstNodeUserAssign property.
     * 
     */
    public void setFirstNodeUserAssign(boolean value) {
        this.firstNodeUserAssign = value;
    }

    /**
     * Gets the value of the skipSameUser property.
     * 
     */
    public boolean isSkipSameUser() {
        return skipSameUser;
    }

    /**
     * Sets the value of the skipSameUser property.
     * 
     */
    public void setSkipSameUser(boolean value) {
        this.skipSameUser = value;
    }

    /**
     * Gets the value of the allowCopyTo property.
     * 
     */
    public boolean isAllowCopyTo() {
        return allowCopyTo;
    }

    /**
     * Sets the value of the allowCopyTo property.
     * 
     */
    public void setAllowCopyTo(boolean value) {
        this.allowCopyTo = value;
    }

    /**
     * Gets the value of the allowTransTo property.
     * 
     */
    public boolean isAllowTransTo() {
        return allowTransTo;
    }

    /**
     * Sets the value of the allowTransTo property.
     * 
     */
    public void setAllowTransTo(boolean value) {
        this.allowTransTo = value;
    }

    /**
     * Gets the value of the useMainForm property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getUseMainForm() {
        return useMainForm;
    }

    /**
     * Sets the value of the useMainForm property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setUseMainForm(String value) {
        this.useMainForm = value;
    }

    /**
     * Gets the value of the allowReference property.
     * 
     */
    public boolean isAllowReference() {
        return allowReference;
    }

    /**
     * Sets the value of the allowReference property.
     * 
     */
    public void setAllowReference(boolean value) {
        this.allowReference = value;
    }

    /**
     * Gets the value of the allowRefCounts property.
     * 
     */
    public int getAllowRefCounts() {
        return allowRefCounts;
    }

    /**
     * Sets the value of the allowRefCounts property.
     * 
     */
    public void setAllowRefCounts(int value) {
        this.allowRefCounts = value;
    }

    /**
     * Gets the value of the extProperty property.
     * 
     * <p>
     * This accessor method returns a reference to the live list,
     * not a snapshot. Therefore any modification you make to the
     * returned list will be present inside the JAXB object.
     * This is why there is not a <CODE>set</CODE> method for the extProperty property.
     * 
     * <p>
     * For example, to add a new item, do as follows:
     * <pre>
     *    getExtProperty().add(newItem);
     * </pre>
     * 
     * 
     * <p>
     * Objects of the following type(s) are allowed in the list
     * {@link ExtProperty }
     * 
     * 
     */
    public List<ExtProperty> getExtProperty() {
        if (extProperty == null) {
            extProperty = new ArrayList<ExtProperty>();
        }
        return this.extProperty;
    }

    /**
     * Gets the value of the allowExecutorEmpty property.
     * 
     * @return
     *     possible object is
     *     {@link Boolean }
     *     
     */
    public boolean isAllowExecutorEmpty() {
        if (allowExecutorEmpty == null) {
            return true;
        } else {
            return allowExecutorEmpty;
        }
    }

    /**
     * Sets the value of the allowExecutorEmpty property.
     * 
     * @param value
     *     allowed object is
     *     {@link Boolean }
     *     
     */
    public void setAllowExecutorEmpty(Boolean value) {
        this.allowExecutorEmpty = value;
    }

    /**
     * Gets the value of the skipExecutorEmpty property.
     * 
     * @return
     *     possible object is
     *     {@link Boolean }
     *     
     */
    public boolean isSkipExecutorEmpty() {
        if (skipExecutorEmpty == null) {
            return false;
        } else {
            return skipExecutorEmpty;
        }
    }

    /**
     * Sets the value of the skipExecutorEmpty property.
     * 
     * @param value
     *     allowed object is
     *     {@link Boolean }
     *     
     */
    public void setSkipExecutorEmpty(Boolean value) {
        this.skipExecutorEmpty = value;
    }

    /**
     * Gets the value of the testNotifyType property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getTestNotifyType() {
        if (testNotifyType == null) {
            return "mail";
        } else {
            return testNotifyType;
        }
    }

    /**
     * Sets the value of the testNotifyType property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setTestNotifyType(String value) {
        this.testNotifyType = value;
    }

    /**
     * Gets the value of the skipRules property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getSkipRules() {
        return skipRules;
    }

    /**
     * Sets the value of the skipRules property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setSkipRules(String value) {
        this.skipRules = value;
    }

    /**
     * Gets the value of the dateType property.
     * 
     * @return
     *     possible object is
     *     {@link String }
     *     
     */
    public String getDateType() {
        if (dateType == null) {
            return "worktime";
        } else {
            return dateType;
        }
    }

    /**
     * Sets the value of the dateType property.
     * 
     * @param value
     *     allowed object is
     *     {@link String }
     *     
     */
    public void setDateType(String value) {
        this.dateType = value;
    }

    /**
     * Gets the value of the dueTime property.
     * 
     * @return
     *     possible object is
     *     {@link Integer }
     *     
     */
    public int getDueTime() {
        if (dueTime == null) {
            return  0;
        } else {
            return dueTime;
        }
    }

    /**
     * Sets the value of the dueTime property.
     * 
     * @param value
     *     allowed object is
     *     {@link Integer }
     *     
     */
    public void setDueTime(Integer value) {
        this.dueTime = value;
    }

	public String getDoneDataVersion() {
		if(doneDataVersion == null){
			return "history";
		}
		return doneDataVersion;
	}

	public void setDoneDataVersion(String doneDataVersion) {
		this.doneDataVersion = doneDataVersion;
	}

    public String getCheckLimit() {
        return checkLimit;
    }

    public void setCheckLimit(String checkLimit) {
        this.checkLimit = checkLimit;
    }

    public String getStartLimit() {
        return startLimit;
    }

    public void setStartLimit(String startLimit) {
        this.startLimit = startLimit;
    }
}
