我已经在Spring Boot应用程序中嵌入了Teiid 12.3。我想进入VDB的元数据,以便使用graphviz-java生成图表。我假设如果我有一个org.teiid.metadata.Table
对象,那么我可以调用getIncomingObjects()
来获取对该表所依赖的表的引用。我只是不知道如何从EmbeddedServer
导航到Table
对象。
我研究了使用可通过EmbeddedServer.getAdmin()
获得的管理API。从那里,我可以调用getVDBs()
,从那里我可以向下导航到getModels()
,但是在该级别以下,只有通过getSourceMetadataText()
的模型源。我还尝试了对EmbeddedServer
进行子类化,以使getVDBRepository()
公开。我可以调用getVDBRepository()*.getModels()
,但是它返回相同的Model
对象只能让我访问模型的源定义,而不能访问运行时元数据模型。
我尝试了getVDBRepository().getSystemStore()
和VDBRepository.getODBCStore()
,但是这些MetadataStore
并不适合我已部署的VDB。
我没有找到Google,Teeid JIRA,Teiid论坛或StackOverflow的任何示例来帮助我。
答案 0 :(得分:0)
看看getSchema
API上的Admin
方法的[1],该方法返回元数据的字符串形式,但是您可以获取Schema
对象为对象形式。如果您不希望这样做,Teiid还会使用许多SYS
表公开系统目录,您可以发出SQL查询以获取VDB中模式和模式项的元数据。一个用于内部访问,另一个用于外部访问。
顺便说一句,其中一个用户创建了一个依赖关系图工具,如果您尝试执行类似的操作,该工具可能会很有用。参见[2]。如果您有兴趣进一步推广,请告诉我。
[1] https://github.com/teiid/teiid/blob/master/runtime/src/main/java/org/teiid/runtime/EmbeddedAdminImpl.java#L544-L557 [2] https://github.com/teiid/metadata-catalog-ui