Data Relationship Management 对象

下面将介绍 Oracle Data Relationship Management 对象及其方法和属性。

SysObject

会自动创建一个称为 Sys 的 SysObject。此对象在所有上下文中均可用,它提供常规函数以及有关 Data Relationship Management 应用程序的信息。此对象没有属性。

表 12-9 SysObject 方法

名称 说明

FormattedDate (value, formatString)

按照公式系统规则设置日期的格式。用于实现向后兼容,可精确匹配旧公式的属性。

  • value 必须是日期对象或有效的日期时间字符串

  • formatString 必须是有效的格式字符串(请参阅 "FormattedDate" 函数)

GetNextID(key)

返回指定字符串键值的下一个可用整数 ID。

GetPropDef(abbrev)

针对给定的属性名称返回 PropDefObject。此名称必须是完全限定名称。

GetRequestByID(int)

按 ID 返回工作流请求。

GetSysPrefValue(abbrev)

返回给定系统首选项的值(例如 HierNodeSeparator)

InRange(dataType, input, min, max, minExclusive, maxExclusive)

对应于公式函数 InRange。必需参数为 dataType、input 和 min。

IsNodeAbove(ancestor, child)

如果祖先在层次中位于子代之上,则返回 True。如果参数不是 LocalNodeObject,或者不在同一个层次中,则返回 False。

IsNodeBelow(descendant, parent)

如果后代在层次中位于父代之下,则返回 True。如果参数不是 LocalNodeObject,或者不在同一个层次中,则返回 False。

RunFormula(node, propDef, formulaString)

运行 Data Relationship Management 公式并返回字符串结果

  • node 为 NodeObject 或 LocalNodeObject。当在 NodeObject 中传递公式字符串时,该公式字符串不能引用本地属性,否则会出错。传递 LocalNodeObject 时,您可以引用所有可用的全局属性和本地属性。

  • propDef – 某些公式函数需要有属性定义才能正确解析或执行。使用这些函数时,您必须提供属性定义。一般而言,属性定义特征(如级别、全局与本地以及类型)必须匹配,但无需是 formulaString 所针对的实际属性。它们可以不相关。在大部分公式中,您可以为此参数传递空值。语法为 Sys.GetPropDef(abbrev)。例如:

    Sys.RunFormula(node, Sys.GetPropDef("Custom.MyProp1"), "Concat(Prop value ', PropValue(Custom.MyProp2),' ,is, ,valid)");
  • formulaString 是旧的 Data Relationship Management 公式;空格被视为此公式的文字部分,因此必要时必须删除空格。

    注意:此操作并不是最佳做法,应仅在需要时使用,以实现与旧行为的完全匹配。使用此方法时性能会降低。

PropDefObject

此对象没有方法。

表 12-10 PropDefObject 属性

名称 说明

Abbrev

属性定义名称(包括完全限定命名空间)

Cascade

如果属性值是继承的,则为 True

ColumnWidth

默认导出列宽

DataType

DataType 枚举值,例如 DataType.String(请参阅“枚举常量”)

Descr

说明

DefaultValue

属性定义的默认值。类型取决于属性定义的数据类型。

EditorLabel

标签

Global

如果属性为全局节点属性,则为 True

Hidden

如果属性在属性网格中是隐藏的,则为 True

ID

ID

Level

PropLevel 枚举值,例如 PropLevel.Node(请参阅“枚举常量”)

List

如果属性允许用户从值列表中进行选择,则为 True

ListValues

由多个值组成的数组,用户可从中进行选择

LookupValues

查找属性的查找键值对。使用此数组中对象的 Key 和 Value 属性。

MaxValue

最大值

MinValue

最小值

Namespace

属性定义的命名空间

PropType

PropType 枚举值,例如 PropType.Defined(请参阅“枚举常量”)

PropClass

派生程序类(Formula 或 Script)

ReadOnly

如果属性为只读(例如 Core stats 属性),则为 True

VersionObject

表 12-11 VersionObject 属性

名称 说明

Abbrev

名称

Descr

说明

HierCount

层次数

ID

ID

NodeCount

节点数

表 12-12 VersionObject 方法

名称 说明

GetHierarchies()

获取由该版本中当前用户可见的所有层次组成的数组

