/**
 * 流程表单
 */
@skipFakeData
@importData
@extendAbstractAuditingEntity
@moduleName(workflow)
@skipComponent(listPage-listComponent)
@skipMobile
entity ProcessFormConfig {
    formKey String maxlength(100) /** 流程Id */
    formName String maxlength(100) /** 名称 */
    formJson TextBlob /** 表单配置 */
}

/**
* 流程模型
*/
@skipFakeData
@skipServer
@moduleName(workflow)
@skipMobile
entity FlowableModel {
    @id
    id String maxlength(64) /** 模型ID */
    name String maxlength(100) /** 模型名称 */
    key String maxlength(100) /** 模型Key */
    version Integer /** 版本 */
    metaInfo String maxlength(500) /** 备注说明 */
    createTime ZonedDateTime /** 创建时间 */
    lastUpdateTime ZonedDateTime /** 更新时间 */
}

/**
* 业务规则
*/
@skipFakeData
@skipServer
@skipMenu
@moduleName(workflow)
@skipMobile
entity ActBusinessRule {
    beanName String maxlength(100) /** bean名称 */
    method String maxlength(100) /** 方法名 */
    param String maxlength(500) /** 参数 */
    remark String maxlength(500) /** 备注 */
}

/**
*  业务状态
*/
@skipFakeData
@skipServer
@moduleName(workflow)
@skipMenu
@skipMobile
entity ActBusinessStatus {
    @id
    id String /** 主键 */
    businessKey String maxlength(100) /** 业务ID */
    processInstanceId String maxlength(100) /** 流程实例ID */
    status String maxlength(100) /** 状态 */
    tableName String maxlength(100) /** 表名 */
    suspendedReason String maxlength(100) /** 挂起流程原因 */
}

/**
 * 流程分类
 */
@skipFakeData
@skipServer
@moduleName(workflow)
entity ActCategory {
    categoryName String maxlength(100) /** 分类名称 */
    orderNum Long /** 排序 */
}

relationship OneToMany {
    /** 子分类 */
    ActCategory{children(categoryName)}
    to
    /** 父节点 */
    ActCategory{parent(categoryName)}
}

/**
*  网关条件
*/
@skipFakeData
@skipServer
@skipMenu
@moduleName(workflow)
@skipMobile
entity ActGatewayCondition {
    remark String maxlength(100) /** 分类名称 */
    conditionJson TextBlob /** 条件 */
    processDefinitionKey String /** 流程定义key */
}

/**
*  网关条件关联网关节点
*/
@skipFakeData
@skipServer
@skipMenu
@moduleName(workflow)
@skipMobile
entity ActGatewayConditionRelate {
    processDefinitionId String maxlength(100) /** 流程定义id */
    sequenceId String /** 连线id */
    gatewayConditionId Long /** 网关条件id */
}

/**
*  流程节点人员设置
*/
@skipFakeData
@skipServer
@skipMenu
@skipMobile
@moduleName(workflow)
entity ActNodeAssignee {
    @id
    id String maxlength(100) /** 主键 */
    processDefinitionId String required /** 流程定义id */
    /**
     * 选择方式
     * role按角色选人  dept按部门选人  person自定义选人
     */
    chooseWay String
    nodeId String /** 流程节点id */
    sequenceId String required /** 连线id */
    nodeName String required /** 流程节点名称 */
    assignee String /** 审批人员 */
    assigneeId String /** 审批人员id */
    businessRuleId Long /** 业务规则id */
    isShow Boolean required /** 是否弹出选人 */
    multiple Boolean required /** 是否会签 */
    multipleColumn String required /** 会签保存人员KEY值 */
    isBack Boolean required /** 是否可退回到当前节点,0不可退回当前节点,1可退回当前节点 */
    isDelegate Boolean required /** 是否可委托 */
    isTransmit Boolean required /** 是否可转办 */
    isCopy Boolean required /** 是否可抄送 */
    addMultiInstance Boolean required /** 是否可加签 */
    deleteMultiInstance Boolean required /** 是否可减签 */
    taskListener String /** 任务监听 */
    /** 自动审批
     *,当前节点自动办理,下一节点不可弹窗选人
     */
    autoComplete Boolean required
    fieldListJson String /** 字段列表 */
    /** 当前节点是否显示驳回
     *,0不显示驳回按钮,1显示驳回按钮
     */
    showBack Boolean required
}

/**
*  流程定义设置
*/
@skipFakeData
@skipServer
@skipMenu
@moduleName(workflow)
@skipMobile
entity ActProcessDefSetting {
    processDefinitionId String maxlength(100) /** 流程定义id */
    processDefinitionKey String /** 流程定义key */
    processDefinitionName String /** 流程定义名称 */
    tableName String /** 表名 */
    componentName String /** 组件名称 */
    remark String /** 备注 */
    /** 是否审批节点选人
     * true 为审批节点选人 false 为申请人选择全部人员
     */
    defaultProcess Boolean
    taskListener String /** 任务监听 */
}

/**
*  流程节点人员
*/
@skipFakeData
@skipServer
@skipMenu
@skipMobile
@moduleName(workflow)
entity ActProcessNodeAssignee {
    processDefinitionId String required /** 流程定义id */
    processInstanceId String required /** 流程实例id */
    nodeId String required /** 节点id */
    assignee String required /** 办理人 */
    assigneeId String required /** 办理人id */
    nodeName String required /** 节点名称 */
    multiple Boolean required /** 是否会签 */
    multipleColumn String /** 会签保存人员KEY值 */
}

/**
*  流程节点人员
*/
@skipFakeData
@skipServer
@skipMenu
@moduleName(workflow)
@skipMobile
entity ActTaskNode {
    @id
    id String required /** 主键 */
    nodeId String required /** 节点id */
    nodeName String required /** 节点名称 */
    instanceId String required /** 流程实例id */
    orderNo Integer /** 排序 */
    isBack Boolean required /** 是否可退回 */
    taskType String required /** 节点类型 */
    assignee String /** 审批人 */
}
/**
*  网关变量条件
*/
@skipFakeData
@skipServer
@skipMenu
@moduleName(workflow)
@skipMobile
entity ActVariableCondition {
    variableName String required /** 变量名称 */
    variable String required /** 变量 */
    symbol String required /** 操作符 */
    processDefinitionKey String /** 流程定义key */
    isStr Boolean required /** 是否字符串 */
}

/**
 * Many to one relationship.
 */
relationship ManyToOne {
    /** 业务类别 */
    ProcessFormConfig{businessType(name)}
    to
    BusinessType with builtInEntity
}

service all with serviceClass
filter *
dto * with mapstruct
paginate * with pagination
clientRootFolder ProcessFormConfig, ActVariableCondition, FlowableModel, ActBusinessRule, ActBusinessStatus, ActCategory, ActGatewayCondition, ActGatewayConditionRelate, ActNodeAssignee, ActProcessDefSetting, ActProcessNodeAssignee, ActTaskNode, ActVariableCondition with workflow
//<%_ if (searchEngine === 'elasticsearch') { _%>
search ProcessFormConfig with elasticsearch
//<%_ } _%>
