itemisCREATE / statecharts

YAKINDU Statechart Tools (http://www.statecharts.org)
Eclipse Public License 1.0
175 stars 85 forks source link

Extension problem #2775

Closed XiaoXiaoYi123 closed 5 years ago

XiaoXiaoYi123 commented 5 years ago

Hello, I was surprised to find this tool very useful.So I tried to expand it. First, I examined the.sct file, which I found to be composed of two sections of the ecore file, sgraph.ecore and notation. Ecore. Then, I tried to generate the sgraph.ecore instantiation file, and there were a lot of problems. Finally, the generated results are as follows:

<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:sgraph="http://www.yakindu.org/sct/sgraph/2.0.0">
  <sgraph:Statechart xmi:id="_VgBc4Iv6Eemg6-kEj95RIA" specification="internal:&amp;#xA;&amp;#x9;var x: integer&amp;#xA;&amp;#x9;var y: integer&amp;#xA;&amp;#x9;event ev1&amp;#xA;&amp;#x9;event ev2&amp;#xA;&amp;#x9;event ev3" name="folding_01">
    <regions xmi:id="_VgBc4Yv6Eemg6-kEj95RIA" name="main Region">
      <vertices xsi:type="sgraph:Entry" xmi:id="_VgBc4ov6Eemg6-kEj95RIA">
        <outgoingTransitions xmi:id="_VgBc44v6Eemg6-kEj95RIA" target="_VgBc5Iv6Eemg6-kEj95RIA"/>
      </vertices>
      <vertices xsi:type="sgraph:State" xmi:id="_VgBc5Iv6Eemg6-kEj95RIA" name="DoorOpened" incomingTransitions="_VgBc6Yv6Eemg6-kEj95RIA">
        <outgoingTransitions xmi:id="_VgBc5Yv6Eemg6-kEj95RIA" target="_VgBc5Iv6Eemg6-kEj95RIA"/>
      </vertices>
      <vertices xsi:type="sgraph:State" xmi:id="_VgBc5ov6Eemg6-kEj95RIA" name="DoorClosed" incomingTransitions="_VgBc6ov6Eemg6-kEj95RIA">
      </vertices>
    </regions>
  </sgraph:Statechart>
</xmi:XMI>

I found the generated file and the sgraph of the.sct file.Ecore is almost identical, but when I open my generated file using yakindu, there are a few errors

eclipse.buildId=unknown
java.version=1.8.0_144
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=zh_CN
Framework arguments:  -product org.eclipse.platform.ide
Command-line arguments:  -product org.eclipse.platform.ide -data G:\yakindu\sct-master\ws/../runtime-New_configuration -dev file:G:/yakindu/sct-master/ws/.metadata/.plugins/org.eclipse.pde.core/New_configuration/dev.properties -os win32 -ws win32 -arch x86_64 -consoleLog

org.apache.log4j
Error
Tue Jun 11 21:59:10 CST 2019
org.eclipse.xtext.builder.clustering.ClusteringBuilderState  - Error loading resource from: platform:/resource/example-transition/transition.sct

org.eclipse.xtext.builder.resourceloader.IResourceLoader$LoadOperationException: org.eclipse.emf.ecore.xmi.UnresolvedReferenceException: Unresolved reference '_VgBc6Yv6Eemg6-kEj95RIA'. (platform:/resource/example-transition/transition.sct, 8, 138)
    at org.eclipse.xtext.builder.resourceloader.SerialResourceLoader$1.next(SerialResourceLoader.java:50)
    at org.eclipse.xtext.builder.resourceloader.AbstractResourceLoader$CheckedLoadOperation.next(AbstractResourceLoader.java:77)
    at org.eclipse.xtext.builder.clustering.ClusteringBuilderState.writeNewResourceDescriptions(ClusteringBuilderState.java:378)
    at org.eclipse.xtext.builder.clustering.ClusteringBuilderState.doUpdate(ClusteringBuilderState.java:139)
    at org.eclipse.xtext.builder.builderState.AbstractBuilderState.update(AbstractBuilderState.java:116)
    at org.eclipse.xtext.builder.impl.XtextBuilder.doBuild(XtextBuilder.java:288)
    at org.eclipse.xtext.builder.impl.XtextBuilder.incrementalBuild(XtextBuilder.java:268)
    at org.eclipse.xtext.builder.impl.XtextBuilder.build(XtextBuilder.java:162)
    at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:798)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:219)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:262)
    at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:315)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:318)
    at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:370)
    at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:391)
    at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:145)
    at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:235)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Caused by: org.eclipse.emf.ecore.xmi.UnresolvedReferenceException: Unresolved reference '_VgBc6Yv6Eemg6-kEj95RIA'. (platform:/resource/example-transition/transition.sct, 8, 138)
    at org.eclipse.emf.ecore.xmi.impl.XMLHandler.handleForwardReferences(XMLHandler.java:1197)
    at org.eclipse.emf.ecore.xmi.impl.XMLHandler.endDocument(XMLHandler.java:1282)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endDocument(AbstractSAXParser.java:745)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:841)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:770)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:327)
    at org.eclipse.emf.ecore.xmi.impl.XMLLoadImpl.load(XMLLoadImpl.java:175)
    at org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl.doLoad(XMLResourceImpl.java:261)
    at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1563)
    at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1342)
    at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoad(ResourceSetImpl.java:259)
    at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoadHelper(ResourceSetImpl.java:274)
    at org.eclipse.xtext.resource.XtextResourceSet.getResource(XtextResourceSet.java:265)
    at org.eclipse.xtext.resource.SynchronizedXtextResourceSet.getResource(SynchronizedXtextResourceSet.java:25)
    at org.eclipse.xtext.builder.resourceloader.SerialResourceLoader$1.next(SerialResourceLoader.java:47)
    ... 19 more

