问题标签 [mda]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
538 浏览

eclipse-emf - Ecore文件中的递归?

只是试图从给定的 UML 模型转换为 Ecore 模型。在此之后,我试图创建一个生成器模型。

每次我尝试这样做时,我都会收到错误消息,表明此日志存在“未处理的事件循环异常”:

org.eclipse.swt.SWTException:无法在 org.eclipse.swt.SWT.error(SWT.java) 的 org.eclipse.swt.SWT.error(SWT.java:3884) 处执行可运行 (java.lang.NullPointerException) :3799) 在 org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:137) 在 org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3885) 在 org.eclipse.swt.widgets。 Display.readAndDispatch(Display.java:3506) at org.eclipse.jface.window.Window.runEventLoop(Window.java:825) at org.eclipse.jface.window.Window.open(Window.java:801) at org .eclipse.gmf.internal.bridge.ui.dashboard.DashboardMediator$RunWizardAction.run(DashboardMediator.java:316) at org.eclipse.gmf.internal.bridge.ui.dashboard.HyperlinkFigure$1.mousePressed(HyperlinkFigure.java:63 ) 在 org.eclipse.draw2d.SWTEventDispatcher 的 org.eclipse.draw2d.Figure.handleMousePressed(Figure.java:873)。dispatchMousePressed(SWTEventDispatcher.java:214) at org.eclipse.draw2d.LightweightSystem$EventHandler.mouseDown(LightweightSystem.java:513) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:179) at org.eclipse .swt.widgets.EventTable.sendEvent(EventTable.java:84) 在 org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003) 在 org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java :3910) 在 org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405) 在 org.eclipse.ui.internal 的 org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3503)。 Workbench.runUI(Workbench.java:2369) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500)在 org.eclipse.ui 的 org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)。internal.Workbench.createAndRunWorkbench(Workbench.java:493) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java: 113) 在 org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) 在 org.eclipse.core.runtime.internal.adaptor.EclipseAppHandle.run(EclipseAppHandle.java:194) .core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) 在 org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368) 在 org.eclipse.core.runtime.adaptor .EclipseStarter.run(EclipseStarter.java:179) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 在 sun.reflect.DelegatingMethodAccessorImpl。在 org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559) 在 org.eclipse.equinox.launcher.Main.basicRun 的 java.lang.reflect.Method.invoke(Unknown Source) 调用(Unknown Source) (Main.java:514) at org.eclipse.equinox.launcher.Main.run(Main.java:1311) 原因:org.eclipse.emf.converter.util.ConverterUtil.computeRequiredPackages(ConverterUtil) 中的 java.lang.NullPointerException .java:374) 在 org.eclipse.emf.converter.ui.contribution.base.ModelConverterPackagePage.validate(ModelConverterPackagePage.java:965) 在 org.eclipse.emf.importer.ui.contribution.base.ModelImporterPackagePage.validate(ModelImporterPackagePage .java:101) 在 org.eclipse.emf.converter.ui.contribution.base.ModelConverterPackagePage$1.run(ModelConverterPackagePage.java:155) 在 org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)在 org.eclipse.swt.widgets。Synchronizer.runAsyncMessages(Synchronizer.java:134) ... 34 更多

在此之后,此文本出现另一个异常:“无法创建编辑器 ID org.eclipse.emf.codegen.ecore.genmodel.presentation.GenModelEditorID:引发了意外异常。”

会话数据显示:eclipse.buildId=unknown java.version=1.6.0_13 java.vendor=Sun Microsystems Inc. BootLoader 常量:OS=win32, ARCH=x86, WS=win32, NL=de_DE 框架参数:-product org. eclipse.epp.package.modeling.product 命令行参数:-os win32 -ws win32 -arch x86 -product org.eclipse.epp.package.modeling.product -consoleLog

有了这个长日志:

