TOP>製品/サービス>カテゴリから探す>ディシジョンオートメーション>Progress Corticon>【Corticon Tech コラム】

Progress Corticon

【Corticon Tech コラム】

No.29 アプリケーションサーバを使わないCortion ディシジョンサービスの実行手順:前編(2018年10月17日)

No.29 アプリケーションサーバを使わないCortion ディシジョンサービスの実行手順:前編(2018年10月12日)

はじめに

これまでCorticon の機能や考え方などに関連するコラムを、ときにサンプルコードも交えながら掲載してまいりました。毎回楽しみにしているという声を頂戴し、大変嬉しい限りです。

さて、過去にご紹介したコラムの中で、「No.5 Corticon の呼び出し方と処理速度について(大量データ処理インプロセス編) 【前編】」(2016年9月14日) について、手順を一つずつ教えて欲しいというご意見を頂いたので、今回は、このインプロセスでの実行方法について前編/中編/後編の3部構成でご紹介します。

「No.5」はタイトルからも分かるように、大量データを処理する場合の Corticon Server 実行方式の 1つとして「インプロセス」があること、また、この方法を使用すると高パフォーマンスであることを、サンプルコードと実測値で説明しています。もし、「No.5 」を読む機会が無かった場合には、是非この機会にご一読ください。

じつは、「No.5 」は geek な氏が執筆しているため、分かる人には分かる手順となっています。本コラムでは、Eclipse 環境でJava クライアントからインプロセスで Corticon Server にディシジョンサービスをデプロイしアクセスする方法について、また、その後 Java クライアントをコンパイルするところまでの手順を、すこぉぉぉぉしだけ細かく説明します。「No.5 」の執筆者と同じく geek な方には本コラムは少々退屈かもしれませんがご容赦いただけると幸いです。
*Java クライアントアプリケーションの詳細についてはコラム「No.5」とは若干異なりますが、差異の説明は割愛します。

環境:Corticon 5.6.1.26

本コラムでは、Corticon Studio と、Corticon Studio インストーラに同梱の Eclipse 環境を使用して、Corticonをご存じの方にはお馴染み(はず)のサンプルのチュートリアル「tutorial」を、ディシジョンサービス「Cargo」としてインプロセスでデプロイし実行します。

この実行方式では、インプロセスで実行するためにCorticon Server のコアライブラリが必要です。
インプロセス方式で実行する場合、Tomcat 等のアプリケーションサーバ上で稼働中の Corticon Server とは別モノとして実行します。稼働中の Corticon Serverがある場合は、Corticon Serverを停止して後述のステップを進めていただくと、独立したCorticon Serverであることが分かりやすくなります。

サンプルプロジェクト:Tutorialの準備

  1. Corticon Studioを起動します。
  2. [ヘルプ] > [サンプル]を選択します
  3. サンプル ページで [Tutorial]を選択し、[Open]をクリックします。

画像1

  4. プロジェクトのインポート ウィンドウで[OK]をクリックします。

画像2

これで、Corticon Studio にサンプルのルールプロジェクト「tutorial」が取り込まれ、開きました。
このサンプルの概要を確認しましょう。
▶ ルール語彙:Cargo.ecore
  エンティティ:Aircraft、Cargo、FlightPlan
  属性:各エンティティに複数あり。
    このサンプルで使用する Cargo エンティティの属性は5つ:
      cargo、manifestNumber、needsRefrigeration、weight、volume
▶ ルールシート:Cargo.ers
  Cargoエンティティの3つの属性(weight、volume、needsRefrigeration)の値に基づき、
  使用するコンテナの種類を判断し、containerという属性に値をセットします。
▶ テストシート:Cargo.ert
  Cargo.ersに対して、データを用いてテストします。
▶ ルールフロー:tutorial_example.erf
  Cargo.ersを指定しています。

こういったルールを事前にコンパイルし、Javaクライアントアプリケーション内で起動した Corticon Serverにデプロイし実行します。なお、今回のサンプルでは、リクエストメッセージとレスポンスメッセージをcsvファイルで受け渡します。

画像3

リクエスト(入力)データ:sample.csv

画像4

レスポンス(出力)データ:sample_2.csv

では、実際の手順をみていきましょう。

1.語彙とマッピングする Java クラスを作成する

パースペクティブを Corticon から Java に切り替える

Corticon Studio 画面右側にあるパースペクティブタブ Java をクリックします。

画像5

パースペクティブに[Java]が表示されていない場合には、以下の手順で表示します。
[ウィンドウ] > [パースペクティブを開く] > [その他]

画像6

Java を選択し、[OK]をクリックします。

画像7

Java プロジェクトを作成する

今回のインプロセスのサンプルで作成するソースを格納する Java プロジェクトを作成します。

  1. [ファイル] > [新規] > [Java プロジェクト]を選択する。
  2. プロジェクト名に「InProcessApp」を入力する。
  3. 選択肢は全てデフォルトのままとし、[終了]ボタンをクリックする。

語彙のクラスに get メソッドとset メソッドを作成する

呼び出すルールで使用する語彙の各エンティティ対してクラスを作成します。本コラムでは、「Cargo」エンティティのみを使用しているため、ここでは「Cargo」用の Java クラスのみを作成します。

  4. パッケージ・エクスプローラで InProcessApp フォルダを展開し、[src]上で右クリックし、
    [新規] > [パッケージ]を選択する。パッケージ名に「cargoLibrary」を入力する。
  5. [cargoLibrary]パッケージ上で右クリックし、[新規] > [クラス]を選択する。
    パッケージ名は「Cargo」と入力する。
    (*このクラス名とエンティティ名は大文字小文字まで含めて正確に一致させる。)
    Java エディタ画面が開き、ソースを入力する準備ができました。
  6. エンティティの属性と一致する変数を定義し、それに併せてgetメソッドsetメソッドを
    作成します。(*変数名と属性名は大文字小文字まで含めて正確に一致させること。)

