問題タブ [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.
eclipse-emf - Ecore-File での再帰?
特定の UML モデルから Ecore モデルに変換しようとしました。この後、ジェネレーターモデルを作成しようとしています。
これを実行しようとするたびに、次のログに「未処理のイベント ループ例外」があるというエラー メッセージが表示されます。
org.eclipse.swt.SWTException: org.eclipse.swt.SWT.error(SWT.java:3884) で org.eclipse.swt.SWT.error(SWT.java) で実行可能 (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) 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) at org.eclipse.gmf.internal.bridge.ui.dashboard.HyperlinkFigure$1.mousePressed(HyperlinkFigure.java:63) ) org.eclipse.draw2d.Figure.handleMousePressed(Figure.java:873) で、org.eclipse.draw2d.SWTEventDispatcher で。org.eclipse.draw2d.LightweightSystem$EventHandler.mouseDown(LightweightSystem.java:513) の dispatchMousePressed(SWTEventDispatcher.java:214) org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:179) の org.eclipse org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003) の .swt.widgets.EventTable.sendEvent(EventTable.java:84) org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java) :3910) org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405) で org.eclipse.ui.internal. 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) で。org.eclipse.ui.internal.ide.application.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 org.eclipse.core.runtime.adaptor の .core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368) .EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559) の java.lang.reflect.Method.invoke(不明なソース) での invoke(不明なソース) org.eclipse.equinox.launcher.Main.basicRun での(Main.java:514) at org.eclipse.equinox.launcher.Main.run(Main.java:1311) 原因: java.lang.NullPointerException at org.eclipse.emf.converter.util.ConverterUtil.computeRequiredPackages(ConverterUtil) .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
この長いログでは:
org.eclipse.emf.codegen.ecore.genmodel.impl.GenModelImpl.diagnose(GenModelImpl.java:2930) の org.eclipse.emf.ecore.util.EcoreUtil.getURI(EcoreUtil.java:2887) での java.lang.NullPointerException ) org.eclipse.emf.codegen.ecore.genmodel.presentation.GenModelEditor.validate(GenModelEditor.java:1773) で org.eclipse.emf.codegen.ecore.genmodel.presentation.GenModelEditor.initialize(GenModelEditor.java:596) で) org.eclipse.emf.codegen.ecore.genmodel.presentation.GenModelEditor.createPages(GenModelEditor.java:1080) で org.eclipse.ui.part.MultiPageEditorPart.createPartControl(MultiPageEditorPart.java:357) で org.eclipse. ui.internal.EditorReference.createPartHelper(EditorReference.java:662) の org.eclipse.ui.internal.EditorReference.createPart(EditorReference.java:462) の org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595) org.eclipse.ui.internal.EditorReference.getEditor(EditorReference.java:286) で org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched(WorkbenchPage.java:2857) で org.eclipse.ui.internal.WorkbenchPage .busyOpenEditor(WorkbenchPage.java:2762) at org.eclipse.ui.internal.WorkbenchPage.access$11(WorkbenchPage.java:2754) at org.eclipse.ui.internal.WorkbenchPage$10.run(WorkbenchPage.java:2705) at 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) での貢献.base.ModelImporterWizard.performFinish(ModelImporterWizard.java:167) org.eclipse.gmf.internal.bridge.ui.dashboard.DashboardMediator$ で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.org.eclipse.gmf.internal.bridge.ui.dashboard.DashboardMediator$RunWizardAction.run(DashboardMediator.java:316) で org.eclipse.gmf で eclipse.jface.window.Window.open(Window.java:801)。 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(SWTEventDispatcherjava.java) :214) org.eclipse.draw2d.LightweightSystem$EventHandler.mouseDown(LightweightSystem.java:513) で org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:179) で org.eclipse.swt.widgets. org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003) の EventTable.sendEvent(EventTable.java:84) org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3910) の org .eclipse.swt.widgets.Display.readAndDispatch(Display.java:3503) org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405) で org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369) で org.eclipse.ui.internal.Workbench .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.Workbench.createAndRunWorkbench(Workbench.java:493) で org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) で org.eclipse.ui.internal.ide.application. org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher. java:110) org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher で。start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) sun.reflect.NativeMethodAccessorImpl.invoke0 (ネイティブ メソッド) で sun.reflect.NativeMethodAccessorImpl.invoke (不明なソース) で sun.reflect.DelegatingMethodAccessorImpl.invoke (不明なソース) で java.lang.reflect.Method.invoke (不明なソース) 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)org.eclipse.equinox. launcher.Main.invokeFramework(Main.java:559) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514) at org.eclipse.equinox.launcher.Main.run(Main.java:1311)org.eclipse.equinox. launcher.Main.invokeFramework(Main.java:559) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514) at org.eclipse.equinox.launcher.Main.run(Main.java:1311)
誰が何がうまくいかないのか考えていますか? 私は自分のモデルをしばらく見ましたが、何か問題を見つけることができませんでした。「未処理のイベント ループ例外」が原因で再帰が発生する可能性があると思いましたが、これは可能ですか?
前もってありがとう、ドミニク
mda - 実際のアプリケーションでの MDSD/MDA の成功事例はありますか?
私は現在、テスト駆動開発の支持者として、モデル駆動ソフトウェア開発 (MDSD) / モデル駆動アーキテクチャ (MDA) の支持者と競争しなければならない状況に直面しています。
私の意見では、コード生成はツールボックスの貴重なツールであり、必要に応じてテンプレートと自動化を多用しています。また、内部の仕組みを理解したり、ホワイト ボードでアーキテクチャについて話し合ったりするのに役立つと思われる場合は、UML で図を作成します。ただし、UML を使用してソフトウェアを作成すること (コードのスケルトンだけでなく、ステートチャートとシーケンス図を作成して作業コードを作成すること) が、多層アプリケーション (データベース層、ビジネス/ドメイン層、Gui、場合によっては分散型) にとってより効率的であるとは思えません。MDSD に関して言えば、CASE ツーリングはもはや単なるツールではなくなったように思えますが、それは満足すべきものです。
これらすべてのことから、実現した実世界のアプリケーションのサクセス ストーリーがあったかどうか疑問に思います (成功とは、予算内で製品が時間内に展開され、バグがほとんどなく、ソフトウェアの一部が後で再利用されたということです)。この基準は、厳格なモデル主導のアプローチを使用して開発されました。
- オブジェクト管理グループ (OMG) や MDSD/MDA/SOA/ に関連するコンサルタントとは何の関係もありません。
- アプリケーションはビジネス プロセス モデリングとは関係なく、CASE ツール自体ではありません。
- アプリケーションはエンドユーザーによって積極的に使用されています
- 生のテーブル値を表示するだけでなく、一般的な MDA/MDSD の例 (「コーヒー マシン、信号機、食器洗い機をモデル化する方法」) の 1 つではないユーザー インターフェイスを含む、少なくとも 3 つの層があります。
c# - シングル スレッド アプリケーションで WMI 関数を呼び出すときの DisconnectedContext MDA
VS2005 の C#、.NET 3.0 で、さまざまなリムーバブル ドライブ (USB フラッシュ ディスク、CD-ROM など) の挿入/排出を監視する機能を備えたアプリを作成します。WMI はあいまいな場合があるため (たとえば、単一の USB ドライブに対して複数の挿入イベントが発生する可能性があるため)、WMI を使用したくなかったため、ここで提案されているように、メインフォームの WndProc をオーバーライドして WM_DEVICECHANGE メッセージをキャッチするだけです。昨日、シリアル番号のような不明瞭なディスクの詳細を取得するためにとにかく WMI を使用する必要があることが判明したとき、問題に遭遇しました。WndProc 内から WMI ルーチンを呼び出すと、DisconnectedContext MDA がスローされることが判明しました。
掘り下げた後、私はそのための厄介な回避策で終わりました。コードは次のとおりです。
これは基本的に、WMI 関連の手順を別のスレッドで実行することを意味しますが、完了するまで待機します。
さて、問題は、なぜそれが機能するのか、そしてなぜそのようにしなければならないのかということです. (または、そうですか?)
そもそも DisconnectedContext MDA または RPC_E_WRONG_THREAD を取得するという事実がわかりません。GetDrives()
ボタン クリック イベント ハンドラーからのプロシージャの実行は、WndProc からの呼び出しとどのように異なりますか? それらはアプリの同じメイン スレッドで発生しませんか? ところで、私のアプリは完全にシングル スレッドです。WMI の使用は、System.Management からの関数のマルチスレッド化と特別な処理を意味しますか?
その間に、その MDA に関連する別の質問を見つけました。ここにあります。わかりました。WMI を呼び出すということは、基礎となる COM コンポーネント用に別のスレッドを作成することを意味すると理解できます。 WndProc から。
私はそれについて本当に混乱しており、その問題についていくつかの説明をいただければ幸いです。解決策を持っていて、それが機能する理由がわからないことよりも悪いことはいくつかあります:/
乾杯、アレクサンダー
eclipse-emf - 既存のモデルオブジェクトへの参照を作成するにはどうすればよいですか?
私はMDSD/EMFを初めて使用しますが、Eclipseのサポートのおかげで大きな進歩を遂げています。
awynneが提案したように、昨日答えられたようにおもちゃのモデルを作成しました、そして私は非常に近いです。私はEMFとその生成されたツリーエディタのみを使用しています。
これが私のEMFメタモデルの要約です:
現在起こっていることは、モデル用に生成されたツリーエディターで、TopLevelClassからすべてを作成することです。WidgetContainerで複数のウィジェットを正常に作成でき、ReferenceContainerで単一のWidgetReferenceを作成して、それを特定のウィジェットに関連付けることができます。
誰かがこれに遭遇した場合、生成されたEMFエディタコードにバグがあります:
ReferenceContainerに複数のWidgetReferenceを追加しようとすると、ツリーエディターにはReferenceContainerの下の最初のWidgetReferenceのみが表示されます。ツリーのWidgetReferencesアイテムをクリックすると、プロパティビューに複数のWidgetReferencesが表示されます。ツリーでそれらを表示できないため、実際のウィジェットに関連付けるために参照を変更するためにそれらを選択することはできません。
これに対する回避策は、必要な数の参照を作成し、モデルを保存して閉じてから、再度開くことです。再度開くと、すべての参照が表示されます。
ヘルプ/ガイダンスをありがとう。
ジェフ
java - MDA : モデル駆動型アーキテクチャ
MDA の概念を示す非常に単純なアプリケーションを開発するためのアイデアが必要です。
version-control - バージョン管理モデルの分野で何が行われましたか?
Model Labs の担当者による、モデル駆動型アーキテクチャについてのかなり良い講義がありました。私が興味をそそられたのは、モデルのバージョン管理 (バージョン管理のさまざまなモデルと混同しないでください) - またはその欠如でした。モデルのバージョン管理とは、意味を保持する XML や EMF ファイルをバージョン管理する方法を意味していました。
ですから、私はその分野でこれまでに何が行われたかに興味があります (彼は SVN と Moodle について言及していましたが、聞き間違えたかもしれません)。Google 検索では何も得られなかったので、スタック オーバーフローの知恵に目を向けています。
主に書籍、記事、リンクなどの情報を探しています。
eclipse - Ecore、genmodel、OCL
EMFのEcoreを使用して、ドメイン固有のモデリング言語のメタモデルを定義しています。したがって、メタモデルに準拠するモデルを作成するために使用できる関連するgenmodelからエディターを生成します。メタモデルのいくつかの要素が想定できる値にいくつかのOCL制約を指定したいと思います。Ecoreモデルでこれらの制約を指定し、関連するチェックでエディターのJavaコードを自動的に生成できると非常に便利です。
それを行うための標準的な方法はありますか?
java - オープンソースの完全な Java EE MDA フレームワークはありますか?
完全な Java EE アプリケーションを生成する Java EE MDA フレームワークを探しています。つまり、magicdraw sybase PowerDesigner などのツールでモデリングを開始し、Java クラス (可能であれば休止状態または JPA) を生成し、最後にモデルに基づいてプレゼンテーション レイヤーを生成します。
つまり、UML モデルに Person (id、firstName、lastName) というクラスがあるとします。フレームワークは Java ソースと .class ファイルを生成します。その後、プレゼンテーション層で、モデルに基づいて CRUD 操作を生成できます。
私はネットで検索しましたが、残念ながら [編集: 何も見つかりませんでした?] (Spring ROO を除きますが、UML モデルからは開始されません)。
eclipse - TopCased: SysML ダイアグラムをエクスポートする API
プログラムで多数の TopCased SysML (Eclipse) ダイアグラムを png/jpg にエクスポートする必要がありますか? これを許可する API はありますか?