如何从插件添加 Data Explorer 查询?

我怀疑这里缺少一个 API。

Data Explorer 作为插件工作流的一部分变得越来越有用,但是:

我们如何可靠但宽容地从第三方插件添加 Data Explorer 查询,以便我们能够优雅地失败而不会危及构建,同时也能在 Data Explorer 最终安装时重试?

我探索过的选项:

  1. 轮询插件:这是一种作弊方式——查询是由 Data Explorer 插件本身添加的
  2. 插件固定数据 - 这似乎有问题,因为 Data Explorer 的工件在插件初始化期间似乎不能保证可用——也许是因为 Data Explorer 插件本身就是一个第三方插件,并且不能保证已被加载?我猜我可以尝试通过 Ruby 代码使用 SQL 来确定表是否存在?
  3. 迁移 - 我已经编写了迁移,但它们需要无害地失败但不完成,如果 Data Explorer 插件未安装且没有查询表——迁移应该始终在重建时运行,直到 Data Explorer 插件安装并且表可用,这样查询就可以添加——这样从管理员的角度来看,解决方案是灵活的,不依赖于安装顺序。失败的迁移不应该危及构建——有没有办法在不停止构建的情况下失败/推迟迁移?
  4. 使用定期的计划作业来检查数据探索器插件/查询表和所需查询是否存在。
  5. 要求管理员手动添加它们……真糟糕。

我猜我接下来可能会尝试 2 的 SQL 版本,或者我错过了什么?

1 个赞

我会看看我依赖于订阅插件的代码。

你为什么需要数据浏览器?目的是创建最终用户将使用的查询吗?

是的,正是如此。数据浏览器正逐渐发展到可以用于那些在流程中拥有更高角色的管理员任务。

1 个赞

你可以设置一个任务来检查它们是否已安装。在一切运行之前它不会启动。

但为了确保东西没有损坏,你可以检查一些数据浏览器调用是否可用。我想这就是我对订阅所做的事情,也许吧。(现在还早,我还没打开我的笔记本电脑。)

他们上周添加了代码,检查聊天插件是否已加载。

我认为你的问题是竞争条件。

1 个赞

是的,该选项在可用选项列表中缺失,我会添加它。

但是让一个任务运行(它会定期继续运行和检查)似乎有点浪费?

不过,这个建议很好(我也考虑过这一点,但感觉有点……)

也许你可以把它加入队列,在启动时运行一次?然后它会一直运行,直到插件测试成功或者几分钟后失效?

1 个赞

我喜欢初始化时入队的想法。这可能会解决加载问题。我更喜欢这种方式,而不是每24小时执行一次的选项。可能会尝试一下!谢谢!

顺便说一句,这个问题的答案对于更广泛的问题也很有用。

我认为只要把你的测试放在某个地方,如果测试失败可以被挽救,这就足够了。但是你难道不能测试一下是否存在类似DataExplorer.something这样的东西吗?

我对使用迁移了解不够,没有考虑过将其用于你的用例。你也可以设置一个端点,比如管理员面板调用它,它会检查你是否安装了查询。

现在我在想,我担心我真正解决的唯一问题是添加另一个插件,以便测试可以工作。