ecore - 我可以从 Sirius 调用 Ecore 操作吗
问题描述
Sirius 中是否有任何方法可以让用户交互(例如,双击)来调用语义元素上的 Ecore 定义的操作?更多详情如下。
我正在使用 Xcore 来定义我的元模型。我有这样的情况:
enum Status
{
Default
Foo
Bar
}
class ThingWithStatus
{
Status status
}
class ContainerForThings
{
contains ThingWithStatus[] thingList
op void resetAllThingsStatus()
{
for (ThingWithStatus thing : thingList)
{
thing.status = Status::DEFAULT
}
}
}
目前,我在 Sirius 中有一个图表,其中包含 ContainerForThings 的容器节点,以及 ThingWithStatus 的子节点。我想做的是双击图中的容器节点,并在语义元素上运行 resetAllThingsStatus() 操作。
如果无法直接执行此操作,我最好的选择是将 EMF 生成的用于 resetAllThingsStatus() 的 Java 代码转换为 Sirius 然后调用的外部 Java 操作吗?
在此先感谢您的帮助。- SJ
解决方案
如果无法直接执行此操作,我最好的选择是将 EMF 生成的用于 resetAllThingsStatus() 的 Java 代码转换为 Sirius 然后调用的外部 Java 操作吗?
是的。如果您有许多 EOperations,您可能想要做一个通用服务,例如 callEOperation(EObject onElement, String operationName),否则您将拥有与 EOperations 一样多的方法。
推荐阅读
- javascript - 为什么 Phantomjs 不适用于此站点?
- sql - 为什么我的子查询使用字符串而不是字段引用?
- php - 是否可以从 PHP 文件发送标头,这完全没有任何作用
- rasa-core - Rasa 自定义操作事件丢失
- curl - 使用文本文件中的字符串卷曲和重命名图像
- swift - 如何在 Swift 5.2 函数构建器中使用 buildExpression?
- mongodb - 如何在另一个文件夹上执行 mongorestore?
- sql-server - 如何将 nvarchar 的每 7 个字符提取到另一个表中?
- javascript - 即使在生成另一个脚本时劫持节点也需要
- c - 如何更新世界以获得下一次死/活细胞迭代