java.lang.NullPointerException at org.eclipse.emf.ecore.util.EcoreUtil.getURI(EcoreUtil.java:2887) at org.eclipse.emf.codegen.ecore.genmodel.impl.GenModelImpl.diagnose(GenModelImpl.java:2930 ) 在 org.eclipse.emf.codegen.ecore.genmodel.presentation.GenModelEditor.initialize(GenModelEditor.java:596) 的 org.eclipse.emf.codegen.ecore.genmodel.presentation.GenModelEditor.validate(GenModelEditor.java:1773) ) 在 org.eclipse.ui.part.MultiPageEditorPart.createPartControl(MultiPageEditorPart.java:357) 上的 org.eclipse.emf.codegen.ecore.genmodel.presentation.GenModelEditor.createPages(GenModelEditor.java:1080)。 ui.internal.EditorReference.createPartHelper(EditorReference.java:662) at org.eclipse.ui.internal.EditorReference.createPart(EditorReference.java:462) at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595) 在 org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched(WorkbenchPage.java:2857) 在 org.eclipse.ui.internal.WorkbenchPage 的 org.eclipse.ui.internal.EditorReference.getEditor(EditorReference.java:286) .busyOpenEditor(WorkbenchPage.java:2762) 在 org.eclipse.ui.internal.WorkbenchPage.access$11(WorkbenchPage.java:2754) 在 org.eclipse.ui.internal.WorkbenchPage$10.run(WorkbenchPage.java:2705) 在org.eclipse.swt.custom.BusyIndi​​cator.showWhile(BusyIndi​​cator.java:70) 在 org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2701) 在 org.eclipse.ui.internal.WorkbenchPage.openEditor( WorkbenchPage.java:2685) 在 org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2668) 在 org.eclipse.emf.converter.ui.contribution.base.ModelConverterWizard.openEditor(ModelConverterWizard.java:318)在 org.eclipse.emf.importer.ui。org.eclipse.jface.wizard.WizardDialog.finishPressed(WizardDialog.java:752) at org.eclipse.gmf.internal.bridge.ui.dashboard.DashboardMediator$ 上的contribution.base.ModelImporterWizard.performFinish(ModelImporterWizard.java:167) RunWizardAction$1.finishPressed(DashboardMediator.java:311) at org.eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDialog.java:373) at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:624)在 org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:228) 在 org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) 在 org.eclipse.swt.widgets.Widget.sendEvent (Widget.java:1003) 在 org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3910) 在 org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3503) 在 org.eclipse。 jface.window.Window.runEventLoop(Window.java:825) 在 org.eclipse.jface.window.Window.open(Window.java:801) 在 org.eclipse.gmf.internal.bridge.ui.dashboard.DashboardMediator$RunWizardAction.run(DashboardMediator.java:316) 在 org.eclipse.gmf。 internal.bridge.ui.dashboard.HyperlinkFigure$1.mousePressed(HyperlinkFigure.java:63) at org.eclipse.draw2d.Figure.handleMousePressed(Figure.java:873) at org.eclipse.draw2d.SWTEventDispatcher.dispatchMousePressed(SWTEventDispatcher.java :214) 在 org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:179) 在 org.eclipse.swt.widgets 的 org.eclipse.draw2d.LightweightSystem$EventHandler.mouseDown(LightweightSystem.java:513)。 EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3910) at org .eclipse.swt.widgets.Display.readAndDispatch(Display.java:3503) 在 org.eclipse.ui.internal.Workbench 的 org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369) 的 org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405) .access$4(Workbench.java:2221) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332 ) 在 org.eclipse.ui.internal.ide.application 的 org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) 的 org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493)。 IDEApplication.start(IDEApplication.java:113) 在 org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194) 在 org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher. java:110) 在 org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher。开始(EclipseAppLauncher.java:79)在 org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368)在 org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 在 java.lang.reflect.Method.invoke(Unknown Source)在 org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559) 在 org.eclipse.equinox.launcher.Main.basicRun(Main.java:514) 在 org.eclipse.equinox.launcher.Main.run (Main.java:1311)在 sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 在 sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 在 java.lang.reflect.Method.invoke(Unknown Source) 在 org.eclipse.equinox 的 invoke0(Native Method)。 launcher.Main.invokeFramework(Main.java:559) 在 org.eclipse.equinox.launcher.Main.basicRun(Main.java:514) 在 org.eclipse.equinox.launcher.Main.run(Main.java:1311)在 sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 在 sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 在 java.lang.reflect.Method.invoke(Unknown Source) 在 org.eclipse.equinox 的 invoke0(Native Method)。 launcher.Main.invokeFramework(Main.java:559) 在 org.eclipse.equinox.launcher.Main.basicRun(Main.java:514) 在 org.eclipse.equinox.launcher.Main.run(Main.java:1311)

