实体类型#
Administration.EntityTypes
“实体类型”页面提供对所有系统对象元数据的访问。
要打开特定实体类型,只需单击其名称即可,此时会显示实体类型详细信息。
主视图#
根据系统中许可的可选模块,主视图将显示以下部分或全部页面部分:
- 详细信息 - 显示有关实体类型的一般信息。
- 状态模型 - 显示与实体类型关联的状态模型的信息。
- 属性 - 显示属于实体类型的原生属性的信息。
- 特性 - 显示属于实体类型的特性的信息。
- 操作 - 显示属于实体类型的属性的信息。
- 操作属性 - 显示属于实体类型的操作属性的信息。
Warning
此页面仅供专家级用户使用。如果进行了不正确的更改,可能会造成系统无法正常工作。
每个实体都有四种不同类型的属性:
- 原生 - 该属性与主记录一同储存,并作为属性进行访问
- 自定义属性 - 该属性与主记录一同储存,但作为特性访问
- 属性 - 属性储存在单独的属性表中
- 操作属性 - 该属性储存在单独的特性表中,但仅可通过操作更新
以下重要规则适用:
- 原生属性只能在生成对象架构之前添加
-
自定义属性可以在生成对象后添加,可行方法包括:
- 直接在对象的“属性”选项卡中创建自定义属性
- 迁移一个现有特性,使其变为自定义属性
-
可以随时添加特性和操作属性
Warning
自定义属性会造成对象架构变更,这要求对实体执行“生成架构”操作。此操作可能需要很长时间才能完成,具体取决于实体的数据量。
创建实体类型#
EntityType.Create
要创建新的实体类型,按下“新建”,然后按照向导操作,如下所述。
步骤1 - 一般数据#
- 提供实体类型的名称。
- (可选)提供实体类型的描述。
- 选择对象是否为关系对象,如果是,请指定源实体和目标实体
- 指定更新时源和目标是否均已锁定(逻辑锁定)
- 如果实体为关系实体,并且标记为“可克隆”(请参阅屏幕中的复选框),则可以定义克隆行为:
- CopyIfSource,克隆关系源时克隆关系
- CopyIfSourceOrTarget,在克隆源实体和目标实体时克隆关系
- CopyIfTarget,克隆关系的目标时克隆关系
- NoCopy,关系未克隆(默认)
- 是否对实体进行分区
- 指定 - 仅适用于受到版本控制的对象,是否允许自动变更集。在这种情况下,有必要提供:
- 用于生成自动变更集名称的变更集名称生成器
- 选择变更集中包含的项目是否在批准后生效
- (可选)要与自动变更集关联的审批人角色,或者自动变更集的审批工作流
- 选择请求者与审批人是否应接收有关新版本的电子邮件通知
- 如果要强制实施实体的所有版本或仅特定类型,必须按照智能表ChangeSetApprovalContext中的配置,完成特定审批角色或审批工作流,请选中使用变更集审批上下文选项。
Info
如果未指定审批人角色或审批工作流,变更集将自动进行审批。
- 对于不受版本控制的实体,请指定在克隆时GUI是否应请求变更集。这是为了处理在受变更控制的智能表中引用不受版本控制的对象的情况。
- 指定新实体类型的附加属性:
- 实体是否需要唯一名称
-
实体数据是否复制到操作数据存储(ODS)
Info
如果更新此信息,则更改仅在运行“生成架构”过程后生效。
-
是否记录实体的历史记录
Info
如果更新此信息,则更改仅在运行“生成架构”过程后生效。
-
实体是否在“业务数据”页面组中可见
- 实体是否启用了物联网模块
- 无论实体是否具有版本控制,受到版本控制的对象均由全局部分(不带变更控制)和受到版本控制的部分(带变更控制)组成。
- 实体是否具有某个特性
- 实体是否包含操作属性
- 实体状态模型是否由系统管理
- 实体是否允许多个状态模型(所有实体类型都支持一个主状态模型)
-
实体是否允许使用条码ID进行标识。
Info
不能将自定义实体标记为系统实体,也无法标记该实体是否已获得许可。
-
输入实体的保留时间(以天为单位)。该实体类型的实例在终止后超过指定保留时间后,从联机数据库中清除。
- 如果实体类型需要特定的清除,则必须选择特定的清除类型并提供清除过程。选择“旁路”则代表不执行清除。默认情况下会选择常规清除。
- 定义在GUI中显示实体历史记录时使用的默认历史时间间隔(以天为单位),如果未指定,系统将使用180天。
- 对于属于关系的实体类型,可以定义访问级别,以定义关系在源或目标的创建或更新中是否可见。
- 按下创建以完成操作,新的实体类型将会创建。
管理实体类型属性#
EntityType.Edit
创建实体类型后,用户可以管理包含在实体类型定义中的属性列表。导航到主页的属性部分并按下管理按钮,此时将会显示一个向导,允许用户向实体类型添加新属性。
-
在左侧面板上,根据需要添加任意多个属性(按下网格右上角的进行添加,按以删除),为每个属性指定:
-
名称
- 描述(可选)
- 属性类型:
- 原生 - 该属性与主记录一同储存
- 引用类型 - None;EntityDefinition;EntityType;EntityVersion;Enum;LookupTable;LookupValue;如果引用类型不是None,则属性的具体引用也会有所不同
- 标量类型(数据类型);大小(仅适用于某些数据类型,如Varchar和NVarchar)和精度(仅适用于某些数据类型,如十进制)
- 默认值 - 如果有,必须与所选数据类型兼容
- 是否为数组(仅对属性有效)
- 一组标志:
- 是否启用
- 是否已编制索引
- 是否可报告,即在数据仓库中使用
- 属性是否为克隆时可编辑属性
- 是否为必需
- 是否启用历史记录(仅限属性,因为属性继承为实体设置的历史记录行为)
- 仅适用于带版本的实体:属性是属于对象的全局部分还是带版本的部分
-
(可选)验证范围 - 类似于“[start:end]”的字符串,用于指定开头和末尾之间的范围末尾的开括号可排除限值,例如:]1:10] 可排除数字1,但包括数字10。
Warning
十进制范围验证必须使用当前文化定义的十进制分隔符。
-
(可选)用于验证的验证正则表达式。有关正则表达式的详细信息,请单击此链接
- (可选)必须存在且消息类型为EntityType的本地化消息的键
- 适用于实体和模板的一组访问级别:
- 在创建或更新时是否为只读
- 在创建或更新时是否隐藏
Info
默认情况下,有一个系统属性列表,例如CreatedBy、CreatedOn,所有实体都必须具有这些属性且无法更改。
Info
如果实体受版本控制,受版本控制的属性将以斜体显示。
管理实体类型特性#
EntityType.Edit
这与添加新属性的过程类似,但克隆时可编辑复选框除外。只有在第一个屏幕中指定实体类型具有属性时,此屏幕才可用。创建实体类型后,用户可以管理包含在实体类型定义中的特性列表。导航到主页的特性部分并按下管理按钮,此时将会显示一个向导,允许用户向实体类型添加新特性。
- 在左侧面板上,根据需要添加任意多个特性(按下网格右上角的进行添加,按以删除),为每个特性指定:
- 名称
- 描述(可选)
- 属性类型:
- 特性 - 该特性储存在单独的特性记录中
- 数据组(可选)- 如果已定义,则只有该数据组的成员才能更新此特性
- 引用类型 - None;EntityDefinition;EntityType;EntityVersion;Enum;LookupTable;LookupValue;如果引用类型不是None
- 标量类型(数据类型);大小(仅适用于某些数据类型,如Varchar和NVarchar)和精度(仅适用于某些数据类型,如十进制)
- 在克隆时是否必须复制该特性
- 默认值 - 如果有,必须与所选数据类型兼容
- 是否为数组(仅对属性有效)
- 一组标志:
- 是否启用
- 是否已编制索引
- 是否可报告,即在数据仓库中使用
- 是否启用历史记录(仅限属性,因为属性继承为实体设置的历史记录行为)
- 仅适用于带版本的实体:属性是属于对象的全局部分还是带版本的部分
-
(可选)验证范围 - 类似于“[start:end]”的字符串,用于指定开头和末尾之间的范围末尾的开括号可排除限值,例如:]1:10] 可排除数字1,但包括数字10。
Warning
十进制范围验证必须使用当前文化定义的十进制分隔符。
-
(可选)用于验证的验证正则表达式。有关正则表达式的详细信息,请单击此链接
- (可选)必须存在且消息类型为EntityType的本地化消息的键
- 适用于实体和模板的一组访问级别:
- 在创建或更新时是否为只读
- 在创建或更新时是否隐藏
Info
新特性将立即可用。不必按生成架构。
管理实体类型操作#
EntityType.Edit
此步骤用于定义实体类型操作(方法)。
- 在左侧面板上,根据需要添加任意多个操作(按下网格右上角的进行添加,按以删除),为每个操作指定:
- 名称
- 描述
- 是否已启用操作的历史记录
- 操作完成后是否发布事件
- fabLive是否会订阅此事件的自动更新
Info
默认情况下,有一个不能更改的系统操作列表。
管理实体类型操作属性#
EntityType.Edit
这与添加新特性的过程类似。只有在第一个屏幕中指定实体类型具有操作属性时,此屏幕才可用。创建实体类型后,用户可以管理包含在实体类型定义中的操作特性列表。导航到主页的操作属性部分并按下管理按钮,此时将会显示一个向导,允许用户向实体类型添加新操作特性。
-
在左侧面板上,根据需要添加任意多个操作属性(按下网格右上角的进行添加,按以删除),为每个操作属性指定:
- 名称
- 描述
- 属性类型:
- 属性 - 属性储存在单独的属性表中
- 引用类型 - None;LookupValue;LookupTable;Enum;如果引用类型为LookupValue或Enum,则“引用”字段中属性的特定引用是如此。
- 标量类型(数据类型);大小(仅适用于某些数据类型,如Varchar和NVarchar)和精度(仅适用于某些数据类型,如十进制)
- 默认值 - 如果有
- 它是否为数组
- 一组标志:
- 是否启用
- 是否已编制索引
- 是否可报告,即在数据仓库中使用
- 是否已启用历史记录
- 验证范围 - 类似于“[start:end]”这种格式的字符串,用于指定开始和结束之间的范围。末尾的开括号可排除限值,例如:]1:10]不包括数字1。
- 验证表达式 - 验证是描述正则表达式的字符串。有关正则表达式的详细信息,请单击此链接
- (可选)必须存在且消息类型为EntityType的本地化消息的键
- 适用于实体和模板的一组访问级别:
- 在创建或更新时是否为只读
- 在创建或更新时是否隐藏
Info
默认情况下,有一个系统属性列表,例如CreatedBy、CreatedOn,所有实体都必须具有这些属性且无法更改。
了解实体类型访问级别#
实体类型的所有属性都必须定义访问级别。此访问级别负责确保相应的属性在需要时可见或更新。
访问级别可以使用下表的形式表示,其中每个字段描述了为给定属性设置适当true值的重要性。
| 查看 | 创建 | 更新 | |
|---|---|---|---|
| 只读 | 始终设置为true | 无法在创建时设置属性 | 无法更新属性 |
| 已隐藏 | 属性在实体页面中不可见 | 属性在“创建”向导中不可见 | 属性在“编辑”向导中不可见 |
Table: 实体类型属性的访问级别
Info
视图/只读单元格不相关,因为它由系统自动设置为true,不能通过访问级别值进行更改。
下图显示了实体类型的属性名称的访问级别:
请注意,该表显示了“查看”/“创建”/“更新”的信息,以便可以为实例(标记为“实体”)或模板(标记为“模板”)定义不同的信息。在“模板”的访问级别上设置的任何值(例如,“只读/创建”设置为true时),只有实体类型允许创建模板时,该访问级别才有效。
此外,所显示的信息表明,对于实体和模板,“只读/查看”字段均设置为true。此外,字段“只读/更新”也设置为true,表示无法为模板或实体更新该属性名称。
Info
对于关系,行为也是相似的,但访问级别由关系(而非属性)定义,它用于使用与上面所示的类似直观结构来描述关系,但使用“源”取代“实体”,使用“目标”取代“模板”。
生成任意实体类型架构#
EntityType.GenerateSchema
在以下情况下,必须为实体生成架构:
- (首次)创建实体
- 添加(或修改)新的自定义属性,或将现有特性更改为自定义属性
Info
仅在添加或编辑“实体类型”特性时,不需要为实体生成架构。
创建实体类型后,若要实际生成该类型,需要按下生成架构按钮(下图)。务必先在测试系统中执行此操作!添加或更改新的自定义属性时,还必须执行生成架构操作。创建特性时不需要运行生成架构。
要生成实体类型(架构和.Net装配),必须按 下生成架构按钮。
Info
新的实体类型架构将在联机数据库(架构UserDataModel)中创建,并将自动复制到操作数据储存(ODS)系统。
这将创建处理新实体持久性所需的所有数据库表。此外,还将生成C#对象(业务对象),用于新服务或服务流程。下面的类图图片中展示了与cmFoundation实体类型对应的C#对象的一个示例。
将生成的.Net装配文件的名称是Cmf.Custom.BusinessObjects.<EntityTypeName>.dll。.dll文件将保存在接收请求的系统中运行凯睿德制造软件主机进程的用户的%TEMP%文件夹中(要确切了解%TEMP%位置,请在命令行中键入“echo %TEMP%”)。请注意,如果系统在网络负载平衡(NLB)群集上运行,则随机选择执行请求的服务器。dll文件也将复制到主机数据库。
如果在主机的app.config中将变量AssemblyDeploy设置为true,则会向所有服务器发布多播消息,以便将装配部署到各服务器的主机路径。如果变量AssemblyDeploy设置为false,且变量AssemblyCopy设置为true,则新装配只会在重新启动后复制到主机路径。
使自定义实体在GUI中可用#
凯睿德制造为所有实体类型提供了默认的基本GUI。为了使新实体类型在GUI中可用,有必要将生成的.dll文件复制到每个应用程序服务器的主机路径(请参阅上文有关如何自动将其部署到所有应用程序服务器的部分)
Warning
必须在所有应用程序服务器中执行这些步骤。
Warning
必须刷新(重新加载)GUI,新的实体类型才会出现在GUI的“业务数据”部分中。
Warning
请确保实体类型定义的属性“在业务数据中可见”设置为true。