GetGlobalNodes()

获取由该版本中所有全局节点 (NodeObject) 组成的数组

GetOrphans()

获取由该版本中所有孤立项 (NodeObject) 组成的数组

HierByAbbrev(abbrev)

按名称获取 HierarchyObject

HierByID(id)

按 ID 获取 HierarchyObject

NodeByAbbrev(abbrev)

按名称获取 NodeObject

NodeByID(id)

按 ID 获取 NodeObject

NodeExists(abbrev)

如果存在使用给定名称的全局节点,则返回 True

Prop(abbrev)

获取该版本的给定属性的 NodePropObject

PropValue(abbrev)

获取该版本的给定属性的值。返回值类型取决于属性定义的数据类型。

HierarchyObject

表 12-13 HierarchyObject 属性

名称 说明

Abbrev

名称

Descr

说明

HierarchyUrl

层次 URL

ID

ID

NodeCount

层次中的节点数

SharedNodesEnabled

如果已启用共享节点,则为 True

TopNode

LocalNodeObject 顶级节点

Version

VersionObject

VersionAbbrev

版本名称

VersionID

版本的 ID

表 12-14 HierarchyObject 方法

名称 说明

NodeByAbbrev(abbrev)

按名称获取 NodeObject

NodeByID(id)

按 ID 获取 NodeObject

NodeExists(abbrev)

如果存在使用给定名称的本地节点,则返回 True

Prop(abbrev)

获取该版本的给定属性的 NodePropObject

PropValue(abbrev)

获取该版本的给定属性的值。返回值类型取决于属性定义的数据类型。

共有节点属性和方法

尽管 NodeObject 和 LocalNodeObject 的原型链不同,但是某些属性和方法是这两个对象共有的。

在各种情况下,值可能会因全局或本地上下文而有所不同,但均可针对该上下文返回正确的值。例如,针对 NodeObject 调用 GetChildren() 时,生成的数组将包含 NodeObject。在针对 LocalNodeObject 进行相同的调用时,生成的数组将包含 LocalNodeObject。

表 12-15 NodeObject 和 LocalNodeObject 的共有属性

名称 说明

Abbrev

Core.Abbrev

AddedBy

Core.AddedBy

AddedOn

Core.AddedOn

Changed

Core.Changed

ChangedBy

Core.ChangedBy

ChangedOn

Core.ChangedOn

ChildNodeCount

子节点数

Descr

Core.Descr

DomainAbbrev

Core.DomainAbbrev

DomainNodeAbbrev

Core.DomainNodeAbbrev

ID

Core.ID

Inactive

Core.Inactive

IsPrimary

如果节点为共享节点的主节点,则为 True;如果节点不是共享节点或者不是主节点,则为 False

IsShared

如果节点为共享节点,则为 True

Leaf

Core.Leaf

NodeApproved

Core.NodeApproved

Version

节点的所有者 VersionObject

VersionAbbrev

节点的版本名称

VersionID

节点的版本 ID

表 12-16 NodeObject 和 LocalNodeObject 的共有方法

名称 说明

GetChildren(sorted)

获取由此节点的直接子代组成的数组(可以选择对数组进行排序)。sorted 的默认值为 False。

GetDescendants(inclusive, sorted)

获取由此节点的后代组成的数组(可以选择包含此节点和/或对数组进行排序)。inclusive 的默认值为 True。sorted 的默认值为 False。

NodeByAbbrev(abbrev)

按名称获取 NodeObject

NodeByID(id)

按 ID 获取 NodeObject

NodeExists(abbrev)

如果存在使用给定名称的全局节点,则返回 True

Prop(abbrev)

获取该版本的给定属性的 NodePropObject

PropValue(abbrev)

获取该版本的给定属性的值。返回值类型取决于属性定义的数据类型。

LocalNodeObject

Oracle 建议您使用各种 xxxWith 函数定位层次中的其他节点。例如,执行 ChildrenWith 要比调用 GetChildren() 并迭代结果快得多。同样,执行 GetReferenceInHier 要比调用 GetReferences() 并迭代结果快得多且更易于使用。

表 12-17 LocalNodeObject 属性

名称 说明

GlobalNode

当前节点的全局 NodeObject

Hier

节点所在层次的 HierarchyObject