eclipse.buildId=unknown
java.version=1.8.0_144
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=zh_CN
Framework arguments:  -product org.eclipse.platform.ide
Command-line arguments:  -product org.eclipse.platform.ide -data G:\yakindu\sct-master\ws/../runtime-New_configuration -dev file:G:/yakindu/sct-master/ws/.metadata/.plugins/org.eclipse.pde.core/New_configuration/dev.properties -os win32 -ws win32 -arch x86_64 -consoleLog

org.eclipse.ui.navigator
Error
Tue Jun 11 21:28:43 CST 2019
An exception occurred invoking extension: org.yakindu.sct.ui.navigator.resourceContent for object L/example-transition/transition.sct

org.eclipse.emf.ecore.resource.impl.ResourceSetImpl$1DiagnosticWrappedException: org.eclipse.emf.ecore.xmi.UnresolvedReferenceException: Unresolved reference '_VgBc6Yv6Eemg6-kEj95RIA'. (platform:/resource/example-transition/transition.sct, 8, 138)
    at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.handleDemandLoadException(ResourceSetImpl.java:319)
    at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoadHelper(ResourceSetImpl.java:278)
    at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getResource(ResourceSetImpl.java:406)
    at org.yakindu.sct.ui.navigator.StatechartNavigatorContentProvider.getChildren(StatechartNavigatorContentProvider.java:122)
    at org.eclipse.ui.internal.navigator.extensions.SafeDelegateTreeContentProvider.getChildren(SafeDelegateTreeContentProvider.java:98)
    at org.eclipse.ui.internal.navigator.extensions.SafeDelegateTreeContentProvider.getChildren(SafeDelegateTreeContentProvider.java:244)
    at org.eclipse.ui.internal.navigator.extensions.SafeDelegateTreeContentProvider.getChildren(SafeDelegateTreeContentProvider.java:96)
    at org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider$1.run(NavigatorContentServiceContentProvider.java:160)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
    at org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider.internalGetChildren(NavigatorContentServiceContentProvider.java:146)
    at org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider.getChildren(NavigatorContentServiceContentProvider.java:132)
    at org.eclipse.jface.viewers.AbstractTreeViewer.getRawChildren(AbstractTreeViewer.java:1415)
    at org.eclipse.jface.viewers.TreeViewer.getRawChildren(TreeViewer.java:350)
    at org.eclipse.jface.viewers.StructuredViewer.getFilteredChildren(StructuredViewer.java:903)
    at org.eclipse.jface.viewers.AbstractTreeViewer.getSortedChildren(AbstractTreeViewer.java:621)
    at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:813)
    at org.eclipse.jface.viewers.TreeViewer.createChildren(TreeViewer.java:604)
    at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:766)
    at org.eclipse.jface.viewers.AbstractTreeViewer.handleTreeExpand(AbstractTreeViewer.java:1541)
    at org.eclipse.jface.viewers.TreeViewer.handleTreeExpand(TreeViewer.java:889)
    at org.eclipse.jface.viewers.AbstractTreeViewer$3.treeExpanded(AbstractTreeViewer.java:1553)
    at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:136)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
    at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4145)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1055)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1079)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1064)
    at org.eclipse.swt.widgets.Tree.wmNotifyChild(Tree.java:7535)
    at org.eclipse.swt.widgets.Control.wmNotify(Control.java:5809)
    at org.eclipse.swt.widgets.Composite.wmNotify(Composite.java:2004)
    at org.eclipse.swt.widgets.Control.WM_NOTIFY(Control.java:5367)
    at org.eclipse.swt.widgets.Control.windowProc(Control.java:4824)
    at org.eclipse.swt.widgets.Display.windowProc(Display.java:4784)
    at org.eclipse.swt.internal.win32.OS.CallWindowProcW(Native Method)
    at org.eclipse.swt.internal.win32.OS.CallWindowProc(OS.java:2203)
    at org.eclipse.swt.widgets.Tree.callWindowProc(Tree.java:1554)
    at org.eclipse.swt.widgets.Tree.WM_LBUTTONDOWN(Tree.java:6431)
    at org.eclipse.swt.widgets.Control.windowProc(Control.java:4804)
    at org.eclipse.swt.widgets.Tree.windowProc(Tree.java:5963)
    at org.eclipse.swt.widgets.Display.windowProc(Display.java:4784)
    at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
    at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2309)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3559)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1173)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1062)
    at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:156)
    at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:628)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:563)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:151)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:155)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:199)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:391)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:246)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:659)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:595)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1501)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1474)
Caused by: org.eclipse.emf.ecore.xmi.UnresolvedReferenceException: Unresolved reference '_VgBc6Yv6Eemg6-kEj95RIA'. (platform:/resource/example-transition/transition.sct, 8, 138)
    at org.eclipse.emf.ecore.xmi.impl.XMLHandler.handleForwardReferences(XMLHandler.java:1197)
    at org.eclipse.emf.ecore.xmi.impl.XMLHandler.endDocument(XMLHandler.java:1282)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endDocument(AbstractSAXParser.java:745)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:841)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:770)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:327)
    at org.eclipse.emf.ecore.xmi.impl.XMLLoadImpl.load(XMLLoadImpl.java:175)
    at org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl.doLoad(XMLResourceImpl.java:261)
    at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1563)
    at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1342)
    at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoad(ResourceSetImpl.java:259)
    at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.demandLoadHelper(ResourceSetImpl.java:274)
    ... 63 more

However, there is no error when opening this portion of yakindu generated with the yakindu tool. Looking forward to your help.Thank you !

andreasmuelder commented 5 years ago

There is a transition missing with the incoming xmi:id _VgBc6Yv6Eemg6. However, you should not create the XMI "by hand" - use the EMF Framework instead to avoid dealing with such low level details like XMI Ids.