intra-mart Accel Platform 外部ソフトウェア接続モジュール 仕様書 第3版 2017-04-01

サンプルプログラム

サンプル内容

このサンプルは intra-mart Accel Platform システム外の Java 実行環境から任意のページをリクエストする URL を取得するサンプルソースになります。 スクリプト開発モデルで作成されたページ 「sample/chart/default_graph」をリクエストするための URL を作成します。

動作に必要な環境構築

外部ソフトウェア連携を行う場合は、以下の手順で連携に必要な環境を作成してください。
  1. 外部連携クライアントモジュールに含まれているクラスアーカイブ・ファイル「imaca_client-XXX-main.jar」を連携させるアプリケーションが動作する環境にコピーしてください。
    (jar ファイルは、WARファイル内の「WEB-INF/lib」にあります。)
  2. コピーしたアーカイブファイルの「imaca_client-XXX-main.jar」に対してクラスパスを設定してください。


バージョンの異なる jar ファイルの場合、正常に連携動作させることができない可能性がありますので、パッチ等を適用した場合やリビジョンアップをした場合などは、十分注意をして ください。 なお、intra-mart Accel Platform に対してパッチを適用したときなどは、パッチに含まれる imaca_client-XXX-main.jar を上書きコピーしてご利用ください。

プログラムソース

package jp.co.intra_mart.sample.service.client.application;

import java.io.IOException;

import jp.co.intra_mart.foundation.service.client.application.HTTPActionEventHandler;
import jp.co.intra_mart.foundation.service.client.application.HTTPActionEventHandlerException;
import jp.co.intra_mart.foundation.service.client.application.HTTPActionEventURL;
import jp.co.intra_mart.foundation.service.client.application.PasswordSecurityHTTPActionEventFilterHandler;
import jp.co.intra_mart.foundation.service.client.application.WebApplicationHTTPActionEventHandler;
import jp.co.intra_mart.foundation.service.client.application.content.AccessibleLinkHTTPActionEventFilterHandler;
import jp.co.intra_mart.foundation.service.client.application.content.PresentationPageHTTPActionEventHandler;

public class JSSPConnectURLCreator {

    /**
     * コマンドプロンプトからメインクラスとして指定された場合に実行されるメソッド。
     * @param args コマンドライン引数
     */
    public static void main(final String[] args) {
        try {
            // スクリプト開発モデルの画面をリクエストするためのURLを取得
            final String jsspURL = createJSSPURL();
            // 結果の表示
            System.out.println("URL: " + jsspURL);
        } catch (final Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 指定のアカウント・パスワードによるセキュリティセッション環境で、 メニュー画面を作成してソースを返します。
     * @return ページURL
     * @throws IOException 入出力エラーが発生した場合にスローされます。
     * @throws HTTPActionEventHandlerException イベント実行時に例外が発生した場合にスローされます。
     */
    public static String createJSSPURL() throws IOException, HTTPActionEventHandlerException {
        // イベント実行ハンドラの作成
        final String path = "sample/chart/default_graph";
        HTTPActionEventHandler handler = new PresentationPageHTTPActionEventHandler(path);

        // 絶対パスでリンクするための定義
        handler = new AccessibleLinkHTTPActionEventFilterHandler(handler);

        // ログイン・セキュリティ環境の構築
        final String tenantId = "default";
        final String userCd = "user";
        final String password = "password";
        handler = new PasswordSecurityHTTPActionEventFilterHandler(handler, tenantId, userCd, password);

        // URL の取得
        final String url = "http://localhost:8080/imart/HTTPActionEventListener";
        final HTTPActionEventURL result = WebApplicationHTTPActionEventHandler.getURL(handler, url);
        return result.getURL();
    }

}

コラム

このソースをコンパイルするときは、「imaca_client-XXX-main.jar」をクラスパスに設定してください。
実行時は、このソースをコンパイルしてできたクラスファイルを、実行する Java プロセス環境から利用できる場所に保存してください。

注意

バーチャルテナントによる複数テナントの環境で使用する場合は、PasswordSecurityHTTPActionEventFilterHandlerのインスタンス生成時にアクセスするテナントの「tenantId」を指定します。

「tenantId」が指定されていない場合はデフォルトテナントに指定されているテナントにアクセスします。

intra-mart Accel Platform 2013 Winter以前
テナントIDの指定は必要ありません。

ログイン・セキュリティ環境の構築

ログインセッション環境でイベントを実行するためには、以下のいずれかの ActionEventFilterHandler を利用する必要があります。
  • jp.co.intra_mart.foundation.service.client.application.GroupSecurityHTTPActionEventFilterHandler

    Anonymousユーザでイベントを実行します。

  • jp.co.intra_mart.foundation.service.client.application.AccountSecurityHTTPActionEventFilterHandler

    指定されたユーザコードのユーザでログイン認証を行って、イベントを実行します。

  • jp.co.intra_mart.foundation.service.client.application.PasswordSecurityHTTPActionEventFilterHandler

    指定されたユーザコード・パスワードでログイン認証を行って、イベントを実行します。

コラム

GroupSecurityHTTPActionEventFilterHandlerおよび、AccountSecurityHTTPActionEventFilterHandlerは標準の状態では利用できなくなっています。
利用したい場合は、「WEB-INF/web.xml」に記載されている HTTPActionEventListener の init-param 「use.account.security」の値を true に指定ください。

外部ソフトウェア連携時の認可設定

外部ソフトウェア連携モジュールを利用したイベント実行時に認可機能によるアクセス制御を行いたい場合は以下のActionEventFilterHandlerを ログイン・ログインセキュリティ用のActionEventFilterHandlerの前に設定してください。

  • jp.co.intra_mart.foundation.service.client.application.AuthorizationHTTPActionEventFilterHandler

    指定された認可URIでアクセス制御を行います。


実装例

認可 URI 「service://sample/chart/default_graph」のリソースのアクセス権限を持つユーザのみ実行できるようにする場合は、以下のように実装します。

// イベント実行ハンドラの作成
final String path = "sample/chart/default_graph";
HTTPActionEventHandler handler = new PresentationPageHTTPActionEventHandler(path);

// 絶対パスでリンクするための定義
handler = new AccessibleLinkHTTPActionEventFilterHandler(handler);

// アクセス制御を行うための定義
handler = new AuthorizationHTTPActionEventFilterHandler(handler, "service://sample/chart/default_graph", "execute");

// ログイン・セキュリティ環境の構築
final String tenantId = "default";
final String userCd = "user";
final String password = "password";
handler = new PasswordSecurityHTTPActionEventFilterHandler(handler, tenantId, userCd, password);

// URL の取得
final String url = "http://localhost:8080/imart/HTTPActionEventListener";
final HTTPActionEventURL result = WebApplicationHTTPActionEventHandler.getURL(handler, url);
return result.getURL();

コラム

認可機能によるアクセス制御を利用する場合は、あらかじめ利用するURIのリソースが設定してください。

注意

バーチャルテナントによる複数テナントの環境で使用する場合は、PasswordSecurityHTTPActionEventFilterHandlerのインスタンス生成時にアクセスするテナントの「tenantId」を指定します。

「tenantId」が指定されていない場合はデフォルトテナントに指定されているテナントにアクセスします。

intra-mart Accel Platform 2013 Winter以前
テナントIDの指定は必要ありません。