HierAbbrev

Core.HierAbbrev

HierID

Core.HierID

Level

表示层次中节点级别的数字

MissingPrimary

如果未找到主节点,则为 True

NodeUrl

节点 URL

Parent

此节点的父节点的 LocalNodeObject。如果是层次的顶级节点,则返回 Null。

ParentNodeAbbrev

父节点的名称

Primary

此共享节点的主节点。如果主节点不在此层次中,则返回出现主节点的第一个层次中的主节点。如果需要主节点所在的层次的列表,请对返回的主节点调用 GetReferences()。如果未能找到共享节点或主节点,则返回 null。

PrimaryNotInHier

如果主节点存在但不在此层次中,则为 True

表 12-18 LocalNodeObject 方法

名称 说明

AncestorsWith(func, maxResults, searchFromTop, inclusive)

在祖先链中搜索满足给定函数的节点。这是定位祖先的最快方法。返回由 LocalNodeObject 结果组成的数组。

  • func 必须为使用单个节点参数的函数,如果结果中包含节点,则返回 True;如果未通过测试,则返回 False。

  • maxResults 是可选的,默认值为 1。使用 0 可表示不受限制(满足条件的所有节点)。

  • searchFromTop 是可选的,默认值为 False。使用 True 可从层次的顶级开始。

  • inclusive 是可选的,默认值为 False。使用 True 可在潜在的匹配中包括当前节点(它必须通过测试)。

ChildrenWith(func, maxResults)

在节点的子代列表中搜索满足给定函数的节点。这是查找子代的最快方法。返回由 LocalNodeObject 结果组成的数组。

  • func 必须为使用单个节点参数的函数,如果结果中包含节点,则返回 True;如果未通过测试,则返回 False。

  • maxResults 是可选的,默认值为 1。使用 0 可表示不受限制(满足条件的所有子代)。

DescendantsWith(func, maxResults, inclusive, depthFirst)

在后代链中搜索满足给定函数的节点。这是查找后代的最快方法。返回由 LocalNodeObject 结果组成的数组。

  • func 必须为使用单个节点参数的函数,如果结果中包含节点,则返回 True;如果未通过测试,则返回 False。

  • maxResults 是可选的,默认值为 1。使用 0 可表示不受限制(满足条件的所有节点)。

  • inclusive 是可选的,默认值为 False。使用 True 可在潜在的匹配中包括当前节点(它必须通过测试)。

  • depthFirst 是可选的,默认值为 True。如果为 True,则会对每个分支进行全面检查(到其顶端),然后再返回树移至下一分支。如果为 False,则会首先检查节点的所有子代,然后检查每个子代的节点,以此类推。如果已经清楚地知道节点在树中的位置,则可通过在此处选择正确的值来大大加快搜索速度。

GetAncestorEnumerator()

获取枚举祖先节点的 NodeEnumeratorObject

GetAncestors(inclusive)

获取由 LocalNodeObject 祖先组成的数组

GetChildEnumerator(sorted)

获取枚举子节点的 NodeEnumeratorObject。如果 sorted 为 True,则将对子代进行排序。

GetDescendantEnumerator()

获取枚举后代节点的 NodeEnumeratorObject

GetImplicitly SharedDescendants(inclusive)

获取与此共享节点相关的主节点的子节点

GetInvertedLevel()

等同于 InvertedLevel 公式函数

GetReferences()

在出现此节点的所有层次中获取由引用此节点的 LocalNodeObject 组成的数组

GetReferenceInHier(hierAbbrev)

在给定层次中获取此节点的引用。如果层次不可访问或此节点不在该层次中,则结果将为 null。

NextSibling()

按排序顺序获取此节点的下一同级

PreviousSibling()

按排序顺序获取此节点的前一同级

SiblingsWith(func, maxResults, inclusive)

在节点的同级中搜索满足给定函数的节点。返回由 LocalNodeObject 结果组成的数组。

  • func 必须为使用单个节点参数的函数,如果结果中包含节点,则返回 True;如果未通过测试,则返回 False。

  • maxResults 是可选的,默认值为 1。使用 0 可表示不受限制(满足条件的所有祖先)。

  • inclusive 是可选的,默认值为 False。使用 True 可在潜在的匹配中包括当前节点(它必须通过测试)。

