Hi all!
I'm currently working on a PyDia Code Generator für Finite State
Machines (target Code is C), based on Dia UML diagrams. I've looked into
existing solutions, but could not find anything that suited all of our
needs, so I decided to go for a new one.
As we need some compatibility with our old system (that needs to be
replaced sometime), we need to use "nested" diagrams. As there's no
native support for that in Dia (if I understand correctly), I decided
to use UML-Objects in the diagrams to provide a name and a filename (or
path) for a diagram that should be embedded in the StateMachine.
To do that, I would need to parse a (previously not opened) file from
the PyDia Interpreter, so that I could pass the 'data' object to a
recursive call to begin_render() in my Generator. Unfortunately neither
the code (implementation and plugins) nor the documentation I found
could answer my question. Is there a way to do that?
I appreciate any comment that helps with the solution I asked for or
other useful hints on using PyDia or Dia in general for this purpose. I
really see great potential using Dia for FSM Code Generators (especially
in the field of embedded electronics or machine controllers, that are
often still written in plain C) as there are only few alternatives that
all have their own drawbacks.
Thanks,
Stefan
Hi Stefan,
I would advise you to take a look at the source code for dia2code original C code (not the new C++ port), especially at the logic for SQL DDL generation. It will show you how to traverse a class diagram with associations and you can probably extrapolate that to your needs with state machines. Moreover, the dia2code C code already has some routines that are common amongst the different code generation options.
One interesting feature you will notice is that objects are traversed first and then the associations on a second round for ALTER statements. It’s a practical solution which does not require to figure out the associations beforehand. One unintended feature of this which I think you will find interesting (and that we use extensively) is splitting the class diagram into different DIA files. So for example if we have a 400 table database, we can split the diagram into “realms” of tables. By putting an empty class (just the class name with no attributes) we can “connect” to the actual class defined in another diagram, because the generator will not generate DDL code for the empty class but will pick up the association, thus generating the foreign key. I noticed this “ feature” whilst I was contributing to some patches to the SQL DDL part of the dia2code project.
May I suggest that instead of starting off a new project, that you reach out to the dia2code guys and contribute to that project instead.
Best,
Alex
--
Stefan Günther <sguenther husware de>
_______________________________________________
dia-list mailing list
dia-list gnome org
https://mail.gnome.org/mailman/listinfo/dia-list
FAQ at http://live.gnome.org/Dia/Faq
Main page at http://live.gnome.org/Dia