Has anyone an idea what is going wrong? I looked a while at my model but were not able to find something wrong. I just thought there might be a recursion due to the "Unhandled event loop exception" but is this even possible?

Thanks in advance, Dominik

0 投票
5 回答
1211 浏览

mda - 是否有适用于现实世界应用程序的 MDSD/MDA 成功案例?

我目前面临的情况是,作为测试驱动开发的倡导者,我必须与模型驱动软件开发(MDSD)/模型驱动架构(MDA)的倡导者竞争。

在我看来,代码生成是我工具箱中的一个有价值的工具,我会在需要时大量使用模板和自动化。当我认为这有助于理解内部工作或在白板上讨论架构时,我也会在 UML 中创建图表。但是,我强烈怀疑通过 UML 创建软件(创建状态图和序列图来创建工作代码,而不仅仅是代码骨架)对于多层应用程序(数据库层、业务/域层和 GUI,甚至可能是分布式的)更有效。在我看来,当谈到 MDSD 时,CASE 工具突然不再只是一个工具,而是满足的东西:在我看来,一方面,

所有这一切让我想知道是否有一个成功的故事(成功是该产品及时推出,在预算范围内,只有很少的错误,软件的部分内容后来被重用)用于满足现实世界的应用程序该标准是使用严格的模型驱动方法开发的:

  • 它与对象管理组 (OMG) 或与 MDSD/MDA/SOA/ 相关的顾问无关
  • 该应用程序与业务流程建模无关,并且本身不是 CASE 工具
  • 该应用程序被最终用户积极使用
  • 它至少有三层,包括一个用户界面,它超越了显示原始表值,并且不是常见的 MDA/MDSD 示例之一(“如何为咖啡机、交通灯、洗碗机建模”)。
0 投票
1 回答
4123 浏览

c# - 在单线程应用程序中调用 WMI 函数时的 DisconnectedContext MDA

我在 VS2005 中用 C#、.NET 3.0 编写了一个应用程序,其功能是监视各种可移动驱动器(USB 闪存盘、CD-ROM 等)的插入/弹出。我不想使用 WMI,因为它有时会模棱两可(例如,它可以为单个 USB 驱动器生成多个插入事件),所以我只需覆盖我的主窗体的 WndProc 以捕获 WM_DEVICECHANGE 消息,如此处建议的那样。昨天我遇到了一个问题,事实证明我无论如何都必须使用 WMI 来检索一些模糊的磁盘详细信息,例如序列号。事实证明,从 WndProc 内部调用 WMI 例程会引发 DisconnectedContext MDA。

经过一番挖掘,我以一个尴尬的解决方法结束。代码如下:

这基本上意味着在单独的线程上运行与 WMI 相关的过程 - 但随后等待它完成。

现在,问题是:它为什么会起作用,为什么必须这样?(或者,是吗?)

我不明白首先获得 DisconnectedContext MDA 或 RPC_E_WRONG_THREAD 的事实。从按钮单击事件处理程序运行GetDrives()过程与从 ​​WndProc 调用它有何不同?它们不是发生在我的应用程序的同一个主线程上吗?顺便说一句,我的应用程序完全是单线程的,那么为什么突然出现一个错误,指的是一些“错误的线程”?使用 WMI 是否意味着对 System.Management 中的函数进行多线程处理和特殊处理?

与此同时,我发现了另一个与那个 MDA 相关的问题,它就在这里。好的,我可以认为调用 WMI 意味着为底层 COM 组件创建一个单独的线程 - 但我仍然没有想到为什么在按下按钮后调用它时需要 no-magic 而调用时需要 do-magic它来自 WndProc。

