SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

BPMとRuby on Rails Scaffoldの連携によるマスタメンテナンスアプリケーションの自動生成

SOAの上位ツールであるBPMとRuby on Railsの連携に関する検討

  • このエントリーをはてなブックマークに追加

AquaLogic BPM Studio では、ビジネスプロセスのモデリングやそのプロセスに関連する画面などを定義することができます。 BPM Studio で定義したモデルや画面を、Ruby on Rails などのその他のフレームワークのアプリケーションへ変換したいといった要求が出てきています。 その要求に対応するために本稿では、AquaLogic BPM StudioとRuby on Railsの連携に関する検討の第一段階として、AquaLogic BPM Studioで作成したBPM Object変数定義とRoR scaffoldを連携させることにより、BPMからRoRのマスタメンテナンスアプリケーションを自動生成する方法に関して、説明します。

  • このエントリーをはてなブックマークに追加

はじめに

 現在、IT業界ではSOAに注目が集められており、ビジネスプロセスの記述言語としてBPMが主に使用されています。そのためのツールとして、AquaLogic BPM Studioが有名です。一方、スクリプト言語であるRubyが注目を浴びており、エンタープライズ領域にRuby on Railsが適用されてきています。

 このような背景の中、BPM Studioで定義したモデルや画面を、Ruby on Railsなど他のフレームワークのアプリケーションへ変換したいといった要求が出てきています。その要求に対応するために本稿では、AquaLogic BPM Studioで作成したBPM Object変数定義とRoR scaffoldを連携させることにより、BPMからRoRのマスタメンテナンスアプリケーションを自動生成する方法に関して説明し、AquaLogic BPM StudioとRuby on Railsの連携に関する検討の第一段階としてお役に立てていただければと思います。

対象読者

  • Rubyプログラマー
  • SOAに興味のあるSEやSEマネージャ

必要な環境

 本稿が対象とする開発環境は、次のとおりです。

  • Ruby 1.86以降
  • Ruby on Rails 2.0.0以降
  • AquaLogic BPM Studio 6.0.3の評価版
    (リンク先ページ下部、「Oracle Business Process Management Studio 6.0 MP4」よりダウンロード可能)

完成図

図1-完成図
図1-完成図

解説内容

 図1に示されるように、AquaLogic BPM Studioで設計したBPMNに関連する変数定義を使用して、最終的にメンテナンスアプリケーションを自動生成します。AquaLogic BPM Studioで作成した変数定義は、XCDLファイルに格納されています。XCDLファイルのエレメントに変数が定義されており、このエレメントを解析することで、マイグレーションファイルとデータアクセスクラスを生成することができます。この生成を行うプログラムをBPM Scaffoldと呼びます。

 生成されたマイグレーションファイルを使用してマイグレーションを実行し、エレメントで定義した変数を格納するテーブルをデータベース上に作成します。ConditionScaffoldでBPM Scaffoldで作成したデータアクセスクラスを読み込み、そのデータアクセスクラスが繋がっているテーブルをメンテナンスするアプリケーションを作成します。

  1. まず、BPM Scaffoldでエレメントを解析する方法に関して説明します。
  2. 次に、マイグレーションの実行に関して説明します。
  3. 最後に、ConditionScaffoldでメンテナンスアプリケーションを自動生成する方法に関して説明します。

BPM Scaffoldによるファイルの生成

 BPM Scaffoldは図2に示されるように、doc配下のxcdlファイルを一覧で表示します。一覧で表示された中の一つをクリックすることでbpm_migrationが起動され、マイグレーションファイルとデータアクセスが生成されます。ここではまず、doc配下のxcdlファイルを一覧で表示する方法を説明します。次に、bpm_migrationの起動方法に関して、最後に、bpm_migrationのソースコードに関して、解説していきます。

図2-BPM Scaffoldの実行
図2-BPM Scaffoldの実行

doc配下のxcdlファイルの一覧表示

 下記のコードにより、doc配下のxcdlファイルを一覧表示します。

file_list.rhtml
<div class="title" style="margin-bottom: 10px;">
  <h2>AquaLogic BPM Scaffold</h2>
</div>

<p>
AquaLogic BPM Scaffold とは、AquaLogic BPM Studioで作成したプレゼンテーション画面を
構成する XCDL ファイルを解析し、migrate ファイルと model クラスを生成するためのものです。
</p>

<p>
このプログラムでは、「#{RAILS_ROOT}/doc/」の配下に AquaLogic BPM Studio で作成した
プロジェクトがあると仮定しています。
</p>

<ul>
  <% 
    require "find"
    Find.find("#{RAILS_ROOT}/doc") { |path|
      element = path.split("/")
      model_name = element.pop
      if model_name =~ /.xcdl/
  %>
        <li>
          <%= link_to "#{path}",
                 :action=>'generate', :path=>"#{path}" %>
        </li>
   <% end %>
  <% } %>
</ul>
  1. Find.findにより「#{RAILS_ROOT}/doc」ディレクトリ配下のファイルを読み込みます。
  2. =~」のパターンマッチングにより、拡張子がxcdlになっているかを確認し、そうであればlink_toによりリンクを生成します。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
マイグレーションの実行

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
特集記事連載記事一覧

もっと読む

この記事の著者

ryujinseiichi(リュウジンセイイチ)

http://ryujinseiichi.sblo.jp/ RubyやAIRなどの新規技術に興味があり、研究を行っています。 最近、seasar2やBPMの研究も始めました。  

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3190 2008/11/17 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング