- PR -

javaでWebブラウザにシーケンス図を描画する方法

1
投稿者投稿内容
KID
会議室デビュー日: 2007/06/20
投稿数: 3
投稿日時: 2007-06-20 15:58
はじめまして。
java初心者&初投稿なので説明が分かりづらいと思いますが、
よろしくお願いいたします。

javaでWebアプリケーションを作成しております。

Webブラウザ上にシーケンス図を描画したいのですが、
なにか良いライブラリなどはありますでしょうか?
以下描画例

  サーバ1 サーバ2 サーバ3
0:00 | 処理1 |      |
 :   |------→|       |
1:00 |      | 処理2 |
 :   |      |←------|
2:00 |      |      |
        ・
        ・
        ・

アプレットなどを使うと、クライアントマシンに
JREをインストールしなければいけないようなので、
サーバ側で描画作成を行いたいと思っております。
(サーバ側でグラフを作成するライブラリである
JFreeChartのようイメージ)

駄文で申し訳ありませんが、よろしくお願いいたします。
Edosson
ぬし
会議室デビュー日: 2004/04/30
投稿数: 675
投稿日時: 2007-06-20 16:32
以下のクラスを使えば、Imageが生成できます。
http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/awt/image/BufferedImage.html

使い方はこんな感じ。
コード:
BufferedImage image = new BufferedImage(300, 300, BufferedImage.TYPE_INT_RGB);
Graphics g = image.createGraphics();
g.setColor(Color.WHITE);
g.fillRect(0, 0, 300, 300);
g.setColor(Color.BLACK);
g.fillRect(50, 50, 100, 100);
g.drawString("hogehoge" , 15, 20);


ライブラリなんか探さにゃならんほどのものではないと思う。
そうそう都合のいいものが転がっているものでもなし。
つか、場所を決めて、線を引くなり文字を書き込むなりするメソッドを
いくつか書けば、立派なライブラリになるんじゃないかと。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-06-20 17:34
シーケンス図程度ならDIVタグをスタイルシートでいじってやれば表現できたりして。
それで嬉しいかは疑問だけど。

Edosson氏もおっしゃっていますが、HTMLレベルで表現できない図を表示したいなら、
画像を動的に作ってHTML側からimgタグで表示してやるのが一般的な手法ですね。
さやべえ
常連さん
会議室デビュー日: 2003/03/13
投稿数: 33
投稿日時: 2007-06-20 18:00
Code ReadingやCode Qualityで有名なDiomidis Spinellis氏のUMLGraphというライブラリがあります。

http://www.spinellis.gr/sw/umlgraph/
KID
会議室デビュー日: 2007/06/20
投稿数: 3
投稿日時: 2007-06-20 20:46
ご返答ありがとうございます。

BufferedImageクラス、Graphicsクラスで簡単な画像を作成して、
HTMLのimgタグに記述したところ、ちゃんと作成した画像が表示されました。
あとはがんばってGraphicsクラスで画面を作成すればシーケンス図が描画できそうです。
ありがとうございました。大変助かりました。

あとUMLGraphを調べてみたのですが、
使うことが出来れば1から画面を作成しなくて済み、
大変便利そうなツール?でした。
もしご存知でしたら教えていただきたいのですが、
UMLGraphは既に出来上がったjavaのクラスファイルを、
シーケンス図におこすものなのでしょうか?
今回自分が作成したいシーケンス図の元ネタは、
初めの投稿の図でいうと、
「0:00にサーバ1からサーバ2へ処理1を実行」
「1:00にサーバ3からサーバ2へ処理2を実行」
というような情報をメモリで持っています。
このような場合でもjavaのプログラムからシーケンス図を
作成することは可能でしょうか?
もし可能でしたら作成方法もご指導頂けないでしょうか?

何度も質問してしまい大変申し訳ありませんが、
よろしくお願いいたします。
1

スキルアップ/キャリアアップ(JOB@IT)