Construction of DSL from existing Meta-model - dsl

i want to create my own DSL, i already have a meta model and i want to know if there is any tutorial or any thing that can help me to create my own DSL from my meta model.
ps: i'm planning to use Xtext framework to implement my DSL

Related

How to generate DSL with papyrus tool?

I am currently working on DSLs for this I used papyrus tool to model my UML profile and meta model.
I finished creating my UML profile and now I want to generate my DSL from the UML profile but I don't know how to do it, there is less documentation on it.
So I ask for help to be able to generate the DSL with papyrus.

Alternative to Support Vector Machine for Intent Classification

I am trying to implement a chatbot using linked data. In a paper, I read that I can use SVM for the intent classification which is basically the first stage in conversational systems. It is the process of mapping queries to a predefined class. I wanted to know whether there is any other way or applications / programs that I can use to do this. Could someone please advise me?
Thank you in advance.
Rasa is an open-source platform that can be used to easily set up a chatbot, and through it you can set up several kinds of intent classification (including with an SVM).
It also allows you to annotate example utterances and map them to intents within the tool itself.
These tasks are certainly doable on your own, but if speed and easy integration with a working chatbot are priorities, then I recommend using a platform like that.

UML design for a nodeJS web application

I am designing an web application based on 3rd tier architecture
client side : HTML5 , CSS , JS , jQuery ..
middle tier : nodeJS
Database : mysql
I need to do the general design of the middle tier part using UML diagrams.
what's confusing is that nodeJS is not class oriented like Java and C++ , so the question is can I implement a class diagram for the node part and if not what are the alternatives ?
Don't beat me if I'm too far off but nodeJS is some kind of middleware. That means it transforms some input to some output in a black box. You can model that as component having a required and a provided interface.
Something along this line:
You can think your application design in terms of UML Classes and you can code using one of the temporary approaches to Classes in JavaScript and class is planned core feature in the upcoming JavaScript 6. So classes are the way to go.
Object Oriented Programming with classes is a programming paradigm, way to look at things, way to give names to things...
See also:
uml-diagrams.org: Class Diagrams Examples

Suitable diagramming type and tool for a model based on DevExpress Domain Components

I'm busy prototyping a training management app using the DevExpress eXpressApp framework & Domain Components. This paradigm uses interfaces to specify domain entities, with default implementation logic generated at runtime, so that I can effectively enjoy multiple inheritance in my business entities.
I'm curious as to what sort of diagram I could use here to communicate my design assumptions to my client, without requiring me to build and deploy too frequently merely to confirm my assumptions etc. Hopefully fellow SO users familiar with this framework and it being used like I am doing can shed some light on this.
I felt that your question is a duplicate to Design and Modeling for DexExpress eXpressApp Framework. Basically, you will be able to model individual domain components using built-in Visual Studio modeling tools. It works pretty well with interfaces. Probably, you can also build a custom modeling solution based on an open source Liekhus ADO.NET Entity Data Model XAF Extensions tool.
Finally, since you are using XAF (and I believe you are also a DevExpress customer), I suggest you contact our Support Team to get fast and guaranteed assistance on XAF or any other DevExpress products.
You can model with a class diagram but what is generated at run time can not be modeled. I mean that for example if you have a model then you use the Model Driven Development in order to generate a code from your model then the generated code is not anymore your model but only the code like your run time classes.
Hope this help.

Using java classes in Grails

