GithubHelp home page GithubHelp logo

gemoc-studio-execution-moccml's People

Contributors

dvojtise avatar ebousse avatar jdeantoni avatar kairides avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gemoc-studio-execution-moccml's Issues

ModelStateHelper doesn't support RTD distributed in several emf resources

Currently, when looking for RTD to save, the generated ModelStateHelper searches only in the current root model element contents.

(cf.

)

In the case of complex models split into several resources, the ModelStateHelper will ignore RTD that not directly contained by this root model element.

I suggest to use a crossreferencer in order to look for all resources used by the model.

redundant code in codeexecutor

Hello,

I'm developing a Henshin Concurrent Engine for gemoc with @szschaler. My code aims to reuse as much as possible of the existing concurrent engine code base. I've noticed that I had to define a Code Executor for my Henshin concurrent language extension but it's actually not doing anything as all the execution in my engine is done in the execution engine class itself.

Would it be possible to refactor the codebase so that the dependency on CodeExecutor is optional?

Our code executor

Thank you,
Kinga

generic launcher

Hello,

I'm developing a Henshin Concurrent Engine for gemoc with @szschaler and I've noticed that I had to copy a lot of code into my launcher. It seems that there's no generic launcher so I was wondering if it would be possible add one in the next versions to reduce the code redundancy.

Your launcher

Our launcher

Thank you,
Kinga

RuntimeException when creating or restoring branches while looking for setter in ModelStateHelper

In the current studio, both sigpml and tfsm examples fail to navigate the trace

Navigating raise errors such as: (using the tfsm example)

java.lang.RuntimeException: not method found for org.eclipse.gemoc.example.moccml.tfsm.tfsm.impl.StateImpl::setcurrentState
	at oncurrenttfsm.xdsml.api.impl.OncurrentTFSMModelStateHelper.restoreModelState(OncurrentTFSMModelStateHelper.java:107)
	at org.eclipse.gemoc.execution.concurrent.ccsljavaengine.eventscheduling.trace.EventSchedulingModelExecutionTracingAddon.restoreModelState(EventSchedulingModelExecutionTracingAddon.java:222)
	at org.eclipse.gemoc.execution.concurrent.ccsljavaengine.eventscheduling.trace.EventSchedulingModelExecutionTracingAddon.restoreModelState(EventSchedulingModelExecutionTracingAddon.java:151)
	at org.eclipse.gemoc.execution.concurrent.ccsljavaengine.eventscheduling.trace.EventSchedulingModelExecutionTracingAddon.access$4(EventSchedulingModelExecutionTracingAddon.java:149)
	at org.eclipse.gemoc.execution.concurrent.ccsljavaengine.eventscheduling.trace.EventSchedulingModelExecutionTracingAddon$2.doExecute(EventSchedulingModelExecutionTracingAddon.java:135)
	at org.eclipse.emf.transaction.RecordingCommand.execute(RecordingCommand.java:135)
	at org.eclipse.emf.workspace.EMFCommandOperation.doExecute(EMFCommandOperation.java:119)
	at org.eclipse.emf.workspace.AbstractEMFOperation.execute(AbstractEMFOperation.java:150)
	at org.eclipse.core.commands.operations.DefaultOperationHistory.execute(DefaultOperationHistory.java:496)
	at org.eclipse.emf.workspace.impl.WorkspaceCommandStackImpl.doExecute(WorkspaceCommandStackImpl.java:208)
	at org.eclipse.emf.transaction.impl.AbstractTransactionalCommandStack.execute(AbstractTransactionalCommandStack.java:165)
	at org.eclipse.emf.transaction.impl.AbstractTransactionalCommandStack.execute(AbstractTransactionalCommandStack.java:219)
	at org.eclipse.gemoc.executionframework.engine.core.CommandExecution.execute(CommandExecution.java:33)
	at org.eclipse.gemoc.execution.concurrent.ccsljavaengine.eventscheduling.trace.EventSchedulingModelExecutionTracingAddon.internalBranch(EventSchedulingModelExecutionTracingAddon.java:145)
	at org.eclipse.gemoc.execution.concurrent.ccsljavaengine.eventscheduling.trace.EventSchedulingModelExecutionTracingAddon.branch(EventSchedulingModelExecutionTracingAddon.java:109)
	at org.eclipse.gemoc.addon.eventscheduling.timeline.views.timeline.EventSchedulingTimeLineView.branchIfPossible(EventSchedulingTimeLineView.java:276)
	at org.eclipse.gemoc.addon.eventscheduling.timeline.views.timeline.EventSchedulingTimeLineView.handleDoubleCick(EventSchedulingTimeLineView.java:239)
	at org.eclipse.gemoc.addon.eventscheduling.timeline.views.timeline.EventSchedulingTimeLineView.access$0(EventSchedulingTimeLineView.java:218)
	at org.eclipse.gemoc.addon.eventscheduling.timeline.views.timeline.EventSchedulingTimeLineView$1.mouseDoubleClick(EventSchedulingTimeLineView.java:114)