以下となるように入力してください。

package cargoLibrary;

public class Cargo {

  public String container;
  public String manifestNumber;
  public Boolean needsRefrigeration;
  public long volume;
  public long weight;

  public String getContainer() {
    return container;
  }
  public void setContainer(String container) {
    this.container = container;
  }
  public String getManifestNumber() {
    return manifestNumber;
  }  
  public void setManifestNumber(String manifestNumber) {
    this.manifestNumber = manifestNumber;
  }
  public Boolean getNeedsRefrigeration() {
    return needsRefrigeration;
  }
  public void setNeedsRefrigeration(Boolean needsRefrigeration) {
    this.needsRefrigeration = needsRefrigeration;
  }
  public long getVolume() {
    return volume;
  }
  public void setVolume(long volume) {
    this.volume = volume;
  }  
  public long getWeight() {
    return weight;
  }
  public void setWeight(long weight) {
    this.weight = weight;
  }
}

  7. ファイルを保存します。
  8. パッケージ・エクスプローラで CargoLibrary を選択します。
  9. [ファイル] > [エクスポート] > [Java] > [JARファイル]を選択します。
  10. cargoLibrary と関連するファイルを選択します。
  11. 保存場所を選択し、JAR ファイル名に「Cargo」を入力します。

2.Corticon ルールプロジェクトに Cargo.jar をインポートする

作成したCargo.jar ファイルを 語彙エンティティにマッピングします。
また、Cargo.jarをルールプロジェクトの Corticon Extensions に設定します。

パースペクティブを Java から Corticon に切り替える

Corticon Studio の画面右上のパースペクティブタブで、Corticon Designer タブをクリックして、切り替えます。

画像8

語彙の Java クラスをインポートする

  1. プロジェクト・エクスプローラで、[Tutorial] > [Tutorial-Done] を選択し、Cargo.ecore を開きます。
  2. [語彙] > [Javaオブジェクトメッセージング] > [Java クラスメタデータのインポート]をクリックします。
  3. Javaクラスメタデータのインポート 画面で、先ほど作成した Cargo.jar を選択し、[次へ]をクリックします。

画像9

  4. Javaパッケージ「cargoLibrary」を選択します。

画像10

  5. [終了]をクリックします。
  6. 語彙ファイルを保存します。

インポートした語彙の Java クラスのマッピングを確認する

語彙にインポートしてマッピングした Java クラスと変数を確認します。Cargo エンティティをクリックしてください。語彙の詳細情報が表示されていない場合には、[語彙] > [語彙詳細の表示]を選択します。
Cargo エンティティのプロパティ Java パッケージJava クラス名をご覧ください。Java パッケージが、語彙クラスを作成するときに指定したパッケージ名と一致しています。Java クラス名はエンティティ名と同じです。

画像11

属性ごとに、Java オブジェクトGetメソッドJavaオブジェクトSetメソッドがあります。manifestNumber 属性をクリックしてみましょう。Java クラスメタデータをインポートしたので、Get メソッドと Set メソッドが関連付けられていることがわかります。

画像12

Corticon プロジェクトに Cargo.jar を追加する

Corticon プロジェクトをプリコンパイル(.eds 化)する前に、プロジェクトに語彙クラスの Java オブジェクト(Cargo.jar)をクラスライブラリに追加します。

  1. プロジェクト・エクスプローラ上で Tutorialプロジェクトを選択し、[プロジェクト] > [プロパティ] を選択
    します。

画像13

  2. プロパティダイアログボックスで Corticon Extensions をクリックし、[追加]ボタンをクリックして、先ほど
    作成した Cargo.jar を選択し、[OK]をクリックします。

画像14

3.Corticon のルールプロジェクトをプリコンパイルする

ディシジョンサービスとしてデプロイするために、ルールフローをプリコンパイル(.eds 化)します。

  1. プロジェクト・エクスプローラ上で Tutorial プロジェクトを選択し、[プロジェクト] > [デシジョンサービスの
    パッケージとデプロイ
] を選択します。

画像15

  2. デプロイのターゲット 画面で、[後でデプロイするためにパッケージし保存する]を選択し、[次へ]をクリック
    します。

画像16

  3. ルールフローのパッケージ 画面で、[tutorial_example ]ルールフローを選択し、デシジョンサービス名に
    「Cargo」を入力します。

画像17

その他のJarファイル 画面ではデフォルトのまま[終了]ボタンをクリックします。



続きは『中編 』で解説します。


著者紹介

毛井さん

株式会社アシスト 情報基盤事業部 製品統括部プログレス推進部

株式会社アシスト入社以来、5インチFDを使うソフトウェアやメイン
フレームの簡易開発言語の時代から現在のProgress Corticonまで、
製品の日本語化や技術サポート、研修などを行う。

「Corticon Tech コラム」記事一覧


お求めの情報は見つかりましたでしょうか。

資料請求/お問い合わせはこちら(専門の担当者が確認し、ご対応します。)

お客様の状況に合わせて詳しい情報をお届けできます。お気軽にご相談ください。

ページの先頭へ戻る