Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » Epsilon » Running Workflows from the command line
Running Workflows from the command line [message #1064706] Thu, 20 June 2013 15:22 Go to next message
James Williams is currently offline James WilliamsFriend
Messages: 27
Registered: July 2009
Junior Member
Hi guys,

I need to headlessly run some Epsilon workflows, and am running into some difficulties. I've used the epsilon-ant-standalone.jar and org.eclipse.epsilon.workflow.emf.jar to get hold of Epsilon and the ANT tasks. Note: the EMF workflow project was missing a task definition file, so I have created one - remind me to send you a patch.

I've also packaged up my own plugins and EOL scripts into a jar file - I can execute both EOL and the Java code fine. However.. the jar also contains some Ecore models and associated generated code. I'm not sure how to register the EPackages from my jar file, and so am having trouble creating models.

Initially, I thought it would be fine to simply register the Ecore models using the epsilon.emf.register task and use the reflective API:

<epsilon.emf.register file="foo.ecore"/>


This is fine up to the point where one of my EOL scripts passes a model object to a custom Java tool which is expecting an object conforming to a particular model class, but instead gets a DynamicEObject, which it is unable to cast to the actual class.

So instead I tried to define a Java class for ANT to execute in order to register my EPackages with the registry before creating the models. Sadly, this does not work.

I've uploaded a zip here: http://jamesrobertwilliams.co.uk/tmp/epsilon-workflow-cmd.zip In build.xml you can see the call to Java to register the metamodel before loading the model. If you run build.xml, it should crash due to not finding the appropriate EPackage when loading the model. If you uncomment the <epsilon.emf.register..> line, it should run the EOL module, but throw a ClassCastException when executing the tool.

Also: a note to anyone attempting to do similar, if you want to reference Epsilon modules stored in jars, you need to define your imports as follows:

import "jar:file:///absolute/path/on/disk/mycode.jar!/path/to/modules/foo.eol";


Once resolved, I volunteer to write an article about all of this Smile

Many thanks,
Jim
Re: Running Workflows from the command line [message #1065018 is a reply to message #1064706] Sun, 23 June 2013 12:50 Go to previous messageGo to next message
Dimitris Kolovos is currently offline Dimitris KolovosFriend
Messages: 919
Registered: July 2009
Senior Member
Hi Jim,

I suspect that the task below is running RegisterSAFMetamodels in a new VM

<java classpathref="epsilon-classpath" classname="jw.research.crepe.casestudies.saf.tools.RegisterSAFMetamodels"/>

Replacing it with the following seems to be solving this problem (I'm getting an NPE at at jw.fighter.players.fantastic.FantasticBot.findOrCreateCharacteristic[FantasticBot.java:74] but I guess that's a different story)

<epsilon.eol>
var t : new Native("jw.research.crepe.casestudies.saf.tools.RegisterSAFMetamodels");
t.register();
</epsilon.eol>

Cheers,
Dimitris
Re: Running Workflows from the command line [message #1065035 is a reply to message #1065018] Sun, 23 June 2013 19:15 Go to previous message
James Williams is currently offline James WilliamsFriend
Messages: 27
Registered: July 2009
Junior Member
Thanks, Dimitris! That works perfectly Smile
Previous Topic:Lack of clarity on .ecorediag and .ecore synchonisation
Next Topic:Generating a new ecore model + diagram from existing one
Goto Forum:
  


Current Time: Sat Dec 20 06:41:36 GMT 2014

Powered by FUDForum. Page generated in 0.19461 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software