Not possible to open the multibranch timeline if some element aren't available and visible in the workspace

When launching the concurrent engine (Sigpml or tfsm)

the timeline may fail with


java.lang.NullPointerException
	at org.eclipse.gemoc.timeline.view.AbstractTimelineView.setTimelineProvider(AbstractTimelineView.java:638)
	at org.eclipse.gemoc.addon.eventscheduling.timeline.views.timeline.EventSchedulingTimeLineView.disposeTimeLineProvider(EventSchedulingTimeLineView.java:188)
	at org.eclipse.gemoc.addon.eventscheduling.timeline.views.timeline.EventSchedulingTimeLineView.configure(EventSchedulingTimeLineView.java:142)
	at org.eclipse.gemoc.addon.eventscheduling.timeline.views.timeline.EventSchedulingTimeLineView.update(EventSchedulingTimeLineView.java:293)
	at org.eclipse.gemoc.addon.eventscheduling.timeline.views.timeline.EventSchedulingTimeLineView.engineSelectionChanged(EventSchedulingTimeLineView.java:194)
	at org.eclipse.gemoc.executionframework.ui.views.engine.EnginesStatusView.fireEngineSelectionChanged(EnginesStatusView.java:343)
	at org.eclipse.gemoc.executionframework.ui.views.engine.EnginesStatusView$1.selectionChanged(EnginesStatusView.java:89)
	at org.eclipse.jface.viewers.Viewer$1.run(Viewer.java:151)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)

or

java.lang.NullPointerException
	at org.eclipse.gemoc.timeline.view.AbstractTimelineView.setTimelineProvider(AbstractTimelineView.java:638)
	at org.eclipse.gemoc.addon.eventscheduling.timeline.views.timeline.EventSchedulingTimeLineView.configure(EventSchedulingTimeLineView.java:151)
	at org.eclipse.gemoc.addon.eventscheduling.timeline.views.timeline.EventSchedulingTimeLineView.init(EventSchedulingTimeLineView.java:84)
	at org.eclipse.ui.part.ViewPart.init(ViewPart.java:113)
	at org.eclipse.ui.internal.ViewReference.initialize(ViewReference.java:129)

Actually, once it crashed that way, it not possible to open it without restarting the eclipse

the only way I found to correctly use the timeline is to:

  • first open the timeline and make sure is it visible (if it is stacked in a tab and not visible, the same error occurs) (the exception varies depending if it is not present or not visible)
  • then launch the simulation (with the multibranch addon)

createLanguageSpecificDSAHelper fails when doing a clean all

