做工具是边探索边做的,但是我所在的项目的情况是,要做的东西和方向大部分要听美国客户的安排。这个工具做了三年,最后才发现前面做的模型转换和图形编辑器的缺陷很大,如果要接着做下去,需要花费大量的efforts,并存在很大的risk。因此美国客户缩小了胃口,从开发图形编辑器变成开发图形浏览器。
模型本来就可以用文本来描述,图像的模型只是为了在给用户的文档中插入,增加文档的可读性。
于是乎,总结前面做模型转换的经验。利用了Graphviz(DOT语言),Kieler开源的layout程序,以及apache的Batik来做了一个图形浏览器。因为有前面模型转换的经验,这个工具做起来十分的得心应手。具体其实就是将输入的模型转换成Kieler的模型,后面Kieler会自动将其转换成DOT的模型,由这个DOT模型串行化成DOT文件,在Graphviz中打开,就是拥有很好layout的图。
在做CSD的时候,遇到了一些麻烦,因为DOT没法layout CSD,于是乎研究了很久。最后是使用了Kieler的算法先将模型layout出来,layout好的kieler模型记录了具体的图形坐标,利用这些坐标,再欧诺个Batik来画出最终的图,就完成任务了。
总结所得:
1. Kieler的layout算法
2. Graphviz以及DOT语言
3. Apache Batik