我对此感到非常困惑,并希望对此事做出澄清。只有一些比有解决方案但不知道它为什么起作用更糟糕的事情:/

干杯,亚历山大

0 投票
2 回答
3434 浏览

eclipse-emf - 如何创建对现有模型对象的引用?

我是 MDSD/EMF 的新手,但由于 Eclipse 的支持,我取得了很大的进步。

我按照awynne的建议创建了一个玩具模型,昨天回答了这个问题,我非常接近。我只使用 EMF 及其生成的树编辑器。

这是我的 EMF 元模型的摘要:

现在发生的情况是,在为模型生成的树编辑器中,我从 TopLevelClass 开始创建所有内容。我可以在 WidgetContainer 中成功创建多个小部件,并且可以在 ReferenceContainer 中创建单个 WidgetReference 并将其与特定的 Widget 关联。

万一有人遇到这种情况,生成的 EMF 编辑器代码中有一个错误:

当我尝试向 ReferenceContainer 添加多个 WidgetReference 时,树编辑器仅显示 ReferenceContainer 下的第一个 WidgetReference。如果我单击树中的 WidgetReferences 项,它会在属性视图中显示多个 WidgetReferences。它只是不会让我在树中看到它们,因此不会让我选择它们来更改它们的引用以将其与实际的小部件相关联。

解决方法是根据需要创建尽可能多的参考,保存并关闭模型,然后重新打开它。重新打开后,将显示所有引用。

感谢您的任何帮助/指导。

杰夫

0 投票
3 回答
3354 浏览

java - MDA : Model Driven Architecture

Need a idea for developing very simple application demonstrating concepts of MDA.

0 投票
3 回答
148 浏览

version-control - 在版本控制模型领域做了什么?

我们有一个来自模型实验室的人关于模型驱动架构的相当不错的讲座。让我感兴趣的一件事是模型的版本控制(不要与不同的版本控制模型混淆) - 或者缺乏它。通过模型的版本控制,他的意思是一种对 XML、EMF 文件进行版本控制的方法,它保留了它们的语义。

所以,我对迄今为止在该领域所做的事情很感兴趣(他提到了一些关于 SVN 和 Moodle 的事情,尽管我可能听错了他)。Google 搜索一无所获,所以我求助于 Stack Overflow 的智慧。

我主要以书籍、文章、链接的形式寻找信息。

0 投票
2 回答
1413 浏览

eclipse - Ecore、genmodel 和 OCL

我正在通过 EMF 中的 Ecore 定义领域特定建模语言的元模型。因此,我从相关的 genmodel 生成一个编辑器,我可以使用它来创建符合元模型的模型。我想对元模型的某些元素可以假设的值指定一些 OCL 约束。如果我可以在 Ecore 模型中指定这些约束并让相关检查自动生成编辑器 Java 代码,那就太好了。

有没有标准的方法来做到这一点?

0 投票
2 回答
683 浏览

java - 是否有开源完整的 Java EE MDA 框架?

我正在寻找能够生成完整 Java EE 应用程序的 Java EE MDA 框架。我的意思是从使用诸如magicdraw sybase PowerDesigner 之类的工具开始建模,然后生成java 类(如果可能,则为hibernate 或JPA),最后基于模型生成表示层。

即:假设我的UML 模型有一个名为Person (id, firstName, lastName) 的类,那么框架将生成java 源代码和.class 文件。之后在表示层中,我可以根据我的模型生成 CRUD 操作。

我在网上搜索过,但不幸的是[编辑:找不到任何东西?](Spring ROO 除外,但它不是从 UML 模型开始的)。

0 投票
0 回答
325 浏览

eclipse - TopCased:用于导出 SysML 图的 API

我需要以编程方式将许多 TopCased SysML (Eclipse) 图导出到 png/jpg 中?是否有任何 API 允许这样做?

0 投票
1 回答
671 浏览

eclipse - 基础 UML (ALF) 的动作语言

基础 UML (ALF) 的 OMG 动作语言是否有任何 Eclipse 实现?谢谢你