SHOEISHA iD

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

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

CurlデベロッパーセンターPick Up(AD)

Oracleの「Developer」で作成された画面をCurlで実装!

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

本格的にCurlに移行したい場合

 では、前ページまでで説明した、画面の作り替えだけでなく、本格的にDeveloperからCurlへと移行したい場合は、どのようにすればよいのでしょうか。

 残念ながら、Developerで作成されたプログラムをCurlに移行するための専用のツールはありません。しかし、ちょっとした工夫で比較的簡単に移行できます。

Developer側のロジック

 Developerのソースコードは、PL/SQLで作られているため、それらの業務ロジックをOracleのストアドプロシージャに移行させ、Javaにて移行したストアドプロシージャを呼び出すサービスクラスを作成し、Curlより作成したサービスクラスを呼び出す構成にします。こうすれば、スムーズに移行でき、既存資産も活かせます。

  1. テキスト項目にコード入力確定時にコードに紐づく名称を表示(テキスト項目のWHEN-VALIDATE-ITEMにて商品マスタから名称を取得するSQL文を実行し、結果を名称項目に設定)
    テキスト項目のWHEN-VALIDATE-ITEM(Developer側で定義)
    BEGIN
       //商品マスタから名称を取得する。
       SELECT 商品名 INTO :検索条件.商品名 
       FROM 商品マスタ 
      WHERE 商品コード = :検索条件.商品コード
    END;
    
  2. 検索ボタン押下時に在庫情報を取得し、表示(検索ボタンのWHEN-BUTTON-PRESSEDにてDBから各種情報を取得するためのSQL文(カーソル)を実行し取得結果を明細に設定)
    検索ボタンのWHEN-BUTTON-PRESSED(Developer側で定義)
    DECLARE
      CURSOR C_SQL IS
          SELECT 倉庫コード,…..
          FROM 倉庫マスタ,……
          WHERE 品目コード = …...
    BEGIN
      first_record;
      FOR r_SQL  in C_SQL 受注 LOOP
         //明細行に設定
        create_record;
        :明細.倉庫コード := r_SQL.倉庫コード;
        ……………………….
      END LOOP;
    END;
    
Developerでの実装イメージ(在庫照会機能)
Developerでの実装イメージ(在庫照会機能)

Curl+ORB側のロジック

  • Curl

     APサーバ上のサービスクラスを呼び出し、その結果を該当の画面項目に設定

  • Java(APサーバ)

     DBにてテキスト項目のWHEN-VALIDATE-ITEM、検索ボタンのWHEN-BUTTON-PRESSEDを実装したストアドプロシジャを作成し、Java(APサーバ)より実行、その戻り値をJavaのデータクラスに設定するようなサービスクラスを作成

  • DBサーバ

     テキスト項目、ボタンに定義しているトリガーのロジックをストアドプロシジャ(※注1)に移行

    DECLARE
      CURSOR C_SQL IS
          SELECT 倉庫コード,…..
          FROM 倉庫マスタ,……
          WHERE 品目コード = …...
    BEGIN
      first_record;
      FOR r_SQL  in C_SQL 受注 LOOP
         //明細行に設定
        create_record;
        :明細.倉庫コード := r_SQL.倉庫コード;
        ……………………….
      END LOOP;
    END;
    
    BEGIN
       //商品マスタから名称を取得する。
       SELECT 商品名 INTO :検索条件.商品名 
       FROM 商品マスタ
      WHERE 商品コード = :検索条件.商品コード
    END;
    
    ※注1 ストアドプロシジャの定義

     ・テキスト項目のWHEN-VALIDATE-ITEM

     IN:商品コード

     OUT:商品名

     ・検索ボタンのWHEN-BUTTON-PRESSED

     IN:商品コード

     OUT:明細行配列

     を、NESTED TABLEにて定義します。

 業務ロジック・データアクセス部分は全てDB層にて定義しており、APサーバ(Java)層は、ロジックを呼び出すだけのラップサービスです。3層構造ですが、APサーバの役割が小さくてすみます。

Curl+ORBでの実装イメージ
Curl+ORBでの実装イメージ

次のページ
そのほかの注意点

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

  • このエントリーをはてなブックマークに追加
CurlデベロッパーセンターPick Up連載記事一覧

もっと読む

この記事の著者

SCSソリューションズ株式会社 井野 恵介(イノケイスケ)

2000年、九州住商情報システムに入社後多くのERPパッケージ開発を担当、その後現在のCurlビジネスに従事。

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

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング