我应该如何在 Gentics Mesh 中实现具有重复事件的日历?

How should I implement a Calendar with reccuring events in Gentics Mesh?

我需要在 Gentics Mesh 应用程序中创建共享日历。
这是我一直在研究的方法 -

创建一个名为 'events' 的容器节点。这将代表 'Calendar'.
为 'event' 创建架构,并将此节点类型的实例添加到事件文件夹。
事件模式将包含名称、date/time、位置等...
名为 temporalExpression 的字符串字段可以描述重复。
然后我可以查询所有事件并遍历它们以确定状态,例如 - isOccuringnextOccurance

我在使用这种方法时遇到的问题是,所有逻辑都存在于客户端上。
它看起来笨拙且容易出错。

我正在考虑构建一个 proxy/middleware 层,将所有图形查询转发到 Mesh 服务器,然后提供额外的休息服务来处理 creating/querying 事件。这将提供一个抽象层来处理复杂性。

这种做法听起来合理吗?

我也考虑过使用 Google 日历 API,但我不希望 Mesh 失去事件的可见性。
如果我连接到 Mesh eventBus,也许就可以解决问题? 然后中间件可以订阅节点事件并相应地更新 Google 日历。
我对这种方法的担忧 - Mesh 如何处理事件的消费者?
如果我扩大我的中间件,他们每个人都会收到事件吗? 我需要小心重复。

我知道 Mesh 有插件功能,但我认为它通过与中间件层相同的 [http] API 进行通信,所以我对重复有同样的担忧。

想法?

这听起来像是 Mesh 插件的一个很好的用例。使用插件 API,您可以访问 Mesh 使用的 Vert.x 实例。这样您就可以访问 Eventbus 并使用 localConsumer 仅在触发事件的 Mesh 实例上使用事件。由于该事件仅在最初创建日历条目的实例上触发,因此只有一个消费者会收到该事件。这避免了重复,即使您扩展应用程序也是如此。

您可以通过 MeshEvent 枚举获取 Mesh 事件的地址。

插件 API 还允许您添加自定义端点。您可以轻松添加端点来查询您提到的数据 - isOccuringnextOccurance.