首页 > 解决方案 > 未找到数据中心协调架构

问题描述

使用 MarkLogic DHF,我试图从我的协调流程中调用一个 json 验证函数。除了验证功能没有找到架构外,其他流程都运行良好。协调文件最终所在的 *-FINAL DB 关联了我的 *-SCHEMAS db,并且我的模式文件存储在该 *-SCHEMAS db 中的简单 URI 下。如何确定 DHF 协调流程在哪里寻找架构?

更新:通过反复试验,我确定在将我的 json 模式加载到我的服务器的基本“模式”数据库后,协调流程能够为 jsonValidate() 函数找到它。但我不明白为什么它在最终模式数据库中找不到它,这是构建加载模式的地方。

更新 2.0:使用@grtjn 下面的建议,我确定协调流的当前数据库不是最终数据库,而是暂存数据库。因此,当我在暂存模式数据库中手动加载模式时(具有适当的权限),流程会找到它。所以现在我只需要弄清楚如何让 gradle deploy 将架构放入暂存架构数据库而不是最终架构数据库。

标签: jsonmarklogicmarklogic-dhf

解决方案


在 DHF 4.1.0 或更高版本中,您应该能够将架构放在 ml-gradle 声明的位置:https ://github.com/marklogic-community/ml-gradle/wiki/Loading-schemas

在这种情况下,您可能希望将其放置在您的暂存模式数据库名称下的 ml-config/databases 目录中。

虽然将数据写入最终数据库确实具有一定的逻辑意义,但操作必须在读取暂存数据时进行。此外,您为最终数据库定义的模式(例如验证最终实体或 TDE 以将数据公开为行/列)可能希望与原始/暂存数据分开。

如果您认为我们需要更好的文档,或者您有其他建议可以让您更轻松一些,请在我们的 github ( https://github.com/marklogic/marklogic-data-hub/issues ) 上记录问题使用。


推荐阅读