画面ロード時の処理の作成
品目区分を選択するコンボボックスのデータは、画面ロード時に動的に取得します。このデータ提供部分のビジネスロジックを、これからRuby on Rails 2.0で作成します。
Ruby on Rails 2.0 でアプリケーションを作成するためには、railsコマンドにて新規プロジェクトを作成した上で、scaffoldなどのコマンドによりアプリケーションの雛型を作成していく必要があります。
今回は scaffold により生成したアプリケーションを添付ファイルに用意していますので、ダウンロードして使用してください。
ruby on rails でアプリケーションを作成する方法に関しては、
下記の記事を参考にしてください。
また、ActionWebService の活用方法に関しては、下記の記事を参考にしてください。
テーブルの準備
部品識別マスタ、手配区分マスタ、在庫区分マスタ、支給区分マスタを作成します。下記のスクリプトファイルを記述し、rakeコマンドでテーブルを作成します。
class CreateHinmokuKubun < ActiveRecord::Migration def self.up # 部品識別マスタ create_table :mst_buhin_shikibetsus do |t| t.column :buhin_shikibetsu, :string, :limit=>64 end # 手配区分マスタ create_table :mst_tehai_kubuns do |t| t.column :tehai_kubun, :string, :limit=>64 end # 在庫区分マスタ create_table :mst_zaiko_kubuns do |t| t.column :zaiko_kubun, :string, :limit=>64 end # 支給区分マスタ create_table :mst_shikyu_kubuns do |t| t.column :shikyu_kubun, :string, :limit=>64 end end def self.down drop_table :mst_buhin_shikibetsus drop_table :mst_tehai_kubuns drop_table :mst_zaiko_kubuns drop_table :mst_shikyu_kubuns end end
rake db:migrate
モデルクラスの作成
次に、部品識別マスタおよび手配区分マスタ、在庫区分マスタ、支給区分マスタのモデルクラスを作成します。Ruby on Rails 2.0 のActiveRecordクラスを継承した単純なクラスです。
class MstBuhinShikibetsu < ActiveRecord::Base end
class MstTehaiKubun < ActiveRecord::Base end
class MstZaikoKubun < ActiveRecord::Base end
class MstShikyuKubun < ActiveRecord::Base end
ウェブサービスクラスの作成
次に、『Rails ActionWebServiceジェネレータのカスタマイズ』の「MstWebServiceGenerator」を使用し、部品識別マスタおよび手配区分マスタ、在庫区分マスタ、支給区分マスタをメンテナンスするウェブサービスを作成します。
下記に部品識別マスタをメンテナンスするウェブサービスクラスを示します。その他のクラスは、添付ファイル同梱のファイルを参照してください。
class MstBuhinShikibetsuServiceController < ApplicationController wsdl_service_name 'MstBuhinShikibetsuService' web_service_api 'MstBuhinShikibetsuService' web_service_scaffold :invoke #------------------------------------------------------------------- # 全~を取得します。 #------------------------------------------------------------------- def find_all MstBuhinShikibetsu.find(:all) end #------------------------------------------------------------------- # ~を新規作成します。 #------------------------------------------------------------------- def create(arg_mst_buhin_shikibetsu) mst_buhin_shikibetsu = MstBuhinShikibetsu.new mst_buhin_shikibetsu.buhin_shikibetsu = arg_mst_buhin_shikibetsu.buhin_shikibetsu if mst_buhin_shikibetsu.save return "Succeeded" else return "Failed" end end #------------------------------------------------------------------- # ~を更新します。 #------------------------------------------------------------------- def update(arg_mst_buhin_shikibetsu) mst_buhin_shikibetsu = MstBuhinShikibetsu.find(arg_mst_buhin_shikibetsu.id) unless mst_buhin_shikibetsu return "Not Found." end mst_buhin_shikibetsu.buhin_shikibetsu = arg_mst_buhin_shikibetsu.buhin_shikibetsu if mst_buhin_shikibetsu.update return "Succeeded" else return "Failed" end end #------------------------------------------------------------------- # ~を削除します。 #------------------------------------------------------------------- def destroy(arg_mst_buhin_shikibetsu) mst_buhin_shikibetsu = MstBuhinShikibetsu.find(arg_mst_buhin_shikibetsu.id) if mst_buhin_shikibetsu.destroy return "Succeeded" else return "Failed" end end end
部品識別マスタなどをメンテナンスするアプリケーションの作成
次に、部品識別マスタおよび手配区分マスタ、在庫区分マスタ、支給区分マスタをメンテナンスするアプリケーションを作成します。Ruby on Rails 2.0のscaffoldジェネレータを使用して、それぞれのアプリケーションを作成します。作成したアプリケーションは添付ファイルに格納されていますので、ダウンロードしてください。
ダウンロードしたファイルをRailsで生成したアプリケーションの配下へ配置すると、下記のURLからそれぞれのマスタをメンテナンスできるようになります(Webサーバの起動が必要です)。
| AP名 | URL |
| 部品識別マスタメンテナンス | http://localhost:3000/mst_buhin_shikibetsus/list |
| 手配区分マスタメンテナンス | http://localhost:3000/mst_tehai_kubuns/list |
| 在庫区分マスタメンテナンス | http://localhost:3000/mst_zaiko_kubuns/list |
| 支給区分マスタメンテナンス | http://localhost:3000/mst_shikyu_kubuns/list |
次に、表3~6のようにデータを登録します。
| ID | buhin_shikibetsu |
| 1 | 梱包計画品 |
| 2 | 組立計画品 |
| 3 | オプション計画品 |
| 4 | 先行部組計画品 |
| 5 | 先行加工計画品 |
| 6 | 補修部品計画品 |
| ID | tehai_kubun |
| 1 | 内作品 |
| 2 | 外作品 |
| 3 | 外作品(外注費) |
| 4 | 完品購入品 |
| 5 | 材料・素材 |
| 6 | 手配不要品(ダブルビン、受給品) |
| ID | zaiko_kubun |
| 1 | 在庫品 |
| 2 | 非在庫品 |
| ID | shikyu_kubun |
| 1 | 一般部品 |
| 2 | 無償支給品 |
| 3 | 有償支給品 |
| 4 | 無償受給品 |