in the builder (https://github.com/eclipse/gemoc-studio-execution-moccml/blob/master/ccsljava_xdsml/plugins/org.eclipse.gemoc.execution.concurrent.ccsljavaxdsml.ui/src/main/java/org/eclipse/gemoc/execution/concurrent/ccsljavaxdsml/ui/builder/GemocLanguageDesignerBuilder.java), the createLanguageSpecificDSAHelper fails with no class def found when doing a clean all on the workspace

this is because the classpath lookup tries to search classes that are not built yet.

This generator should ensure that no builder is currently running on dependency projects before generating these helper classes

Broken sigpml example with groovy error since switch to java 11

the SigPML example is currently broken

when running the SigPML example, at some point it calls some groovy code (coming from the user model)

This calls fails with the following exception:

WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.codehaus.groovy.reflection.CachedClass (file:/home/dvojtise/eclipse-workspaces/gemoc-workspace/org.eclipse.gemoc.example.moccmlsigpml.groovy/lib/groovy-all-3.0.0-alpha-1.jar) to method java.lang.Object.finalize()
WARNING: Please consider reporting this to the maintainers of org.codehaus.groovy.reflection.CachedClass
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.eclipse.gemoc.execution.concurrent.ccsljavaengine.extensions.k3.dsa.impl.K3DSLCodeExecutor.internal_execute(K3DSLCodeExecutor.java:72)
	at org.eclipse.gemoc.execution.concurrent.ccsljavaengine.extensions.k3.dsa.impl.K3DSLCodeExecutor.execute(K3DSLCodeExecutor.java:46)
	at org.eclipse.gemoc.execution.concurrent.ccsljavaengine.dsa.executors.CodeExecutorDispatcher.execute(CodeExecutorDispatcher.java:68)
	at org.eclipse.gemoc.execution.concurrent.ccsljavaengine.dse.SynchroneExecution.callExecutor(SynchroneExecution.java:53)
	at org.eclipse.gemoc.execution.concurrent.ccsljavaengine.dse.SynchroneExecution.run(SynchroneExecution.java:33)
	at org.eclipse.gemoc.execution.concurrent.ccsljavaengine.engine.MoccmlExecutionEngine.executeSmallStep(MoccmlExecutionEngine.java:152)
	at org.eclipse.gemoc.execution.concurrent.ccsljavaxdsml.api.core.AbstractConcurrentExecutionEngine.executeSelectedLogicalStep(AbstractConcurrentExecutionEngine.java:99)
	at org.eclipse.gemoc.execution.concurrent.ccsljavaxdsml.api.core.AbstractConcurrentExecutionEngine.selectAndExecuteLogicalStep(AbstractConcurrentExecutionEngine.java:121)
	at org.eclipse.gemoc.execution.concurrent.ccsljavaxdsml.api.core.AbstractConcurrentExecutionEngine.performExecutionStep(AbstractConcurrentExecutionEngine.java:134)
	at org.eclipse.gemoc.execution.concurrent.ccsljavaxdsml.api.core.AbstractConcurrentExecutionEngine.performStart(AbstractConcurrentExecutionEngine.java:68)
	at org.eclipse.gemoc.executionframework.engine.core.AbstractExecutionEngine.startSynchronous(AbstractExecutionEngine.java:352)
	at org.eclipse.gemoc.executionframework.engine.core.AbstractExecutionEngine$1.run(AbstractExecutionEngine.java:335)
	at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: BUG! exception in phase 'semantic analysis' in source unit 'Script1.groovy' null
	at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:970)
	at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:633)
	at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:582)
	at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:324)
	at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:294)
	at groovy.lang.GroovyShell.parseClass(GroovyShell.java:558)
	at groovy.lang.GroovyShell.parse(GroovyShell.java:570)
	at groovy.lang.GroovyShell.evaluate(GroovyShell.java:454)
	at groovy.lang.GroovyShell.evaluate(GroovyShell.java:493)
	at groovy.lang.GroovyShell.evaluate(GroovyShell.java:464)
	at org.eclipse.gemoc.example.moccmlsigpml.k3dsa.AgentAspect._privk3_execute(AgentAspect.java:276)
	at org.eclipse.gemoc.example.moccmlsigpml.k3dsa.AgentAspect.execute(AgentAspect.java:45)
	... 17 more
