2013年1月12日土曜日

AstahScriptでアクティビティ図の遷移を出力してみる

仕事で作業フローをAstahでActivity Diagramで記述していました。
でも、Astahのままだとチェックリストとして機能としては使えないなぁ
と思ったので、AstahScriptでアクションをリストに落とせるようにしてみました。

JavaScriptはもう疎くなってしまったので、Groovyで書けばもっとすっきりする記述になります。


Astah API



//すべてのアクションの遷移を出力する
importPackage(com.change_vision.jude.api.inf.model)
//http://members.change-vision.com/javadoc/astah-api/6_6_3/api/en/doc/javadoc/index.html
seqs = astah.findElements(IActivityDiagram)
println("START")
var myObj = {};
for ( var i in seqs )
{
    var seq = seqs[i];
    var startNode = getStartNode(seq);
    getNext(seq,startNode)
//    getNext(seq,startNode.getOutgoings()[0].getTarget())
}
println("END")

function getNext(seq,tmp){
    var outgoings=tmp.getOutgoings();
    if(outgoings != 0){
        for(var index in outgoings)
        {
            var id = tmp + outgoings[index].getTarget();
            //Setがあれば置き換える
            if(myObj[id]=="SET"){
                continue;
            }
            myObj[id]="SET"
            //printNodeType(tmp)
            println(tmp+"->"+outgoings[index].getTarget())
            //【制限】前のアクションにもどる場合は無限ループになる。
            getNext(seq,outgoings[index].getTarget())
        }
    }
    return
}


function printNodeType(tmp){
        println("========")
        if( tmp instanceof IAction ){
            println("IAction"+tmp.getName())
            println(tmp.getInputs())
            println(tmp.getOutputs())
            println(tmp.isCallBehaviorAction())
            
        }else if (tmp instanceof IObjectNode ){
            println("IObjectNode"+tmp.getName())   
            println(tmp.getInState())   
            println(tmp.getBase())   
            
        }else if ( tmp instanceof IControlNode){
            println("ControlNode"+tmp.getName())
            println(tmp.isFinalNode())
            println(tmp.isForkNode() )
            println(tmp.isInitialNode() )
            println(tmp.isJoinNode() )
            println(tmp.isMergeNode() )
        }
        println("========")
}

function getStartNode(seq){
    var activities=seq.getActivity().getActivityNodes()
    var startNode;
    for ( var k in activities)
    {
        node = activities[k]
        if ( node instanceof IControlNode ){
            if( node.isInitialNode()){
                return node
            }
        }        
    }
    return null;
}

2013年1月5日土曜日

XLSBeansを軽く調査してみました。

Excelを読み込む処理の効率化のため、ExcelからEMFに変換するツールがなかったかな?とさがしていた所見つけて面白そうだったので、調査してみました。

概要
  • XLSBeansはAnnotationを用いて、JavaBeansとExcelをマッピングするライブラリ
  • ホームページはこちら
  • Amateras Projectで作成されているため、純日本製
  • 基本的な使い方はドキュメントに記述されているので、そのまま読めば使える。
  • データ取得方法の例
    • セル指定(row,column)
    • ラベル指定(label指定した隣のセルのデータ取得)
    • 縦レコード指定
      • 水平方向に連続するデータのマッピング
    • 横レコード指定
      • 垂直方向に連続するデータのマッピング
    • 繰り返しテーブル指定
      • テーブルが繰り返しあるケース
  • Annotationを使わずXMLで定義することも可能
    • ダイナミックアノテーションという機能
    • OGNL式で記述 参考ページ
    • OGNL式は現在MVELに移行されつつあるそうです。
  • FieldProcessor機能によりannotationの追加が可能
  • 取得したセルの位置を保持する機能

上記のような便利機能が使えるため、非常に簡単にExcelのパースが行えるようになります。


ちょっとネックな点
  • String型でしかできない?
    • FieldProcessorを拡張すれば可能。

サンプルプログラムはgithubのここ参照






2012年12月28日金曜日

EATOPについて

最近少しだけ、eclipse auto IWGで出てきたEATOPについて簡単に調べてみました。



簡潔にいうと


  • EAST-ADLツールフレームワークを作成する。
    • EAST-ADLはアーキテクチャ記述言語
  • 共通部分を非競争領域のためオープンソースとしてメンテナンス
  • 競争領域はツールベンダががんばるところ。
  • AUTOSARとEAST-ADLのツールフレームワークを共通化
    • AUTOSARは車載システムの共通化
  • M2Mでシームレスに開発ができる。
    • EDONAの話


2012年12月8日土曜日

EuGENiaを使って簡単なGMFの作成

Eclipse Modeling勉強会で知ったEuGENiaを早速使ってみました。
設定手順を簡単にまとめました。


epsilon開発環境のダウンロード


epsilonのダウンロードサイトからEclipseの環境をダウンロードします。
EuGENiaやemfatic変換などのプラグインが入っています。

ecoreファイルの作成

空のEMFプロジェクトを作成します。modelフォルダ内にecoreを作成します。
今回のモデルは勉強会で作成したecoreと同じです。














ecoreからemfaticファイルへ変換

ecoreファイルを選択して、右クリックをして、"Generate Emfatic Source"を選択します。
拡張子emfファイルが作成されます。

















gmfannotationの設定