NodePropObject

表 12-19 NodePropObject 属性

名称 说明

Abbrev

属性定义的名称

ControllingHierarchy

此版本中属性定义的控制层次的 HierarchyObject。如果属性不是全局节点属性、没有控制层次或者找不到控制层次,则返回值将为 null。

Locked

如果值处于锁定状态,则为 True

Origin

PropOrigin 枚举值,例如 PropOrigin.Overridden(请参阅“枚举常量”)

Owner

与此值关联的对象(VersionObject、HierarchyObject、NodeObject 或 LocalNodeObject)

PropType

PropType 枚举值,例如 PropType.Defined(请参阅“枚举常量”)

StringValue

此属性的原始字符串值。如果是 Derived 或 RWDerived 属性,此值可能为属性定义默认值或覆盖的值。

Value

此属性的解释值(例如,对于 DataType.Float 和 DataType.Integer,此值将为 Number 对象)。并非所有数据类型都必须具有非字符串表示法。

表 12-20 NodePropObject 方法

名称 说明

GetPropDef()

获取节点属性的 PropDefObject

RangeListObject

RangeListObject 表示由多个值组成的 RangeList,可用于检查 RangeList 属性而无需手动解析字符串。还可构造新的 RangeListObject 以从相应数据类型的派生属性返回值。

构造函数示例

var x = new RangeListObject();
var y = new RangeListObject("1-10,20-25");
var z = new RangeListObject([{start:1, end:10},{start:20, end:25}]);

表 12-21 RangeListObject 构造函数参数

参数 可选 说明

ranges

True

用于初始化的范围值。此参数为可选。接受两种格式:

  • 数组 - 其中的每个元素均为一个具有指示范围的起始属性和结束属性的对象。数组中没有这些属性的所有对象都将被忽略。

  • 字符串 - 以逗号分隔的字符串条目列表。每个条目均包含以短划线 (-) 或等号 (=) 符号分隔的起始值和结束值。

表 12-22 RangeListObject 属性

名称 说明

Ranges

由对象组成的数组。每个对象均具有两个属性:

  • start - 范围条目的开始

  • end - 范围条目的结束

此属性为只读属性。要修改范围,请使用以下方法。

表 12-23 RangeListObject 方法

名称 说明

AddRange(start, end)

向范围列表添加新的范围。此方法可扩展现有范围条目或创建新的范围条目。要向列表中添加单个数字,请同时对 start 参数和 end 参数使用此数字。如有必要,可将这两个参数强制设为整数。

Contains(value)

如果值在范围列表中,则返回 True,否则将返回 False。

如有必要,可将 value 强制设为整数。

IsSupersetOf(range)

如果当前 RangeListObject 为给定 RangeListObject 的超集,则返回 True。传送其他类型的对象将出错。

RemoveRange(start, end)

从列表中删除一个范围。此删除操作可能会将现有范围条目拆分为两个,或删除整个条目。要从列表中删除单个数字,请同时对 start 参数和 end 参数使用此数字。如有必要,可将这两个参数强制设为整数。

NodeEnumeratorObject

通过 NodeEnumeratorObject 对节点列表执行操作效率更高。枚举器不会一次构建整个列表,而是根据需要一次仅获取一个节点。如果要查找的内容在列表的中间位置,则可弃用枚举器。返回由节点对象组成的数组的属性和方法必须立即构建整个数组,无论要访问的项目是否位于数组的结尾。

在开始处,枚举器得到的当前值为 null。必须调用 MoveNext() 才能使枚举器进入列表中的第一个节点。

注:

当需要从所有可能的匹配中仅查找少数几个节点并且只需迭代列表一次时,最好使用 With 方法,例如 AncestorsWithSiblingsWith 方法。如果需要循环祖先节点列表多次,或者已知道将需要大多数或所有祖先,则枚举器可能更快。

表 12-24 NodeEnumeratorObject 方法

名称 说明

GetCurrent()

当前节点(根据上下文确定是 NodeObject 还是 LocalNodeObject)。

MoveNext()

使枚举器进入下一节点。如果没有更多可枚举的节点,将返回 False。

ValidationObject

表 12-25 ValidationObject 属性

名称 说明