Caused by: java.lang.IllegalArgumentException
	at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:160)
	at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:143)
	at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:418)
	at org.codehaus.groovy.ast.decompiled.AsmDecompiler.parseClass(AsmDecompiler.java:72)
	at org.codehaus.groovy.control.ClassNodeResolver.findDecompiled(ClassNodeResolver.java:254)
	at org.codehaus.groovy.control.ClassNodeResolver.tryAsLoaderClassOrScript(ClassNodeResolver.java:192)
	at org.codehaus.groovy.control.ClassNodeResolver.findClassNode(ClassNodeResolver.java:172)
	at org.codehaus.groovy.control.ClassNodeResolver.resolveName(ClassNodeResolver.java:128)
	at org.codehaus.groovy.control.ResolveVisitor.resolveToOuter(ResolveVisitor.java:722)
	at org.codehaus.groovy.control.ResolveVisitor.resolve(ResolveVisitor.java:359)
	at org.codehaus.groovy.control.ResolveVisitor.visitClass(ResolveVisitor.java:1285)
	at org.codehaus.groovy.control.ResolveVisitor.startResolving(ResolveVisitor.java:213)
	at org.codehaus.groovy.control.CompilationUnit$13.call(CompilationUnit.java:691)
	at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:966)
	... 28 more

I have tested the following version:

  • GEMOC latest dev + openjdk 11 ❎
  • GEMOC 3.3.0 + openjdk 11 ❎
  • GEMOC 3.3.0 + openjdk 8 NA (this GEMOC is built using java 11)
  • GEMOC 3.2.0 + openjdk 11 ❎
  • GEMOC 3.2.0 + openjdk 8 ✔️

launcher tabs code reuse

Hello,

I'm developing a Henshin Concurrent Engine for gemoc with @szschaler. My code aims to reuse as much as possible of the existing concurrent engine code base. I've noticed that when it comes to different launcher tabs there was a lot of code we had to copy instead of inherit/directly use it as the plugin does not export it. Would it be possible to make that part more reusable in the future?

our tabs

Thank you,
Kinga

ECL construct using feedback result from DSA doesn't work anymore

In ECL, a construct allows to compute some event (force/forbid presence of an event) based on the result of the call to a DSA.

One example of this is available in the TFSM example (bundled with the GEMOC Studio)

cf.

def if (true) : evaluate : Event = self.evaluate() [res] switch case (res = true) force evaluatedTrue;

def : evaluatedTrue : Event  = self
def : evaluatedFalse : Event = self
def if (true) : evaluate : Event = self.evaluate() [res] switch 
   case (res = true) force evaluatedTrue;
   case (res = false) force evaluatedFalse;

where it forces to have evaluatedTrue or evaluatedFalse events right after having called the evaluate() method in the dsa of the evaluate event.

even if the syntax is not very nice or intuitive (we probably need to open some discussion about it, eg. if (true) is a trick for the parser to force an ECLDefinition instead of having an OCLDefinition), this is very convenient when mixing DSA and DSE behaviour

Unfortunately, this doesn't work anymore