拡張子emfファイルを開いて、下記のようなgmfのannotationを追加します。


@namespace(uri="http://network/1.0", prefix="network")
@gmf(foo="bar")
package network;

@gmf.diagram(foo="bar")
class Network {
  val Node[*] nodes;
  val Link[*] links;
}

@gmf.node(label = "name")
class Node {
  attr String name;
}

@gmf.link(source="source", target="target",target.decoration="arrow", style="dot", width="2",name="name")
class Link {
  ref Node[1] source;
  @gmf.link(target.decoration="arrow", style="dash")
  ref Node[1] target;
  attr String name;
}



GMF Editorの自動生成

拡張子emfファイルを選択し、右クリックメニューで、Eugenia > Generate GMF editorを選択します。下記拡張子のファイルが自動生成&ソースコード生成まで行ってくれます。
これにて、GMFの設定は完了です
  • gmfgen
  • gmfgraph
  • gmfmap
  • gmftool


















動作確認

右クリックでEclipse Applicationを指定して、起動します。ウィザードでExamplesカテゴリのNetworkDiagramを作成します。GMF用のエディタで開くと下の図のようなものが書ける画面が作成されます。
これで完了!!!












GMFというと非常に色々設定しなければ行けないというイメージがあって、取っ付きにくかったという印象があったので、上記対応だけ行えば、GMFの設定が自動設定されるというのは非常に素晴らしく、GMFを使う機会が増えるのではないかと思う。
プロトタイプ等を作成するときには非常に有効だと思う。



2012年12月7日金曜日

Eclipse Modeling勉強会に行ってきました

Eclipse Modeling 勉強会があったので、参加してきました。

場所は機械振興会館。目の前に東京タワー。
勉強会終わったあと外でたら綺麗だったので、みんなカメラで撮っていました。

EMFの勉強会って、札幌であったのは覚えているが、東京でEclipse Modeling系の勉強会は初めてだったかな。EMFを使用している身としては参加しない訳には行かないだろうと思って参加しました。


スライド一覧




所感としてモデリングという題材として、このような議論、情報共有できる場
が開催された事は非常にうれしい事でした。
うちの会社のメンバーも参加させて、モデリングという意識が強められるようになるといいなぁと思いました。メタモデルの概念が分かる人が多くないだろうし。

また、次回はこんなツールがあって、色々使ってみましたというプラクティス的な
発表があると面白いかなあと思った。

2012年12月5日水曜日

Macのxmindの日本語入力について

自分は仕事とかでmindmapを作成する場合にはXmindを使っています。
会社では最新版(2012/12/05現在の最新版はv3.3.0)をインストールしてやっています。
  • スプラッシュ画面の画像変わった
  • mindmapのテンプレートが用意されている。
  • ローカルヒストリが使える。

ローカルヒストリ機能が非常に有用だったので、自宅でもインストールしてみようと
やってみました。
インストール自体の問題はないのですが、日本語入力すると無視される。。。。。
Windowsでは入力できるが、Macだとできないようで。。。。。。。

ver.3.2.1をインストールしたら正しく日本語が入力できた。
ver.3.2.1は日本市場向けということで、日本語入力がうまくサポートしているのだろうか。
できたらv.3.3.0もちゃんと日本語入力サポートされたxmindがあればもっと使えるようになるんだろうなぁ。


2012年11月4日日曜日

eclipse_orionを試してみた。

eclipse orionが2012/10/29にver.1.0のリリースの発表がされたようです。
実際ダウンロードサイトを見るとビルドログは2012/10/19にver.1.0はビルドされていたようです。

eclipse orionってなによ?ってことで

  • Webブラウザで開発が行える統合開発プラットーフォーム
    • WebブラウザをIDEとして使える。
    • JavaScriptでエディタを実装。コード補完などもJavascriptで実装。
  • どこでもコーディングできる
    • ソースコード等はorion内で管理しているためorionにログインすればどこでもコーディング可能。
  • OrionはWebサービスとして動作しているIDE
    • jettyで動いています。
  • OSGiにて拡張が可能
  • デスクトップIDEの模造ではない。
  • orionhubってところで管理およびIDEが使えるが、ローカルにorionをダウンロードして使う事が可能。
  • orion上でフォルダ、ファイルの追加などもブラウザからも操作できる。
  • git との連携もできる。
  • 検索、リソース比較もできる。



軽い動作確認:
  • ローカルにorionを入れて動作させてみる。
    • Windows動作確認
      • orionをダウンロードし、展開、orion.exeを実行
      • localhost:8080にアクセスしても、レスポンスデータが空で戻ってくる。
      • 原因は不明だが調査している。。。。
    • Mac動作確認
      • orionをダウンロード、展開、orionを実行
      • localhost:8080にアクセスするとログイン画面が出てきた。
      • アカウント作成し、ログインするとnavigator画面が表示される。
      • HTMLエディタを使ってみたが、選択した場所からずれるという現象があったりするため、ちょっと不安定なイメージが。
      • Shellはhelpを打ってみると分かるが5種類のコマンドしかなく、いまいちな感じ。
        • cd , ls , edit , pwd, help だけ。
        • cdの移動はorionのフォルダのみ移動可能。

今回はこんな程度のまとめ、orionのプラグインを作成して、拡張してみる。
日本語資料がほとんどないので、英語よまないとなぁ。