Delmia DPE开发-Id与oid介绍
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Delmia DPE开发-Id与oid介绍相关的知识,希望对你有一定的参考价值。
在DPE的后台数据库中,存在对id与baseid(即oid,后面统一称为baseid),其都是对某一对象的唯一标识。理解id与baseid的区别,将有助于开发人员实际开发的理解,更好的理解DPE后台在数据处理方面的知识。本文将重点介绍id与baseid的区别和不同获取方式。
1.区别
(1)id:位置、关系、映射,可查找有关联关系的其他节点;
baseid:实体对象,可获取当前节点的任何属性值;
(2)id:一个id对应一个baseid;
baseid:一个baseid可对应多个id;
(3)id:PPR结构树、Graph对象等中的关系;
baseid:Component中的数据;
(4)id=baseid:项目节点、顶层PPR节点、Component中的节点
(5)节点一定有baseid,不一定有id(如:节点仅存在与Component中时);
注意:除了项目节点,其他节点都可以在项目的Component中找到。
通俗的理解,我们可以将DPE中的对象划分为两类,实体对象和关系对象。实体对象是我们创建出来的节点,关系对象是我们在两个实体对象之间建立的关系。总结起来,关系对象的唯一标识为id,实体对象的唯一标识为baseid。在DPE中,两个实体对象的关系可以有多种,因此,知道实体对象,可以获取到他们之间的多个关系对象,即id值。同时,若知道id值,即知道两个实体对象之间的某一唯一关系id,就可以查询到这两个实体对象。
2.获取
1.VBA:id:1)Application.EntryObjectId可获取触发节点id;
2)基于父子关系、关联关系等方法获取;
baseid:基于id获取(如: relationobject2、ergocompbase、 relationobject1、“nodes_reverse_explicitandimplicit_ro”、“ergocompbase_parent”等)
例:(1)baseid= Data.GetAttributebyId(id, "relationobject2")
(2) Baseid_Relation = Data.GetLinkedObjectAttributebyId(Id_Relation, Baseid, "oid")
注意:获取关联关系节点的Baseid(若用relationobject2会回到原节点)
2.VBS:id:仅可通过参数传入或其他途径获取(如全局遍历、外部文件);
baseid:基于id获取
3.特殊ID获取
1.VBA:id:1)projectid:a. projectid = Application.DPEProjectId
b. projectid = Data.GetAttributebyId(id, "ergoproject")
2)P、P、R顶层节点id的获取:
a)通过projectid向下遍历获取,遍历参数用顶层P、P、R的节点类型即可;
b)若当前节点为P、P、R下的节点,可通过遍历父节点查找“nodes_reverse_explicitandimplicit_ro”;
2.VBS:1)projectid:与VBA中方法b一致;
2)P、P、R顶层节点id的获取:与VBA中方法a、b一致。
以上是关于Delmia DPE开发-Id与oid介绍的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server Reporting Services 自定义数据处理扩展DPE(Data Processing Extension)