(we didn't notice it before because the current model example in TFSM doesn't use EvaluatedGuard but only TemporalGuard that doesn't require this feature)

Step to reproduce:
create some example model in the TFSM using an EvaluatedGuard (such as the one attached to this issue) and set the guard condition to "false" (ie. the transition must not fire), when running, the LogicalStep view will show the fire action associted to the transition.

and both evaluatedFalse and evaluatedTrue are proposed in the LogicalStep view

image

evaluated_guard_issue.zip

ISolver tied to CSSL engine

Hello,

I'm developing a Henshin Concurrent Engine for gemoc with @szschaler. My code aims to reuse as much as possible of the existing concurrent engine code base. I've noticed that the ISolver class im implementing is not fully generic as it references some packages that are specific for the CSSL engine which I had to include in my project because of these imports:
import fr.inria.aoste.timesquare.instantrelation.CCSLRelationModel.OccurrenceRelation;
import fr.inria.aoste.trace.EventOccurrence;
import fr.inria.aoste.trace.ModelElementReference;

I was wondering if it'd be possible in the future versions to make ISolver more generic?

ISolver
My Solver

Thank you,
Kinga

strong naming assumption in the RTDAccessor generation

For the RTDaccessor generation to work it is mandatory to name the aspect of a class XXX as XXXAspect. This is a restriction easy to remove by changing the Builder here:

Forcing/forbidding event in the stimuli manager view doesn't update the LogicalStep view

In the documentation about the Stimuli manager view
https://download.eclipse.org/gemoc/docs/nightly/userguide-mw-execute-animate-debug-models.html#mw-executing-concurrent-model-stimuli-manager-view-section
it is indicated that the logical step view is updated when events are forced (force to tick or force not to tick)

This feature is currently broken

ex: with the TFSM example:

image

in the stimuli manager, the event MSE_pingerTime_2_ticks is forced to not tick but it still appears in the logical steps view

make Logical Step (decider) view an extension of debugger view

Currenlty, the Logical Step view has a "user decider" strategy tha tis used to do some step by step

image

this is redundant with the debugger view; Additionally, when paused on a logical step decision (in the logical step view), the variable view is not available.

These 2 views should collaborate (ie. their underlying engine addon)

Proposal:
makes Logical step view an extension of the debugger view;
remove step by step decider
remove redundant pause/resume and stop button from Logical Step view

when clicking on "pause" button (the one from the debugger), this would stop the engine as usual (showing the stack with its last executed logical step and showing the variable view)
the Logical step view can now show the possible logical step. The step proposed by the decider strategy should be highlighted. (when paused, changing the strategy may change the proposed logical step)
The possible actions would then be:

  • step over ( from debugger UI): use the proposed logical step and pause to the next decision
  • step into: allows to stop before executing the specific actions of the logical step
  • run (from debugger UI): use proposed logical steps until a manual pause or breakpoint
  • double click on the logical step view on a logical step: use the user choice instead of the proposed one and pause on next decision

The stack view would display different information (similar to sequential)
bottom: the engine (selecting it allows to get the variable view)
middle: the previous logical step executed
top: in italic: the future action: either a decision (with a new icon and explicit text) or the logical step actions that are about to run (ie. already selected but not run yet) (this is similar to the breakpoints which stop because one of the actions has a target that has a breakpoint on it.

dsl file corruption by one of the builders

When working on my concurrent language, my .dsl file is regularly corrupted by a background task builder.

image

It replaces the content that has name, ecore, k3, ecl, and metaprog keys by ecore and ale keys

Currently activated builders (project file) are:

<buildSpec>
		<buildCommand>
			<name>org.eclipse.jdt.core.javabuilder</name>
			<arguments>
			</arguments>
		</buildCommand>
		<buildCommand>
			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
			<arguments>
			</arguments>
		</buildCommand>
		<buildCommand>
			<name>org.eclipse.pde.ManifestBuilder</name>
			<arguments>
			</arguments>
		</buildCommand>
		<buildCommand>
			<name>org.eclipse.pde.SchemaBuilder</name>
			<arguments>
			</arguments>
		</buildCommand>
		<buildCommand>
			<name>org.eclipse.gemoc.xdsmlframework.ide.ui.GemocLanguageProjectBuilder</name>
			<arguments>
			</arguments>
		</buildCommand>
		<buildCommand>
			<name>org.eclipse.gemoc.execution.concurrent.ccsljavaxdsml.ui.MoccmlLanguageProjectBuilder</name>
			<arguments>
			</arguments>
		</buildCommand>
	</buildSpec>
	<natures>
		<nature>org.eclipse.gemoc.xdsmlframework.ide.ui.GemocLanguageProjectNature</nature>
		<nature>org.eclipse.gemoc.execution.concurrent.ccsljavaxdsml.ui.MoccmlLanguageProjectNature</nature>
		<nature>org.eclipse.jdt.core.javanature</nature>
		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
		<nature>org.eclipse.pde.PluginNature</nature>
	</natures>

Need to investigate which builder is doing this ...

increase version moccml engine plugins

Similarly to what we've done with other GEMOC components, we should increase the version number used by moccml plugins in order to reflect that it is now part of Gemoc at eclipse and not anymore part of the older project.

So I suggest moving from 2.3.0 to 3.0.0 (as a major change) and then continue to increase the version numbers depending on the content that has changed between releases (changes are tracked repository per repository using (gren)[https://github.com/github-tools/github-release-notes] in order to populate the changelog from the pull requests see https://github.com/eclipse/gemoc-studio/wiki/Official-commiter-memo)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.