Abbrev

验证的名称(包括完全限定命名空间)

Descr

说明

EditorLabel

标签

Cascade

如果验证分配是继承的,则为 True

ValidationClass

验证类的名称

ValidationLevel

ValidationLevel 枚举值,例如 ValidationLevel.Node(请参阅“枚举常量”)。

ValidationType

ValidationType 枚举值,例如 ValidationType.Batch(请参阅“枚举常量”)。

验证脚本

  • 验证脚本返回包含名为 "success" 的属性的 JavaScript 对象。如果该脚本返回布尔值或非布尔值对象(例如,数字或字符串),则将使用 JavaScript 转换规则将其值转换为布尔值,然后分配给 success。该脚本可以选择在属性中返回命名为 "parameters" 的、由多个值组成的 JavaScript 数组。将通过字符串替代将数组值替代到验证的失败消息中。

  • 可以返回布尔值(True 或 False)。如果返回 True,则表明验证成功;否则表明验证失败。如果未返回值,则视为与返回 False 相同。

  • 如果返回的是非布尔值对象(例如数字或字符串),则会将该对象转换为布尔值再返回。将应用标准 JavaScript 转换。等于零的数字、空字符串以及 null 或未定义的对象将被解释为 false。其他所有值均为 true。

  • 如果返回包含命名为 "success" 的属性的复杂对象,则会将该 success 属性转换为布尔值,并用作验证的返回值。可以选择在属性中返回命名为 "parameters" 的、由多个值组成的数组。这是 JavaScript 数组对象,需要进行填充,然后用于参数化的失败消息中。将通过字符串替代将参数替代到验证的失败消息中。应返回与失败消息中的占位符相对应的正确数量的值。如果返回了额外的参数,将忽略该参数。如果未返回足够的参数,则缺失的参数将被视为空字符串。

RequestObject

RequestObject 表示监管请求,包括请求标题和项。“项”属性表示添加到请求的请求项的列表。一个重要的属性是“版本”属性,请求的目标版本包括其层次和节点,全部均可通过相关脚本对象访问。

表 12-26 RequestObject 属性

名称 说明

ID

ID

Title

请求的标题

Version

请求的目标版本

ModelName

请求的工作流模型

StageName

请求的当前阶段

StageType

WorkflowStageType 枚举值,例如 WorkflowStageType.Submit(请参阅“枚举常量”)

Status

WorkflowStatus 枚举值,例如 WorkflowStatus.Submitted(请参阅“枚举常量”)

Items

添加到请求的 RequestItemObject 的列表

RequestItemObject

RequestItemObject 表示监管请求的单个请求项,包括有关当前任务和要更新的节点的信息以及该项的详细信息(属性值)。通过“请求”属性可以访问项的全部请求对象,包括标题属性和其他项。

NodeNamePendingInRequest 方法用于确定与目标版本的其他正在进行的请求冲突的潜在节点名称,如果其他暂挂请求上的项包含同一节点名称的“添加”项,则返回 True。

表 12-27 RequestItemObject 属性

名称 说明

ItemID

项 ID

RequestID

请求 ID

Request

该项所属的请求对象

NodeName

要更新的节点的 Core.Abbrev

说明

要更新的节点的 Core.Descr

HierarchyName

要更新的节点的层次

ParentName

要更新的节点的 Core.Parent

TaskName

请求项的工作流任务名称

TaskAction

WorkflowAction 枚举值,例如 WorkflowAction.AddLimb(请参阅“枚举常量”)

TaskDomain

工作流任务的域名(如果有)

ItemDetails

请求项的 RequestItemDetailObject 的列表

表 12-28 RequestItemObject 方法

名称 说明

NodeNamePendingInRequest(name)

接受要测试的特定节点名称参数。如果除版本的当前请求外正在进行的请求包含具有指定名称的 AddLimb/叶项,则返回 True。

RequestItemDetailObject

RequestItemDetailObject 表示监管请求的单个请求项详细信息,对应于单个属性值。

表 12-29 RequestItemDetailObject 属性

名称 说明

CalcValue

属性的计算值

HasCalcValue

如果值为计算值,则返回 True

Modified

如果请求中修改了该值,则返回 True

PropertyName

属性的名称

Value

属性的值