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一致。

 

posted @ 2017-12-03 12:16  为发火而生  阅读(644)  评论(0编辑  收藏  举报