<?xml version="1.0" encoding="utf-8"?>
<EntityModel xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:schemaLocation="https://newlifex.com https://newlifex.com/Model202407.xsd" Document="https://newlifex.com/xcode/model" xmlns="https://newlifex.com/Model202407.xsd">
  <Option>
    <!--类名模板。其中{name}替换为Table.Name，如{name}Model/I{name}Dto等-->
    <ClassNameTemplate />
    <!--显示名模板。其中{displayName}替换为Table.DisplayName-->
    <DisplayNameTemplate />
    <!--基类。可能包含基类和接口，其中{name}替换为Table.Name-->
    <BaseClass>Entity</BaseClass>
    <!--命名空间-->
    <Namespace>AntJob.Data.Entity</Namespace>
    <!--输出目录-->
    <Output>Entity</Output>
    <!--是否使用中文文件名。默认false-->
    <ChineseFileName>False</ChineseFileName>
    <!--用于生成Copy函数的参数类型。例如{name}或I{name}-->
    <ModelNameForCopy />
    <!--带有索引器。实现IModel接口-->
    <HasIModel>False</HasIModel>
    <!--可为null上下文。生成String?等-->
    <Nullable>False</Nullable>
    <!--数据库连接名-->
    <ConnName>Ant</ConnName>
    <!--模型类模版。设置后生成模型类，用于接口数据传输，例如{name}Model-->
    <ModelClass />
    <!--模型类输出目录。默认当前目录的Models子目录-->
    <ModelsOutput>.\Models\</ModelsOutput>
    <!--模型接口模版。设置后生成模型接口，用于约束模型类和实体类，例如I{name}-->
    <ModelInterface />
    <!--模型接口输出目录。默认当前目录的Interfaces子目录-->
    <InterfacesOutput>.\Interfaces\</InterfacesOutput>
    <!--用户实体转为模型类的模型类。例如{name}或{name}DTO-->
    <ModelNameForToModel />
    <!--命名格式。Default/Upper/Lower/Underline-->
    <NameFormat>Default</NameFormat>
    <!--魔方区域显示名-->
    <DisplayName />
    <!--魔方控制器输出目录-->
    <CubeOutput />
  </Option>
  <Tables>
    <Table Name="App" Description="应用系统。管理数据计算作业的应用模块，计算作业隶属于某个应用">
      <Columns>
        <Column Name="ID" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
        <Column Name="Name" DataType="String" Master="True" Nullable="False" Description="名称。应用英文名" />
        <Column Name="DisplayName" DataType="String" Description="显示名。应用中文名" />
        <Column Name="Secret" DataType="String" Description="密钥。一般不设置，应用默认接入" />
        <Column Name="Category" DataType="String" Description="类别" />
        <Column Name="Version" DataType="String" Description="版本" />
        <Column Name="CompileTime" DataType="DateTime" Description="编译时间" />
        <Column Name="Enable" DataType="Boolean" Description="启用" />
        <Column Name="JobCount" DataType="Int32" Description="作业数。该应用下作业个数" />
        <Column Name="MessageCount" DataType="Int32" Description="消息数。该应用下消息条数" />
        <Column Name="ManagerId" DataType="Int32" Map="XCode.Membership.User@ID@Name" Description="管理人。负责该应用的管理员" />
        <Column Name="Manager" DataType="String" Description="管理者" />
        <Column Name="CreateUserID" DataType="Int32" Description="创建人" Category="扩展" />
        <Column Name="CreateUser" DataType="String" Description="创建者" Category="扩展" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
        <Column Name="CreateIP" DataType="String" Description="创建地址" Category="扩展" />
        <Column Name="UpdateUserID" DataType="Int32" Description="更新人" Category="扩展" />
        <Column Name="UpdateUser" DataType="String" Description="更新者" Category="扩展" />
        <Column Name="UpdateTime" DataType="DateTime" Description="更新时间" Category="扩展" />
        <Column Name="UpdateIP" DataType="String" Description="更新地址" Category="扩展" />
        <Column Name="Remark" DataType="String" Length="500" Description="备注" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="Name" Unique="True" />
      </Indexes>
    </Table>
    <Table Name="AppOnline" Description="应用在线。各个数据计算应用多实例在线">
      <Columns>
        <Column Name="ID" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
        <Column Name="AppID" DataType="Int32" Map="App@Id@$" Description="应用" />
        <Column Name="Instance" DataType="String" Description="实例。IP加端口" />
        <Column Name="Client" DataType="String" Description="客户端。IP加进程" />
        <Column Name="Name" DataType="String" Master="True" Description="名称。机器名称" />
        <Column Name="ProcessId" DataType="Int32" Description="进程。进程Id" />
        <Column Name="Version" DataType="String" Description="版本。客户端" />
        <Column Name="CompileTime" DataType="DateTime" Description="编译时间" />
        <Column Name="Server" DataType="String" Description="服务端。客户端登录到哪个服务端，IP加端口" />
        <Column Name="Enable" DataType="Boolean" Description="启用。是否允许申请任务" />
        <Column Name="Tasks" DataType="Int32" Description="任务数" />
        <Column Name="Total" DataType="Int64" Description="总数" />
        <Column Name="Success" DataType="Int64" Description="成功" />
        <Column Name="Error" DataType="Int64" Description="错误" />
        <Column Name="Cost" DataType="Int64" ItemType="TimeSpan" Description="耗时。执行任务总耗时，秒" />
        <Column Name="Speed" DataType="Int64" Description="速度。每秒处理数" />
        <Column Name="LastKey" DataType="String" Description="最后键" />
        <Column Name="TraceId" DataType="String" Length="200" Description="追踪。链路追踪，用于APM性能追踪定位，还原该事件的调用链" Category="扩展" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
        <Column Name="CreateIP" DataType="String" Description="创建地址" Category="扩展" />
        <Column Name="UpdateTime" DataType="DateTime" Description="更新时间" Category="扩展" />
        <Column Name="UpdateIP" DataType="String" Description="更新地址" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="Instance" Unique="True" />
        <Index Columns="Client" />
        <Index Columns="AppID" />
      </Indexes>
    </Table>
    <Table Name="AppHistory" Description="应用历史。数据计算应用的操作历史">
      <Columns>
        <Column Name="Id" DataType="Int64" PrimaryKey="True" DataScale="time" Description="编号" />
        <Column Name="AppID" DataType="Int32" Map="App@ID@$" Description="应用" />
        <Column Name="Name" DataType="String" Master="True" Description="名称" />
        <Column Name="Action" DataType="String" Description="操作" />
        <Column Name="Success" DataType="Boolean" Description="成功" />
        <Column Name="Version" DataType="String" Description="版本" />
        <Column Name="CompileTime" DataType="DateTime" Description="编译时间" />
        <Column Name="Server" DataType="String" Description="服务端。客户端登录到哪个服务端，IP加端口" />
        <Column Name="TraceId" DataType="String" Length="200" Description="追踪。链路追踪，用于APM性能追踪定位，还原该事件的调用链" Category="扩展" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
        <Column Name="CreateIP" DataType="String" Description="创建地址" Category="扩展" />
        <Column Name="Remark" DataType="String" Length="2000" Description="内容" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="AppID,Action" />
      </Indexes>
    </Table>
    <Table Name="Job" Description="作业。数据计算逻辑的主要单元，每个作业即是一个业务逻辑">
      <Columns>
        <Column Name="ID" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
        <Column Name="AppID" DataType="Int32" Map="App@ID@$" Description="应用" />
        <Column Name="Name" DataType="String" Master="True" Length="100" Description="名称" />
        <Column Name="ClassName" DataType="String" Length="100" Description="类名。支持该作业的处理器实现" />
        <Column Name="DisplayName" DataType="String" Description="显示名" />
        <Column Name="Enable" DataType="Boolean" Description="启用" />
        <Column Name="Mode" DataType="Int32" Description="调度模式。定时调度只要达到时间片开头就可以跑，数据调度要求达到时间片末尾才可以跑" Type="JobModes" />
        <Column Name="Cron" DataType="String" Description="执行频次。定时调度的Cron表达式" />
        <Column Name="HistoryCron" DataType="String" Description="回刷数据。定时调度回刷数据时使用的Cron表达式，一般分钟或小时级作业，回刷历史数据时，可能每天只需要跑一次" />
        <Column Name="Topic" DataType="String" Description="主题。消息调度时消费的主题" />
        <Column Name="MessageCount" DataType="Int32" Description="消息数" />
        <Column Name="DataTime" DataType="DateTime" Description="数据时间。下一次处理数据的时间，默认从当前时间开始" />
        <Column Name="End" DataType="DateTime" Description="结束。到该时间停止调度作业，默认不设置时永不停止" />
        <Column Name="Step" DataType="Int32" ItemType="TimeSpan" Description="步进。切分任务的时间区间，秒" />
        <Column Name="BatchSize" DataType="Int32" Description="批大小。数据调度每次抽取数据的分页大小，或消息调度每次处理的消息数，定时调度不适用" />
        <Column Name="Offset" DataType="Int32" ItemType="TimeSpan" Description="偏移。距离AntServer当前时间的秒数，避免因服务器之间的时间误差而错过部分数据，秒" />
        <Column Name="MaxTask" DataType="Int32" Description="并行度。每个实例允许多少个任务并行处理，多执行端时叠加" Category="控制参数" />
        <Column Name="MaxError" DataType="Int32" Description="最大错误。连续错误达到最大错误数时停止" Category="控制参数" />
        <Column Name="MaxRetry" DataType="Int32" Description="最大重试。默认10次，超过该次数后将不再重试" Category="控制参数" />
        <Column Name="MaxTime" DataType="Int32" ItemType="TimeSpan" Description="最大执行时间。默认600秒，超过该时间则认为执行器故障，将会把该任务分配给其它执行器" Category="控制参数" />
        <Column Name="MaxRetain" DataType="Int32" Description="保留。任务项保留天数，超过天数的任务项将被删除，默认30天" Category="控制参数" />
        <Column Name="MaxIdle" DataType="Int32" ItemType="TimeSpan" Description="最大空闲时间。默认3600秒，超过该时间不更新则认为应用程序故障，系统触发告警" Category="控制参数" />
        <Column Name="ErrorDelay" DataType="Int32" ItemType="TimeSpan" Description="错误延迟。默认60秒，出错延迟后重新发放" Category="控制参数" />
        <Column Name="Deadline" DataType="DateTime" Description="最后期限。超过该时间后，任务将不再执行" Category="控制参数" />
        <Column Name="Total" DataType="Int64" Description="总数。任务处理的总数据，例如数据调度抽取得到的总行数，定时调度默认1" Category="统计" />
        <Column Name="Success" DataType="Int64" Description="成功。成功处理的数据，取自于Handler.Execute返回值，或者ProcessItem返回true的个数" Category="统计" />
        <Column Name="Error" DataType="Int32" Description="错误" Category="统计" />
        <Column Name="Times" DataType="Int32" Description="次数" Category="统计" />
        <Column Name="Speed" DataType="Int32" Description="速度" Category="统计" />
        <Column Name="LastStatus" DataType="Int32" Description="最后状态。最后一次状态" Category="统计" Type="JobStatus" />
        <Column Name="LastTime" DataType="DateTime" Description="最后时间。最后一次时间" Category="统计" />
        <Column Name="QuietTime" DataType="String" Description="免打扰。设置免打扰时间段，该时间段内不生成作业任务，例如09:00-12:00,13:00-18:00" />
        <Column Name="Data" DataType="String" Length="-1" Description="附加数据。执行作业任务时附带的数据，可以是Json配置，也可以是Sql模板或C#模板" />
        <Column Name="CreateUserID" DataType="Int32" Description="创建人" Category="扩展" />
        <Column Name="CreateUser" DataType="String" Description="创建者" Category="扩展" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
        <Column Name="CreateIP" DataType="String" Description="创建地址" Category="扩展" />
        <Column Name="UpdateUserID" DataType="Int32" Description="更新人" Category="扩展" />
        <Column Name="UpdateUser" DataType="String" Description="更新者" Category="扩展" />
        <Column Name="UpdateTime" DataType="DateTime" Description="更新时间" Category="扩展" />
        <Column Name="UpdateIP" DataType="String" Description="更新地址" Category="扩展" />
        <Column Name="Remark" DataType="String" Length="2000" Description="备注" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="AppID,Name" Unique="True" />
      </Indexes>
    </Table>
    <Table Name="JobTask" Description="作业任务。计算作业在执行过程中生成的任务实例，具有该次执行所需参数">
      <Columns>
        <Column Name="ID" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
        <Column Name="AppID" DataType="Int32" Map="App@ID@$" Description="应用" />
        <Column Name="JobID" DataType="Int32" Map="Job@ID@$" Description="作业" />
        <Column Name="Client" DataType="String" Description="客户端。IP加进程" />
        <Column Name="DataTime" DataType="DateTime" Master="True" DataScale="time" Description="数据时间。大于等于，定时调度到达该时间点后触发（可能有偏移量），消息调度不适用" />
        <Column Name="End" DataType="DateTime" Description="结束。小于不等于，数据调度到达该时间点后触发（可能有偏移量），消息调度不适用" />
        <Column Name="BatchSize" DataType="Int32" Description="批大小。数据调度每次抽取数据的分页大小，或消息调度每次处理的消息数，定时调度不适用" />
        <Column Name="Total" DataType="Int32" Description="总数。任务处理的总数据，例如数据调度抽取得到的总行数，定时调度默认1" />
        <Column Name="Success" DataType="Int32" Description="成功。成功处理的数据，取自于Handler.Execute返回值，或者ProcessItem返回true的个数" />
        <Column Name="Error" DataType="Int32" Description="错误" />
        <Column Name="Times" DataType="Int32" Description="次数" />
        <Column Name="Speed" DataType="Int32" Description="速度。每秒处理数，执行端计算" />
        <Column Name="Cost" DataType="Int32" ItemType="TimeSpan" Description="耗时。秒，执行端计算的执行时间" />
        <Column Name="FullCost" DataType="Int32" ItemType="TimeSpan" Description="全部耗时。秒，从任务发放到执行完成的时间" />
        <Column Name="Status" DataType="Int32" Description="状态" Type="JobStatus" />
        <Column Name="MsgCount" DataType="Int32" Description="消息。消费消息数" />
        <Column Name="Server" DataType="String" Description="服务器" />
        <Column Name="ProcessID" DataType="Int32" Description="进程" />
        <Column Name="Key" DataType="String" Description="最后键。Handler内记录作为样本的数据" />
        <Column Name="Data" DataType="String" Length="-1" Description="数据。可以是Json数据，比如StatID" />
        <Column Name="TraceId" DataType="String" Length="200" Description="追踪。链路追踪，用于APM性能追踪定位，还原该事件的调用链" Category="扩展" />
        <Column Name="CreateIP" DataType="String" Description="创建地址" Category="扩展" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
        <Column Name="UpdateIP" DataType="String" Description="更新地址" Category="扩展" />
        <Column Name="UpdateTime" DataType="DateTime" Description="更新时间" Category="扩展" />
        <Column Name="Remark" DataType="String" Length="500" Description="备注" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="JobID,DataTime" />
        <Index Columns="JobID,CreateTime" />
        <Index Columns="JobID,UpdateTime" />
        <Index Columns="AppID,Client,Status" />
      </Indexes>
    </Table>
    <Table Name="JobError" Description="作业错误。计算作业在执行过程中所发生的错误">
      <Columns>
        <Column Name="ID" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
        <Column Name="AppID" DataType="Int32" Map="App@ID@$" Description="应用" />
        <Column Name="JobID" DataType="Int32" Map="Job@ID@$" Description="作业" />
        <Column Name="TaskID" DataType="Int32" Map="JobTask@ID@$" Description="作业项" />
        <Column Name="Client" DataType="String" Description="客户端。IP加进程" />
        <Column Name="DataTime" DataType="DateTime" Description="数据时间。大于等于" />
        <Column Name="End" DataType="DateTime" Description="结束。小于，不等于" />
        <Column Name="Data" DataType="String" Length="2000" Description="数据" />
        <Column Name="Server" DataType="String" Description="服务器" />
        <Column Name="ProcessID" DataType="Int32" Description="进程" />
        <Column Name="TraceId" DataType="String" Length="200" Description="追踪。链路追踪，用于APM性能追踪定位，还原该事件的调用链" Category="扩展" />
        <Column Name="CreateIP" DataType="String" Description="创建地址" Category="扩展" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
        <Column Name="UpdateIP" DataType="String" Description="更新地址" Category="扩展" />
        <Column Name="UpdateTime" DataType="DateTime" Description="更新时间" Category="扩展" />
        <Column Name="Remark" DataType="String" Length="2000" Description="备注" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="AppID,ID" />
        <Index Columns="JobID,ID" />
      </Indexes>
    </Table>
    <Table Name="AppMessage" Description="应用消息。消息调度，某些作业负责生产消息，供其它作业进行消费处理">
      <Columns>
        <Column Name="Id" DataType="Int64" PrimaryKey="True" DataScale="time" Description="编号" />
        <Column Name="AppID" DataType="Int32" Map="App@ID@$" Description="应用" />
        <Column Name="JobID" DataType="Int32" Map="Job@ID@$" Description="作业。生产消息的作业" />
        <Column Name="Topic" DataType="String" Description="主题。区分作业下多种消息" />
        <Column Name="Data" DataType="String" Length="2000" Description="数据。可以是Json数据，比如StatID" />
        <Column Name="DelayTime" DataType="DateTime" Description="延迟时间。延迟到该时间执行" />
        <Column Name="TraceId" DataType="String" Length="200" Description="追踪。链路追踪，用于APM性能追踪定位，还原该事件的调用链" Category="扩展" />
        <Column Name="CreateIP" DataType="String" Description="创建地址" Category="扩展" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
        <Column Name="UpdateIP" DataType="String" Description="更新地址" Category="扩展" />
        <Column Name="UpdateTime" DataType="DateTime" Description="更新时间" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="AppID,Topic,UpdateTime" />
        <Index Columns="AppID,Topic,DelayTime" />
      </Indexes>
    </Table>
  </Tables>
</EntityModel>