I have a Java\Spring\Hibernate application - complete with domain classes which are basically Hibernate POJOs
There is a piece of functionality that I think can be written well in Grails.
I wish to reuse the domain classes that I have created in the main Java app
What is the best way to do so ?
Should I write new domain classes extending the Java classes ? this sounds tacky
Or Can I 'generate' controllers off the Java domain classes ?
What are the best practices around reusing Java domain objects in Grails\Groovy
I am sure there must be others writing some pieces in grails\groovy
If you know about a tutorial which talks about such an integration- that would be awesome !!!
PS: I am quite a newbie in grails-groovy so may be missing the obvious. Thanks !!!
Knowing just how well Groovy and Grails excel at integrating with existing Java code, I think I might be a bit more optimistic than Michael about your options.
First thing is that you're already using Spring and Hibernate, and since your domain classes are already POJOs they should be easy to integrate with. Any Spring beans you might have can be specified in an XML file as usual (in grails-app/conf/spring/resources.xml) or much more simply using the Spring bean builder feature of Grails. They can then be accessed by name in any controller, view, service, etc. and worked with as usual.
Here are the options, as I see them, for integrating your domain classes and database schema:
Bypass GORM and load/save your domain objects exactly as you're already doing.
Grails doesn't force you to use GORM, so this should be quite straightforward: create a .jar of your Java code (if you haven't already) and drop it into the Grails app's lib directory. If your Java project is Mavenized, it's even easier: Grails 1.1 works with Maven, so you can create a pom.xml for your Grails app and add your Java project as a dependency as you would in any other (Java) project.
Either way you'll be able to import your classes (and any supporting classes) and proceed as usual. Because of Groovy's tight integration with Java, you'll be able to create objects, load them from the database, modify them, save them, validate them etc. exactly as you would in your Java project. You won't get all the conveniences of GORM this way, but you would have the advantage of working with your objects in a way that already makes sense to you (except maybe with a bit less code thanks to Groovy). You could always try this option first to get something working, then consider one of the other options later if it seems to make sense at that time.
One tip if you do try this option: abstract the actual persistence code into a Grails service (StorageService perhaps) and have your controllers call methods on it rather than handling persistence directly. This way you could replace that service with something else down the road if needed, and as long as you maintain the same interface your controllers won't be affected.
Create new Grails domain classes as subclasses of your existing Java classes.
This could be pretty straightforward if your classes are already written as proper beans, i.e. with getter/setter methods for all their properties. Grails will see these inherited properties as it would if they were written in the simpler Groovy style. You'll be able to specify how to validate each property, using either simple validation checks (not null, not blank, etc.) or with closures that do more complicated things, perhaps calling existing methods in their POJO superclasses.
You'll almost certainly need to tweak the mappings via the GORM mapping DSL to fit the realities of your existing database schema. Relationships would be where it might get tricky. For example, you might have some other solution where GORM expects a join table, though there may even be a way to work around differences such as these. I'd suggest learning as much as you can about GORM and its mapping DSL and then experiment with a few of your classes to see if this is a viable option.
Have Grails use your existing POJOs and Hibernate mappings directly.
I haven't tried this myself, but according to Grails's Hibernate Integration page this is supposed to be possible: "Grails also allows you to write your domain model in Java or re-use an existing domain model that has been mapped using Hibernate. All you have to do is place the necessary 'hibernate.cfg.xml' file and corresponding mappings files in the '%PROJECT_HOME%/grails-app/conf/hibernate' directory. You will still be able to call all of the dynamic persistent and query methods allowed in GORM!"
Googling "gorm legacy" turns up a number of helpful discussions and examples, for example this blog post by Glen Smith (co-author of the soon-to-be-released Grails in Action) where he shows a Hibernate mapping file used to integrate with "the legacy DB from Hell". Grails in Action has a chapter titled "Advanced GORM Kungfu" which promises a detailed discussion of this topic. I have a pre-release PDF of the book, and while I haven't gotten to that chapter yet, what I've read so far is very good, and the book covers many topics that aren't adequately discussed in other Grails books.
Sorry I can't offer any personal experience on this last option, but it does sound doable (and quite promising). Whichever option you choose, let us know how it turns out!
Do you really want/need to use Grails rather than just Groovy?
Grails really isn't something you can use to add a part to an existing web app. The whole "convention over configuration" approach means that you pretty much have to play by Grails' rules, otherwise there is no point in using it. And one of those rules is that domain objects are Groovy classes that are heavily "enhanced" by the Grails runtime.
It might be possible to have them extend existing Java classes, but I wouldn't bet on it - and all the Spring and Hibernate parts of your existing app would have to be discarded, or at least you'd have to spend a lot of effort to make them work in Grails. You'll be fighting the framework rather than profiting from it.
IMO you have two options:
Rewrite your app from scratch in Grails while reusing as much of the existing code as possible.
Keep your app as it is and add new stuff in Groovy, without using Grails.
The latter is probably better in your situation. Grails is meant to create new web apps very quickly, that's where it shines. Adding stuff to an existing app just isn't what it was made for.
EDIT:
Concerning the clarification in the comments: if you're planning to write basically a data entry/maintenance frontend for data used by another app and have the DB as the only communication channel between them, that might actually work quite well with Grails; it can certainly be configured to use an existing DB schema rather than creating its own from the domain classes (though the latter is less work).
This post provides some suggestions for using grails for wrapping existing Java classes in a web framework.

Resources