I am currently doing a project to convert uml diagrams to java code,in one of the step I have to create an ast for general activity diagram and write a java code for the ast. The problem is I am not sure how to represent it in java code to accept any activity diagram as an input. Please need some help.
This is the meta-model of a general activity diagram, I want to represent this diagram as a java code to accept inputs.
Activity Diagram Metamodel
The first diagram on the second page of the pdf
What tool are you using to create your activity diagrams? Most will provide an API to query models and/or an XMI export*. In either case you don't get an AST as such, more an Object structure of your model. But it's still pretty easy to iterate that structure and generate code.
One option worth considering is the Eclipse Modeling Framework (EMF). There are tools available for both creating diagrams (e.g. Papyrus) and a multitude of options for generating code from models (e.g. Acceleo) - have a look at the 'Model to Text' (M2T) sub-project.
Even if you decide to use another tool for diagram creation, it's possible to use Eclipse M2T for code generation; most tools will export XMI in the eclipse dialect.
hth.
--
*XMI is the 'standard' for UML model interchange. It was plagued with inconsistency in interpretation originally, and there are still some problems among tools today. However: it is an XML dialect so even if tool B can't directly import XMI from tool A, it's usually possible to convert between the two.
Related
I'm a java developer new with uml modeling. I wanna create a complete web application (backend+db+jms+security +ui) deployable to an application server by using only UML. Despite I didn't understand what really is meta-modeling I started using Umbrello, visual paradigm and eclipse emf.
I've read just a little about omg's xmi standard.
So supponing to have an xmi file I didn't understand how to generate java code. Eclipse emf for example would generate "strange" java code.
Do I need to
write my own xmi parser?
Do I need to write my own xmi parser?
No.
Eclipse EMF generator generates code for saving and loading your model, so there is no need to write your own parser or serializer.
EMF allows you to generate a maximum of four different plugins for a defined model:
Model: The model contains all entities, packages and factories to create instances of the model.
Edit: The edit plugin contains providers to display a model in a UI. For example, the providers offer a label for every model element, which can be used to display an entity showing an icon and a name.
Editor: The editor plugin is a generated example editor to create and modify instances of a model.
Test: The test plugin contains templates to write tests for a model.
This is a good article if you need any help with EMF:
What every Eclipse developer should know about EMF.
http://eclipsesource.com/blogs/tutorials/emf-tutorial/
I'm writing a program in java language which takes the java source code as an input and the output is xmi file which contains the class diagram of the source code.
I have researched for xmi structure but I was not able to find an adequate resource which explain the structure and order of tags.
First question is how can I found out what is the order of the tags and definition of each tag? for instance, what is the meaning of "isActive = false" etc?
Secondly, is there any suggestion of libraries or anything in java language which can help me to finish this project?
I think the tag order doesn't matter in XMI. In general, XMI just defines how to map MOF to XML. So basically you build the M2 model (=UML) from Java and and then map this to XML with XMI if I understand this correctly (and I think the double indirection is why you don't find good resources for the mapping from UML to XMI directly).
For many people, examples may be more accessible than the chain of transformation rules defined by the various OMG standards. So I'd just draw a minimal UML example diagram in my favorite UML tool for the export aspect I am interested in and look at the exported XMI. Then add features as needed...
P.S.: You may want to use the Java reflection classes (package java.lang.reflect) instead of parsing the the Java source yourself to generate XMI (if you don't need to preserve method argument names).
Does such program exist?
I have to study Java SE and diagram with all classes and interfaces from given package will be immensely helpful.
For example I want to plot all relations between subclasses of types Collection and Map.
I know there are a lot of images with core package structure already, but don't really trust them because they are proven to be incomplete, outdated or even inaccurate.
Whilst I don't know of any tools for generating UML class diagrams from JavaDocs, there are many tools available that can generate UML class diagrams from source code, and there are already many questions on StackOverflow that suggest various tools that can do this
This question seems to have a good range of options that you could explore. I've used ArgoUML myself, but I suggest looking at the options to find the one what appeals to you most.
You can download the Java SE source code and generate the class diagrams for the sections you're interested in.
You can create RCP application using ZEST. This is pretty cool
You can not create diagrams from JavaDoc because there is no official implementation. Only Java code could be reversed and displayed as class or sequence diagrams.
I played to reverse the full Java language with EclipseUML Omondo. It was really interesting to get all dependencies, inheritances, associations at package but also at project level, or even at multi-projects level.
The trick Omondo use is to convert manually each Java Id to a single UML Id. You get after a 30 mn process a huge model composed by hundred of thousands UML Ids saved in an XMI format respecting java project structure. I mean you get project > packages > class> iner classes > attrbites etc...
From this model then you create views by drag and drop or directly selecting the entire package. You can show hide relations, navigate in the code at graphical level etc.....
Really amazing technology !!
I'm in the need of a eclipse plugin / or tool which can generate
class diagrams from my java/groovy code and vice versa. Actually it is a
groovy/grails project. The actual requirements are:
I should be able to draw class diagram and generate code and generate class diagram
from existing code
(Important) I have to export the generated class diagram in some format to share it
with my teammates, so they can generate code from it.
Please suggest me a good solution.
Thanks in advance.
You can use visual paradigm for uml. Using Visual Paradign you generate UML diagrams of your and generate code, using UML diagrams
You can create diagrams, share it on CVS or by email but it is only possible with the java code. I don't think it exist for both groovy and java.
You have two options today which is to use a live code and model synchronization tool which is more integration level or a model driven tool which will generate all the code once the model has been completed.
I personally prefer the first live synchronization option because if the code is updated then my model will also be. It is painful to produce diagrams and then realize that at the implementation stage the development team has changed the code and that my diagrams are not anymore relevant !!
Is there a way to get reversed engineered uml diagrams into Omnigraffle?
I got a bunch of eclipse plugins that can create UML class diagrams, but not in a format that Omnigraffle can handle.
Is there any way to get my project from eclipse to Omnigraflle?
Thanks!
I've created a little plugin for Eclipse in order to create an OmniGraffle UML-like class diagram from a Java package. It does not create files, but instead uses AppleScript to direcly draw the diagram in an opened OmniGraffle drawing. The plugin provides some options in order to control the diagram creation, e.g., show or hide private attributes etc. Parameterized collections are transformed into associations, however there is room for improvement. The plugin is described at
http://jpilgrim.github.com/eclipsetools/j2og/
where you will also find a link to the update site in order to easily install the plugin.
Yes, this is strange but no XMI export to Omnigraffe is available from UML 2.3.
I don't think this is a big job to be done so you can do it by yourself. You need to take the EclipseUML2 metamodel or the EMF model then manually identify each model element (e.g a class in UML 2.3 is .....in Omnigraffe, etc....)
Once all the elements have been identify then code a xml mapper. It would work.
A good mapper is about 18 months work for one engineer, but if you are 5 of you you can do it in less than 3-6 months (2months for codding and 4 months for testing).
Good luck for this potential project.
My question could be why the Omni Group has not done the xml export ?