Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

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

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

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2008/11/17 14:00

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によりリンクを生成します。

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

著者プロフィール

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5